我在学习逆向工程,而我被困在这个小东西上。我有这样的代码:如何通过反汇编从C++函数获取“lea”指令?
.text:10003478 mov eax, HWHandle
.text:1000347D lea ecx, [eax+1829B8h] <------
.text:10003483 mov dword_1000FA64, ecx
.text:10003489 lea esi, [eax+166A98h]<------
.text:1000348F lea edx, [eax+11FE320h]
.text:10003495 mov dword_1000FCA0, esi
,我想知道,它是如何看起来像在C或C++?特别是箭头标出的两条指令。 HWHandle
是变量,它保存从GetModuleHandle()
函数返回的值。 更有趣的是,一对夫妇低于这个指导线,dword_1000FCA0
用作功能:
.text:1000353C mov eax, dword_1000FCA0
.text:10003541 mov ecx, [eax+0A0h]
.text:10003547 push offset asc_1000C9E4 ; "\r\n========================\r\n"
.text:1000354C call ecx
这将吸引我的游戏机这个文本。你有什么想法吗,伙计?
我建议你禁用编译器的代码优化,因为它可能会产生一个有时很难理解的机器代码,并且会有大量的简化/重写/重新组织。 – huelbois 2012-03-01 09:50:09
带有禁用优化的OTOH编译器引入了看似不必要的加载和存储到相同的地址,这可能使反汇编难以阅读,因为实际发生的少数相关行之间很少。我更喜欢'-O1'。 – hirschhornsalz 2012-03-01 10:00:44
你在做什么游戏控制台?的Xbox? – 2012-03-01 10:04:36