在GDB中,我可以通过发出类似call foo("123")
的命令来调用一个函数,该函数是我正在调试的可执行文件的一部分。
如何在OllyDbg(或者可能是其他主要的Windows调试器)中执行相同的操作?
答案 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,您必须构建一个插件来执行此操作。