asm:调用 DLL

Posted

技术标签:

【中文标题】asm:调用 DLL【英文标题】:asm: Call a DLL 【发布时间】:2011-09-13 13:23:24 【问题描述】:

我反汇编了一个游戏的 DLL,并想插入一些代码。 我需要 asm 代码来调用当前目录中的另一个 DLL(我在 Windows 上)。 背景是,我希望能够在我的 DLL 中执行自定义代码, 但我无法加载 DLL。所以我的想法是通过修改后的游戏DLL来加载DLL。

游戏中可能有一个函数可以告诉我 DLL 所在的当前目录路径,但我想我不会找到它。

【问题讨论】:

什么游戏?你到底想完成什么? 【参考方案1】:

您要查找的调用是 LoadLibrary,它将在 selection of places including the current directory 中搜索 DLL,然后加载它,然后是 GetProcAddress。

如果 DLL 进行任何其他 Win32 调用,它可能已经链接到 kernel32.dll,这就是您需要做的所有事情。

在编写代码所需的时间方面,修改 DLL 或使用 DLL injection 是否更快是有争议的,因为无论如何你都必须进行逆向工程,但是,纯 DLL 注入的一个优点是所有现有代码在安装方面保持未修改,如果用户希望“取消修补”您正在做的任何事情,这些修改更容易撤消。

【讨论】:

【参考方案2】:

Microsoft Detours 带有 setdll.exewithdll.exe,这些实用程序可以让您使用自定义 dll 文件启动 exe。

【讨论】:

以上是关于asm:调用 DLL的主要内容,如果未能解决你的问题,请参考以下文章

伪造 ASM 返回地址?

C++ 函数挂钩

DLL调试方法

Asm hook隐私方法调用

Asm hook隐私方法调用

__asm__ gcc 调用内存地址