ARMv7, перехват SVC syscall
От: wl. Россия  
Дата: 24.12.22 12:22
Оценка:
Подскажите, что можно придумать, чтобы перехватывать syscall в АРМе?
задача в следующем: я хочу загрузить код приложения и линкуемых системных библиотек от PSVita на андроиде, и хочу его выполнить (напрямую процессором, без эмуляции). Подменить экспорт из библиотеки, к примеру, ::open(...) на свою реализацию ещё можно, но вот начальную инициализацию библиотек уже подменить нельзя, и если там встретится syscall, всё плохо.

Как бы обойти эту ситуацию попроще?
Единственное, что мне приходит в голову, проанализировать весь код загружаемой библиотеки программным дизассемблером, найти там эти syscall и заменить на что-то. На крайний случай вручную поменять, чтобы уже пропатченные загружались.
На что можно заменить, так чтобы моя программа смогла перехватить? Breakpoint, invalid instruction, ещё что-то? (да, хостовая программа, загружающая и исполняющая код, на C++, но, думаю, можно что-то и с ассемблером подумать, главное, чтобы это можно было провернуть в usermode)

если что-то подобное можно провернуть и на x64, тоже интересно, там ровно та же проблема, но для системных библиотек от PS4 — функции инициализации библиотек вызывают syscall
Отредактировано 24.12.2022 12:24 wl. . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.