首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何重构C/C++分解程序中的类型和数据结构?

如何重构C/C++分解程序中的类型和数据结构?
EN

Stack Overflow用户
提问于 2011-04-10 01:35:23
回答 5查看 4.6K关注 0票数 4

我已经做了一个二进制可执行文件拆解使用反汇编程序,如IDA Pro。现在,我计划尽可能多地识别类型和数据结构信息。有什么资源参考或想法可以帮助我完成任务吗?

谢谢!~

编辑

非常感谢下面的提示。除了type and data structure information,关于class object recognition的任何想法

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-10 03:33:45

Eilam已经提到的逆向工程的秘密对程序集中的各种控制流和数据结构有一些很好的描述。但是,由于您特别提到了类,所以我想在VisualC++实现上插入C++。其中许多内容也适用于其他编译器。

顺便说一句,我建议从小函数/类开始,并在二进制文件中识别它们。如果您正在使用VisualC++并使用调试信息(命令行上的debug build或/Zi )编译代码,IDA (至少是最近的版本)将检测并提供加载PDB符号。这将使识别您的代码更容易。

票数 4
EN

Stack Overflow用户

发布于 2011-04-10 01:43:30

这实际上是不可能的;编译后的文件中根本不存在足够的信息。

您需要在运行时手动完成拆卸过程,并尝试自己破译这些数字。

票数 1
EN

Stack Overflow用户

发布于 2011-04-10 01:59:41

根据内存中某些部分的访问指令类型,人们可以猜测和选择一些基本类型,如布尔、整数、浮点数,甚至一些字符串消息(如果是ascii char的话很容易,但现在我们也看到了utf )。

即使您确实选择了一个或另一个来“表示”您认为它在内存中的内容,但是在您的选项和真正的代码之间没有任何关系。

应该有线索的地方是每次调用函数之前的推送指令,因为它们可能是参数。如果您知道原始语言,就会得到一些关于调用约定的信息。

但是,正如梅赫达德所说,没有足够的信息是你可以信任的。

保重,小贝

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5609184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档