下面是我正在倒转的应用程序的代码块。
请原谅我我是新来的逆转世界,但我发现这里发生了一些事情,我想我必须将je
更改为jmp
,但我不确定它是否正确。如何从编译代码更改x86操作码
_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
有人可以解释一下发生了什么吗?
如何使用Interactive Delphi重建器将je
更改为jmp
?
首先,你的反汇编是打破。我不知道这是因为你的反汇编,还是因为你在这里键入而不是复制粘贴。其次,所有的x86指令都在[Intel的手册]中描述(http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)。您可以通过查看手册中的各种说明来了解代码的功能。 – Michael
你为什么要这么做?你建议避免进入消息循环?当然,如果你想把JMP换成JE,就这样做。并且不要读'FMainForm'并且对'nil'进行测试。但是,你为什么要这样做?至于“交互式德尔菲重建器”,那是什么?推测这是一个工具。你读过它的文档吗? –
快速谷歌搜索揭示“交互式Delphi重构”作为某种反编译器。所有这些听起来对我来说都很可疑。 –