Сообщение ARMv7, перехват SVC syscall от 24.12.2022 12:22
Изменено 24.12.2022 12:24 wl.
ARMv7, перехват SVC syscall
Подскажите, что можно придумать, чтобы перехватывать syscall в АРМе?
задача в следующем: я хочу загрузить код приложения и линкуемых системных библиотек от PSVita на андроиде, и хочу его выполнить (напрямую процессором, без эмуляции). Подменить экспорт из библиотеки, к примеру, ::open(...) на свою реализацию ещё можно, но вот начальную инициализацию библиотек уже подменить нельзя, и если там встретится syscall, всё плохо.
Как бы обойти эту ситуацию попроще?
Единственное, что мне приходит в голову, проанализировать весь код загружаемой библиотеки программным дизассемблером, найти там эти syscall и заменить на что-то. На крайний случай вручную поменять, чтобы уже пропатченные загружались.
На что можно заменить, так чтобы моя программа смогла перехватить? Breakpoint, invalid instruction, ещё что-то?
если что-то подобное можно провернуть и на x64, тоже интересно, там ровно та же проблема, но для системных библиотек от PS4 — функции инициализации библиотек вызывают syscall
задача в следующем: я хочу загрузить код приложения и линкуемых системных библиотек от PSVita на андроиде, и хочу его выполнить (напрямую процессором, без эмуляции). Подменить экспорт из библиотеки, к примеру, ::open(...) на свою реализацию ещё можно, но вот начальную инициализацию библиотек уже подменить нельзя, и если там встретится syscall, всё плохо.
Как бы обойти эту ситуацию попроще?
Единственное, что мне приходит в голову, проанализировать весь код загружаемой библиотеки программным дизассемблером, найти там эти syscall и заменить на что-то. На крайний случай вручную поменять, чтобы уже пропатченные загружались.
На что можно заменить, так чтобы моя программа смогла перехватить? Breakpoint, invalid instruction, ещё что-то?
если что-то подобное можно провернуть и на x64, тоже интересно, там ровно та же проблема, но для системных библиотек от PS4 — функции инициализации библиотек вызывают syscall
ARMv7, перехват SVC syscall
Подскажите, что можно придумать, чтобы перехватывать syscall в АРМе?
задача в следующем: я хочу загрузить код приложения и линкуемых системных библиотек от PSVita на андроиде, и хочу его выполнить (напрямую процессором, без эмуляции). Подменить экспорт из библиотеки, к примеру, ::open(...) на свою реализацию ещё можно, но вот начальную инициализацию библиотек уже подменить нельзя, и если там встретится syscall, всё плохо.
Как бы обойти эту ситуацию попроще?
Единственное, что мне приходит в голову, проанализировать весь код загружаемой библиотеки программным дизассемблером, найти там эти syscall и заменить на что-то. На крайний случай вручную поменять, чтобы уже пропатченные загружались.
На что можно заменить, так чтобы моя программа смогла перехватить? Breakpoint, invalid instruction, ещё что-то? (да, хостовая программа, загружающая и исполняющая код, на C++, но, думаю, можно что-то и с ассемблером подумать, главное, чтобы это можно было провернуть в usermode)
если что-то подобное можно провернуть и на x64, тоже интересно, там ровно та же проблема, но для системных библиотек от PS4 — функции инициализации библиотек вызывают syscall
задача в следующем: я хочу загрузить код приложения и линкуемых системных библиотек от PSVita на андроиде, и хочу его выполнить (напрямую процессором, без эмуляции). Подменить экспорт из библиотеки, к примеру, ::open(...) на свою реализацию ещё можно, но вот начальную инициализацию библиотек уже подменить нельзя, и если там встретится syscall, всё плохо.
Как бы обойти эту ситуацию попроще?
Единственное, что мне приходит в голову, проанализировать весь код загружаемой библиотеки программным дизассемблером, найти там эти syscall и заменить на что-то. На крайний случай вручную поменять, чтобы уже пропатченные загружались.
На что можно заменить, так чтобы моя программа смогла перехватить? Breakpoint, invalid instruction, ещё что-то? (да, хостовая программа, загружающая и исполняющая код, на C++, но, думаю, можно что-то и с ассемблером подумать, главное, чтобы это можно было провернуть в usermode)
если что-то подобное можно провернуть и на x64, тоже интересно, там ровно та же проблема, но для системных библиотек от PS4 — функции инициализации библиотек вызывают syscall