我想在 IDA Pro 中使用插件 Bochs 调试程序。我有 IDA Pro 6.4 和 Bochs 2.5.1。
对于我所有的可执行文件,当我启动 Bochs(使用 PE 模式)时,我会执行以下操作:
bochsys:E0001810 bochsys_R3Entry:
bochsys:E0001810 mov eax, [esp+8]
bochsys:E0001814 mov dword_E0002004, eax
bochsys:E0001819 cmp eax, 1
bochsys:E000181C mov eax, [esp+4]
bochsys:E0001820 jnz short **loc_E000182C**
bochsys:E0001822 push 0
bochsys:E0001824 push eax
bochsys:E0001825 call near ptr unk_E0001A50
bochsys:E000182A jmp short loc_E0001890
bochsys:E000182C ; ---------------
bochsys:E000182C
bochsys:E000182C **loc_E000182C:** ; CODE XREF: bochsys:bochsys_R3Entry+10j
bochsys:E000182C mov dword_E00022D8, eax
bochsys:E0001831 mov ecx, [eax+3Ch]
bochsys:E0001834 add ecx, eax
bochsys:E0001836 lea edx, [ecx+0C0h]
bochsys:E000183C mov dword_E0003638, ecx
bochsys:E0001842 mov dword_E00022D4, edx
bochsys:E0001848 mov ecx, [ecx+28h]
bochsys:E000184B add ecx, eax
bochsys:E000184D push 1
bochsys:E000184F mov dword_E0002630, ecx
bochsys:E0001855 mov dword_E00022E0, 0
bochsys:E000185F mov dword_E0002634, eax
bochsys:E0001864 call near ptr unk_E0001770
bochsys:E0001869 push offset aExitprocess ; "ExitProcess"
bochsys:E000186E push offset aKernel32_dll_0 ; "kernel32.dll"
bochsys:E0001873 call near ptr bochsys_BxGetModuleHandleA
bochsys:E0001878 push eax
bochsys:E0001879 call near ptr bochsys_BxGetProcAddress
bochsys:E000187E mov edx, dword_E0002630
bochsys:E0001884 push eax
bochsys:E0001885 push edx
bochsys:E0001886 call **near ptr unk_E0001A50**
bochsys:E000188B jmp short loc_E0001890
在 E0001820 中,程序跳转到函数 loc_E000182C。当程序在 ptr unk_E0001A50 附近执行时,它会停止并显示以下消息:
Debugger: process has exited (exit code 0)
Bochs debugger has been terminated.
它永远不会出现在我的代码中。我尝试了使用 Visual C++ 2010 制作的各种程序。