我已经做了一个二进制可执行文件拆解使用反汇编程序,如IDA Pro。现在,我计划尽可能多地识别类型和数据结构信息。有什么资源参考或想法可以帮助我完成任务吗?
谢谢!~
编辑
非常感谢下面的提示。除了type and data structure information
,关于class object recognition
的任何想法
发布于 2011-04-10 03:33:45
Eilam已经提到的逆向工程的秘密对程序集中的各种控制流和数据结构有一些很好的描述。但是,由于您特别提到了类,所以我想在VisualC++实现上插入C++。其中许多内容也适用于其他编译器。
顺便说一句,我建议从小函数/类开始,并在二进制文件中识别它们。如果您正在使用VisualC++并使用调试信息(命令行上的debug build或/Zi )编译代码,IDA (至少是最近的版本)将检测并提供加载PDB符号。这将使识别您的代码更容易。
发布于 2011-04-10 01:43:30
这实际上是不可能的;编译后的文件中根本不存在足够的信息。
您需要在运行时手动完成拆卸过程,并尝试自己破译这些数字。
发布于 2011-04-10 01:59:41
根据内存中某些部分的访问指令类型,人们可以猜测和选择一些基本类型,如布尔、整数、浮点数,甚至一些字符串消息(如果是ascii char的话很容易,但现在我们也看到了utf )。
即使您确实选择了一个或另一个来“表示”您认为它在内存中的内容,但是在您的选项和真正的代码之间没有任何关系。
应该有线索的地方是每次调用函数之前的推送指令,因为它们可能是参数。如果您知道原始语言,就会得到一些关于调用约定的信息。
但是,正如梅赫达德所说,没有足够的信息是你可以信任的。
保重,小贝
https://stackoverflow.com/questions/5609184
复制相似问题