Лучший способ ввести код, используя dylib_inject по определенному адресу, а не по имени метода / селектора?

Я успешно внедрил пользовательский dylib в целевой двоичный файл, используя inject_dylib, отсюда:

https://github.com/Tyilo/inject_dylib

Я сделал это, создав объект Dylib в Xcode с именем DylibOverrides с помощью метода +(void) класса загрузки. Этот код вызывается рано во время выполнения. Он обменивает реализацию метода -[ControllerMethod Selector:] в моем целевом двоичном файле с помощью реализации -[DylibOverrides patchedSelector:].

Это прекрасно работает, если у вас есть имена методов и селекторов, которые видны при разборке в Hopper для целевого двоичного файла. Однако я не уверен, как к этому подойти, если в целевом двоичном файле были удалены символы, и я не могу увидеть имена методов (в разборке бункера я вижу такие имена, как: sub_10000233C). Конечно, я могу войти в lldb по адресу с 'b 0x0123456'. Но как я могу использовать код, основанный на адресе, это вообще возможно?

Я попытался добавить: (void)instrumentObjcMessageSends(YES); в мой код, и это записывает некоторые вещи в папку TMP /, но нет никаких адресов в списке.

Я хотел бы заменить некоторый код по определенному адресу своим собственным или добавить несколько операторов NSLog.

Я исследовал через Google и здесь, но не смог найти никаких советов, которые помогли бы мне достичь этого.

Заранее спасибо за любые указатели...

0 ответов

Другие вопросы по тегам