提取Objective-c二进制文件

提取Objective-c二进制文件,objective-c,ios,binary,extract,Objective C,Ios,Binary,Extract,有没有可能提取一个二进制文件,从而得到二进制文件后面的代码?通过类转储,您可以看到实现地址,但也可以看到实现地址中的代码吗?有什么办法吗?你可以反编译(更准确地说,反汇编)一个二进制文件并得到它的汇编,但是没有办法得到原始的Objective-C 我好奇地问你为什么要这么做 所有代码都编译成单个指令,放在可执行文件的文本部分。编译器负责将高级语言转换为处理器特定的指令,这些指令更简单。恢复此过程几乎是不可能的,除非代码非常简单。有些问题是语句的模糊性和整体可读性:例如,局部变量只不过是偏移地址

有没有可能提取一个二进制文件,从而得到二进制文件后面的代码?通过类转储,您可以看到实现地址,但也可以看到实现地址中的代码吗?有什么办法吗?

你可以反编译(更准确地说,反汇编)一个二进制文件并得到它的汇编,但是没有办法得到原始的Objective-C


我好奇地问你为什么要这么做

所有代码都编译成单个指令,放在可执行文件的文本部分。编译器负责将高级语言转换为处理器特定的指令,这些指令更简单。恢复此过程几乎是不可能的,除非代码非常简单。有些问题是语句的模糊性和整体可读性:例如,局部变量只不过是偏移地址

如果要读取反汇编代码(编译更高级别代码的指令),请在可执行文件中使用此命令:

otool-tV
文件

otx是表示基于otool的拆卸的一个很好的工具 它将处理x86_64和i386的反汇编

Mach-O-Scope是一个构建在otx之上的工具,用于将所有内容转储到sqlite3数据库中进行浏览和注释


它不会给你原始的来源——但它会让你非常接近,为你提供通过各种方法发送的消息。

使用otool-tV进行反汇编。一定要练习你的汇编。我想从代码中学习。你可能会认为我想复制代码,但那不是我的本意,我想看看其他人是如何做那些我想了很久却还没有弄明白怎么做的事情。@Maxner:一般来说,只看开源项目,询问你想知道的事情,而不是反汇编封闭源码程序,这将是一个更好的主意。反汇编代码通常对初学者不太友好。因此,当我反汇编二进制代码时,Terminal会给我数千行这样的代码:00002134 e58d1024 str r1,[sp,#36]我能用它做什么?我怎样才能得到它的任何信息?@Maxner这是给处理器的存储指令。如果你真的想了解这些,请阅读一些关于计算机体系结构的文章。正如Chuck所说,这可能不是最好的途径。PS:是otool给了你上千行代码,而不是Terminal.app:-)Terminal.app只是给你看了。@Maxner:查看这些参考资料开始:。