【发布时间】:2020-03-28 16:44:39
【问题描述】:
我正在尝试制作一个类似于dyld_decache 和dsc_extractor 的dyld 提取器。但我无法解析 __objc_selrefs 部分。
出于测试目的,我使用了 libsystem_trace.dylib,并且能够找到并解析它的 mach_header 及其段和节。但是查看 __DATA.__objc_selrefs 部分,我发现像 0x201b8647fc8 和 0x201b860d716 这样的指针太高了,并且指向了缓存之外。
相比之下,在普通的 Macho 文件中,__objc_selrefs 部分中的指针指向它们在 __TEXT.__objc_methname 部分中的对应字符串。
我知道 dyld 会滑动和变基部分,但经过大量修改后,我仍然无法修复指针。任何指导都会令人惊叹,尤其是考虑到那里的资源很少。
【问题讨论】:
标签: objective-c reverse-engineering extraction dyld mach-o