在分析从Swift编译的二进制文件时,是否可以找出没有符号的函数的Swift方法名称?

时间:2016-09-13 01:59:34

标签: objective-c swift reverse-engineering disassembly

我是新手拆解和逆向工程二进制文件,所以请原谅我,如果这个问题没有意义或不可能。

过去当我尝试逆向工程macOS二进制文件时,分析用Objective-C编写的文件会产生很多有用的信息,因为通常所有的Objective-C类及其方法名都很容易检索,使得弄清楚任何特定方法的作用要容易得多。

我试图分析用Swift编写的二进制文件(技术上是Swift和Objective-C的组合),现在大多数函数都没有符号。我可以像往常一样检索一些Objective-C方法,以及一些具有Swift风格的错位名称的函数,但几乎所有其他函数都没有符号。我知道很多都必须是Swift方法。

无论如何都要弄清楚这个二进制文件的Swift类是什么以及它们与Objective-C一样的相关方法?

使用像Hopper Disassembler这样的工具会显示一些Swift类的名称(通常是像_TtC4Something25SomethingElse这样的符号),我可以得到它的实例变量名称及其偏移量的列表,但没有方法名称。

注意:有问题的二进制文件是x64 macOS二进制文件,而不是iOS二进制文件。

1 个答案:

答案 0 :(得分:2)

通常,逆向工程是从汇编中提取有意义的构造和描述的过程。到目前为止你所做的通常只是“正常”反向工程任务的第一部分。 这有时可能是一个繁琐的过程,它涉及映射结构并直接从汇编代码中理解函数的含义。

are pleanty of反向工程教程和其他来源,并且需要对相关汇编语言有一个很好的理解。 我真的推荐this本书(它是合法的在线版,原作版本是chm由作者发布),这在单个SO问题中不容易涵盖。

您可能还希望在reverse engineeing SE测试版中获得更具体的帮助。

我希望我指出你正确的方向。