如何在 EXE 程序的 .rdata 部分添加更多的第 3 个 DLL 函数引用?
How can I add more 3th DLL function references in .rdata section of EXE program?
我正在努力扩展旧的 WinAPI 程序(我没有源代码 - 只有 EXE),可以在标准输出上编写调试消息。该程序已经使用了 kernel32.dll 库,并且在 .rdata 部分我看到了很多对第三部分 DLL 中不同函数的引用。为此,我需要位于 kernel32.dll 中的 WriteConsole
函数。我使用了最简单的策略,只是在调试器断点时将 WriteConsole
的内存地址复制到 kernel32.dll 中。程序重新启动后,令我失望的是地址不再指向 kernel32.dll WriteConsole
。相反,它指向另一个随机 DLL。
我想知道为该外部函数正确设置地址的推荐和最简单的选项是什么?
我知道 x32dgb 有一个带有符号的部分 - 我可以使用一些 x32dbg 功能从现有的 DLL 添加其他函数指针吗?
谢谢 :-)
我将展示如何向 IAT 添加 WriteConsoleA
条目。这是WriteConsole
的ANSI版本,需要输出UNICODE字符串时,使用WriteConsoleW
。从您的屏幕截图中我看到当前您的二进制文件使用 kernel32.dll
函数的 ANSI 版本,例如 GetStartupInfoA
.
下载 PETools。 运行 它,select Tools->Pe Editor
和 select 你的二进制文件。出现一个对话框。单击Directories
按钮,出现一个新的对话框。单击 ...
按钮导入目录。导入目录 window 打开。右键单击上方列表中的一个 dll,select Add Imports...
。
在API名称编辑中输入KERNEL32.dll
作为dll名称,WriteConsoleA
,点击+
按钮。单击确定。关闭所有 windows 并保存更改
单击关闭、保存和确定按钮。您的二进制文件将在 IAT 中为 WriteConsoleA
函数添加一个新条目。
我正在努力扩展旧的 WinAPI 程序(我没有源代码 - 只有 EXE),可以在标准输出上编写调试消息。该程序已经使用了 kernel32.dll 库,并且在 .rdata 部分我看到了很多对第三部分 DLL 中不同函数的引用。为此,我需要位于 kernel32.dll 中的 WriteConsole
函数。我使用了最简单的策略,只是在调试器断点时将 WriteConsole
的内存地址复制到 kernel32.dll 中。程序重新启动后,令我失望的是地址不再指向 kernel32.dll WriteConsole
。相反,它指向另一个随机 DLL。
我想知道为该外部函数正确设置地址的推荐和最简单的选项是什么?
我知道 x32dgb 有一个带有符号的部分 - 我可以使用一些 x32dbg 功能从现有的 DLL 添加其他函数指针吗?
谢谢 :-)
我将展示如何向 IAT 添加 WriteConsoleA
条目。这是WriteConsole
的ANSI版本,需要输出UNICODE字符串时,使用WriteConsoleW
。从您的屏幕截图中我看到当前您的二进制文件使用 kernel32.dll
函数的 ANSI 版本,例如 GetStartupInfoA
.
下载 PETools。 运行 它,select Tools->Pe Editor
和 select 你的二进制文件。出现一个对话框。单击Directories
按钮,出现一个新的对话框。单击 ...
按钮导入目录。导入目录 window 打开。右键单击上方列表中的一个 dll,select Add Imports...
。
在API名称编辑中输入KERNEL32.dll
作为dll名称,WriteConsoleA
,点击+
按钮。单击确定。关闭所有 windows 并保存更改
单击关闭、保存和确定按钮。您的二进制文件将在 IAT 中为 WriteConsoleA
函数添加一个新条目。