所以我刚开始学习WINDBG,从ollydbg升级到64bit。在学习一些奇怪的东西时:在WINDBG上我看到所有的RXX寄存器和操作码在IDA上我仍然看到EXX操作码同时调试相同的EXE(例如notepad.exe) 有谁知道为什么会这样? 例如:
WINDBG:
0:000> u notepad!_security_init_cookie L5
notepad!_security_init_cookie:
00000000`ffaf3380 48895c2418 mov qword ptr [rsp+18h],rbx
00000000`ffaf3385 57 push rdi
00000000`ffaf3386 4883ec20 sub rsp,20h
00000000`ffaf338a 488b05e7cc0000 mov rax,qword ptr [notepad!_security_cookie (00000000ffb00078)]
00000000`ffaf3391 488364243000 and qword ptr [rsp+30h],0
IDA:
___security_init_cookie proc near ; CODE XREF: _WinMainCRTStartupp
.text:01003053 8B FF mov edi, edi
.text:01003055 55 push ebp
.text:01003056 8B EC mov ebp, esp
.text:01003058 83 EC 10 sub esp, 10h
.text:0100305B A1 10 C0 00 01 mov eax, ___security_cookie
或图片: 左边是WINDBG,右边是IDA
答案 0 :(得分:1)
您的安装中包含两个版本的IDA。请确认您使用的是64位版本的IDA(例如,idaq64.exe)。
如果正在反汇编的PE文件是64位,并且正在使用的IDA版本是为64位反汇编设计的版本,那么您确实会看到正确的寄存器。如果没有,那么很可能其中一个条件不正确。
答案 1 :(得分:0)
您已经在IDA中反汇编了32位记事本。
您是否从system32打开了notepad.exe?在这种情况下,IDA获得了32位版本(因为它是32位可执行文件,因此受WoW64 filesystem redirection约束)。
“修复”这个问题的最简单方法是将文件从system32目录复制到其他地方并从那里打开。