【发布时间】:2015-11-12 11:08:44
【问题描述】:
下面是我正在反转的应用程序的代码块。
请原谅我是新手,但我发现这里发生了一些事情,我想我必须将je 更改为jmp,但我不确定它是否正确。
_unit34::TApplication.Run
Push ebp
ebp,esp
ecx
Push ebx
Push esi
Push edi
Mov dword ptr [ebp-4],eax
Mov. Eax,dword ptr [ebp-4]
Mov byte ptr [eax+0AD],1
XOR edx,edx
Push ebp
Push. 4E2B09
Push dword ptr fs:[edx]
Mov dword ptr fs:[edx],esp
Mov Eax,4D6574; DoneApplication
Call AddExitProc
Mov eax, dword ptr [ebp-4]
Mov eax, dword ptr [ebp+44]
Test eax,eax
Je 004E2AF1
有人能解释一下那里发生了什么吗?
以及如何使用交互式 Delphi 重构器将 je 更改为 jmp?
【问题讨论】:
-
首先,你的反汇编坏了。我不知道这是因为你的反汇编程序,还是因为你在这里输入了它而不是复制粘贴。其次,所有 x86 指令都在Intel's manuals 中进行了描述。您可以通过查看手册中的各种说明来了解代码的作用。
-
您为什么要这样做?您建议避免进入消息循环?当然,如果你想把 JMP 改成 JE,那么就这么做吧。并且不要费心阅读
FMainForm并针对nil进行测试。但你为什么要这样做?至于“交互式德尔福重构器”,那是什么?估计是个工具。你读过它的文档吗? -
快速谷歌搜索显示“交互式 Delphi Reconstructor”是某种反编译器。在我看来,这一切听起来都很可疑。
-
ISTM 认为
TApplication.Run的代码(在本例中为 FMX 版本)不能太保密,实际上不需要逆向工具。
标签: delphi x86 reverse-engineering