我正在使用olydbg 1.10,我想加载“user32.dll”动态库。
当我写命令push“user32.dll”时,它不起作用。
在调用kernel32.LoadLibraryA之前,我必须把它推到堆栈中 但命令 push 'user32.dll'
call kernel32.LoadLibraryA
这是我想在olyDbg中插入的代码:
push ebp ;
mov ebp,esp
sub esp,4;
push dword user32dll
call _LoadLibraryA@4
不起作用,为什么,我无法弄清楚。
答案 0 :(得分:1)
您只需将user32.dll字符串写入某个位置,然后推送addresoflocation并调用loadlibrary。 请注意,在user32.dll之后应该有0x00,因此它的NULL终止并且不会被任何东西弄乱:)
答案 1 :(得分:0)
据我所知,你需要在内存中存储一个空格来存储字符串“user32.dll”,以及推送到该字符串的堆栈指针。
答案 2 :(得分:0)
在NASM中,您可以执行以下操作:
global _main
extern LoadLibraryA
section .text
_main:
push user32dll ; push argument to `LoadLibrary` (name of dll) onto stack
call LoadLibraryA ; call LoadLibary, on success handle will be stored in eax
add esp, 4 ; fix the stack
ret ; return
user32dll:
db 'user32', 0 ; name of dll to be loaded by LoadLibary
; notice that you don't need to add the extension (.dll)