运行我自己的 DLL 代码的最快方法是什么?

逆向工程 ollydbg dll dll注入
2021-06-14 23:46:09

不确定标题是否有说服力,但我想要做的是侵入一个可执行文件,并尽可能少地从运行的 DLL 中获取代码,因为我想编写尽可能少的汇编代码行。

我已经有了想要跳进去的地方,我已经准备好使用 ollydbg 将必要的汇编指令插入到可执行文件中,但是因为我以前从未这样做过,所以我担心在最后的步骤上我需要一些帮助。

我想做的基本上是:

  1. 强制可执行文件加载我的 DLL
  2. 将一些参数压入堆栈 init_my_dll()
  3. 称呼 init_dll()

但我不确定实现这一目标的最佳方法是什么。有没有直接的方法来完成这项工作?

顺便说一句:我在这里所做的实际上称为“dll 注入”吗?

1个回答

我最终将所需的代码放在可执行文件中:

00C0B500   68 B6B4C000      PUSH ForgedAl.00C0B4B6                    ; ASCII "lua-extension.dll"
00C0B505   FF15 88F4C000    CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar> ; kernel32.LoadLibraryA

00C0B50B   68 C9B4C000      PUSH ForgedAl.00C0B4C9                    ; ASCII "initialize"
00C0B510   50               PUSH EAX                                  ; push dll handle
00C0B511   FF15 8CF4C000    CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd> ; kernel32.GetProcAddress

00C0B517   56               PUSH ESI                                  ; holds pointer to the struct I want to steal -> parameter of "initialize"
00C0B518   FFD0             CALL EAX                                  ; call "initialize"
00C0B51A   5E               POP ESI

00C0B51B  ^E9 6648D0FF      JMP ForgedAl.0090FD86                     ; jump back and continue original program flow