Лучший способ ввести код, используя 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 и здесь, но не смог найти никаких советов, которые помогли бы мне достичь этого.
Заранее спасибо за любые указатели...