我需要任何方法来反编译用 MFC 编写的 exe 文件,我尝试了 IDA Pro,但是它将文件转换为程序集并没有那么好,因为它有很多问号字符。如果直接将文件转换为代码是不可能的,有没有办法将程序集转换为 C++?:(
谢谢
我需要任何方法来反编译用 MFC 编写的 exe 文件,我尝试了 IDA Pro,但是它将文件转换为程序集并没有那么好,因为它有很多问号字符。如果直接将文件转换为代码是不可能的,有没有办法将程序集转换为 C++?:(
谢谢
不会。编译过程会破坏所有元数据,包括变量名,而优化过程使得即使是原始源的伪代码副本也难以恢复。
这是一个高度简化的示例。假设您编写“foo++”,其中 foo 是一个 int。根据编译器的不同,这可以编译为以下任何一种:
inc dword ptr [esp+12h]
- foo 在堆栈中作为本地保存inc dword ptr [00000f00h]
- foo 是一个堆变量add dword ptr [00000f00h], 1
- 另一种增加方式mov eax, dword ptr [esp+12h]; inc eax
- 从堆栈移入 eax,然后递增可能性几乎是无穷无尽的。
最好的办法是研究 Hex-Rays Decompiler 之类的东西,尽管它并不便宜。它与 IDA 一起生成伪 C 代码,您可以使用它来发现特定函数和例程的工作方式。