在Ollydbg(或其他Windows调试器)中等效GDB的“调用”

时间:2012-11-07 12:49:00

标签: windows debugging windbg ollydbg

在GDB中,我可以通过发出类似call foo("123")的命令来调用一个函数,该函数是我正在调试的可执行文件的一部分。

如何在OllyDbg(或者可能是其他主要的Windows调试器)中执行相同的操作?

2 个答案:

答案 0 :(得分:5)

我不知道如何使用OllyDbg,但是因为你提到其他Windows调试器,你可以在WinDbg中使用.call命令。

0:001> .call ABC!DoSomething(1,2)
Thread is set up for call, 'g' will execute.
WARNING: This can have serious side-effects,
including deadlocks and corruption of the debuggee.
0:001> r
eax=7ffde000 ebx=00000001 ecx=00000001 edx=00000003 esi=00000004 edi=00000005
eip=10250132 esp=00a7ffbc ebp=00a7fff4 iopl=0         nv up ei pl zr na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000246
ABC!DoSomething:
10250132 55               push    ebp
0:001> dd esp
00a7ffbc  00a7ffc8 00000001 00000002 ccfdebcc

最佳解释来自The Old New Thing

答案 1 :(得分:0)

在默认安装中,Ollydbg只能对具有导出的DLL执行此操作:

  • 调试>调用DLL导出

对于没有导出的可执行文件和DLL,您必须构建一个插件来执行此操作。