1

私は初めて ASM を使用しています。続行する前に、これを書いたときにすべてを正しく理解したかどうかを知る必要があります。現在のコードは次のようになります。

push 0xDEADBEEF      ; address of library name
mov eax, 0xDEADBEEF  ; address of LoadLibraryA

call eax        ; call LoadLibraryA

mov esi, eax    ; store returned address

push 0xDEADBEEF      ; address of function name
push esi        
mov eax, 0xDEADBEEF   ; address of GetProcAddress

call eax             ; call GetProcAddress
mov esi, eax         ; store returned address

push 0
push 0
push 0
call esi  ; call the function returned by GetProcAddress

0xDEADBEEF はダミーのアドレスで、後でパッチを適用します。何か間違っていることでも?=)

4

1 に答える 1

0

GetProcAddress通常、直接電話することはありません。これは、DLLからエクスポートされるためです。この場合、リンカが行うことは、シンボルGetProcAddressへの間接的なfar呼び出しを行う関数を合成することです。http://blogs.msdn.com/b/oldnewthing/archive/2006/07/24/676669.aspxおよびhttp://blogs.msdn.com/b/oldnewthing/archive/2010/03/18/9980802__imp__GetProcAddressを参照してください.aspx

于 2011-07-06T23:10:36.063 に答える