X64 反汇编程序 IDA 和 WINDBG。 IDA 不显示 x64 操作码
Posted
技术标签:
【中文标题】X64 反汇编程序 IDA 和 WINDBG。 IDA 不显示 x64 操作码【英文标题】:X64 Disassemblers IDA and WINDBG. IDA doesnt show x64 opcodes 【发布时间】:2015-02-14 22:58:18 【问题描述】:所以我刚开始学习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
国际开发协会:
___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
【问题讨论】:
虽然我可以在反汇编中发现一些相似之处,但机器码字节完全不同。你确定你在 WinDbg 和 IDA 中看到的是同样的东西吗? 【参考方案1】:您的安装中包含两个版本的 IDA。请确认您使用的是 64 位版本的 IDA(例如 idaq64.exe)。
如果被反汇编的 PE 文件是 64 位的,并且所使用的 IDA 版本是为 64 位反汇编而设计的,那么您确实会看到正确的寄存器。如果不是,那么很可能这些条件之一不成立。
【讨论】:
我检查了两次和三次.. 我 100% 确定我在 windbg 和 IDA 上运行相同的 EXE 我也使用 x64bit ida 版本(我还在帮助菜单选项卡下检查以防万一) 【参考方案2】:您已经在 IDA 中反汇编了 32 位记事本。
你是从system32打开notepad.exe吗?在这种情况下,IDA 获得了 32 位版本(因为它是 32 位可执行文件,因此受WoW64 filesystem redirection 约束)。
“修复”此问题的最简单方法是将文件从 system32 目录复制到其他位置并从那里打开。
【讨论】:
为什么会发生这种情况? (这是正确的)为什么它不影响windbg? 因为 IDA 是 32 位应用程序。以上是关于X64 反汇编程序 IDA 和 WINDBG。 IDA 不显示 x64 操作码的主要内容,如果未能解决你的问题,请参考以下文章