如何在olydbg中编写汇编命令,加载" user32.dll"?

时间:2011-11-29 18:01:35

标签: windows assembly 32-bit

我正在使用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

不起作用,为什么,我无法弄清楚。

3 个答案:

答案 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)