我正在 IDA Pro 中调试 shellcode
IDA Pro version: 6.1.011 (32-bit)
Bochs version: 2.6.2
我从文本文件加载 shellcode,代码在 IDA Pro 反汇编中正确显示。现在,我想调试它。
我正在使用与 IDA Pro 安装在同一台机器上的 Bochs 调试器。
我从文本文件中加载 shellcode 作为二进制文件,加载段设置为:0x00000000,加载偏移量设置为:0x00000000
seg000:00000000 db 0FFh
seg000:00000001 db 0FEh ; ¦
seg000:00000002 db 55h ; U
seg000:00000003 db 0EBh ; d
seg000:00000004 db 6Eh ; n
seg000:00000005 db 33h ; 3
seg000:00000006 db 0C0h ; +
seg000:00000007 db 64h ; d
实际代码从偏移量 0x02 开始,所以我按 C 并显示正确的反汇编
seg000:00000000 db 0FFh
seg000:00000001 db 0FEh ; ¦
seg000:00000002 ; ---------------------------------------------------------------------------
seg000:00000002 push ebp
seg000:00000003 jmp short loc_73
seg000:00000005
seg000:00000005 ; =============== S U B R O U T I N E =======================================
seg000:00000005
seg000:00000005
seg000:00000005 sub_5 proc near ; CODE XREF: sub_AE+6p
seg000:00000005 xor eax, eax
现在,我选择“Local Bochs Debugger”,选择从偏移量 0x2 开始的代码,然后按 F9。
它给出了错误: "**Failed to map a database segment to virtual address, 00000000. This usually happens if the debugged program has segments that overlap with BOCHS loader segments**".
所以,我从文本文件重新加载 shellcode,这次将加载段设置为:0x00400000 并将加载偏移设置为:0x00000000
现在,当我重复上述步骤时,它会尝试启动 Bochs 调试器(我只是得到一个忙碌图标,所以我猜它正在尝试启动 Bochs 调试器),几秒钟后,给了我警告:
"Failed to run bochs with: C:\Program Files (x86)\Bochs-2.6.2\bochsdbg.exe" -f "C:\shellcodes\shellcode.bochsrc" -q
Please make sure that BOCHS is configured properly:
1. You are using bochsdbg.exe executable
2. You are using a supported version of BOCHS."