在GDB中,我可以調用一個函數,該函數是我正在通過發出諸如call foo("123")
之類的命令進行調試的可執行程序的一部分。在Ollydbg(或其他Windows調試器)中GDB的「調用」等效
如何在OllyDbg(或其他主要的Windows調試器)中執行相同的操作?
在GDB中,我可以調用一個函數,該函數是我正在通過發出諸如call foo("123")
之類的命令進行調試的可執行程序的一部分。在Ollydbg(或其他Windows調試器)中GDB的「調用」等效
如何在OllyDbg(或其他主要的Windows調試器)中執行相同的操作?
我不知道如何使用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。
對於可執行文件和DLL不出口,你就必須建立一個:
在默認安裝,Ollydbg的只能爲具有出口的DLL做到這一點插件來做到這一點。
ollydbg本身不支持這個,你可能會用插件完成它 – Necrolis