将 Mach-O VM 地址转换为文件偏移量

逆向工程 拆卸 ios 修补
2021-07-09 04:05:59

这可能完全没有道理,但我真的很陌生,我真的很感激一些帮助!

基本上我正在尝试修补(又名 nop)iOS 应用程序中的 obj-c 函数。我已经成功解密了它,我可以用 otool 反汇编它。不用说,原始应用程序已被剥离,因此在反汇编中没有结构。

然后我听说class-dump-z哪个是类转储的修改版本,能够为您提供给定函数实现的 VM 地址。

的输出class-dump-z -A

#import <XXUnknownSuperclass.h> // Unknown library
#import "SomeHeader.h"

@class NSString;

__attribute__((visibility("hidden")))
@interface CensoredClassName : XXUnknownSuperclass <SomeDelegate> {
}
@property(readonly, copy) NSString* debugDescription;
@property(readonly, copy) NSString* description;
@property(readonly, assign) Class superclass;
@property(readonly, assign) unsigned hash;
-(void)showJailbreakAlert;  // 0x1498d <--Patch this Method
@end

我的问题:如何将给定的实现 VM 地址转换为我可以修补的二进制文件偏移量?或者更好的是如何在文本反汇编中找到方法?简单地在用otool -tV命令生成的反汇编中搜索偏移量不会返回任何结果。

非常感谢您提前

马耳他

PS 链接到 Class-Dump-Z Google 代码页:这里

1个回答

您需要找到LC_SEGMENT覆盖地址的段 ( ) 加载命令,然后执行以下操作:

fle_off = (address-seg.address)+ seg.offset