问题标签 [dll-injection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1467 浏览

process - 挂接到windows进程

我需要在应用程序启动之后和退出之前执行一些操作(某种使用 UMDH 的自动内存泄漏检测)。

我已经准备好 DLL,它被注入到所有进程中,并且在 DLL_PROCESS_ATTACH 上我正在执行我的第一个操作(就在应用程序启动之后)——所以我的这部分问题得到了解决。

问题在于第二部分 - 在进程即将退出时执行操作。

我已经在 DLL_PROCESS_DETACH 中尝试过,但这为时已晚,我需要早点挂钩。

使用 Windows Hooks 机制,我已经迷上了 WH_GETMESSAGE:

和 GetMsgProc() 函数:

但是使用这种方法,我只检测到 WM_CLOSE 消息(当我将使用“X”按钮关闭应用程序时)。我不知道为什么我没有检测到 WM_QUIT 消息,从来没有。

任何想法,当应用程序即将退出时如何执行一些操作?

(我知道 Detours,但不能在我的项目中使用它们......)

0 投票
1 回答
4026 浏览

winapi - 完成后如何从 DLL 中从目标进程中卸载注入的 DLL?

我有一个使用 CreateRemoteThread/LoadLibrary 方法注入自身的 DLL。

在调试和开发DLL时退出目标应用程序并重新启动它很麻烦(它的加载时间为10-20秒),所以我想在检查我的代码是否有效后卸载DLL,重新编译/重新注入它。

我想避免使用用于加载和卸载所述 DLL 的框架创建新的 DLL。

这怎么可能?

0 投票
1 回答
171 浏览

c# - Hook与主程序通信

有很多文章介绍了如何编写挂钩以将某些特定功能添加到其他程序或更改程序行为。但我不明白我应该怎么做才能将数据从钩子发送到我的程序。

我的英语不太好,所以我写了一个小例子:有我的应用程序(myApp)而不是我的应用程序(notMyApp)。我想从 notMyApp 的聊天窗口访问 myApp 文本。例如,我可以使用MHOOK为 notMyApp 编写钩子。问题是 tom 如何将聊天文本从 hook 发送到 myApp?

我应该使用管道还是其他东西?

PS我更喜欢使用C#

0 投票
2 回答
1240 浏览

c++ - Dll 注入 - 在另一个进程中编写本机代码

好的,所以我对C++ Dll Injection的第 3 步有疑问,即:

使用 CreateRemoteThread()。您可以将其LoadLibrary()作为入口点,将步骤 1 和 2 中的文件路径作为参数。老实说,这有点 hacky,但是如果您要注入 DLL,那么您已经很 hacky。另一种技术是使用步骤 1 和 2 将一些机器代码加载到远程进程中并指向它

所以我的问题是:在我使用 分配内存VirtualAllocEx并使用 编写代码之后WriteProcessMemory,我该如何调用CreateRemoteThread——我的意思是第四个和第五个参数是什么?

我的代码:

0 投票
1 回答
1011 浏览

winapi - DLL 注入:调用 dll 中的函数

首先,代码的某些部分来自注入的 DLL 中的调用函数,但在某些地方它不起作用。

我有一个关于 DLL 注入的问题:在我将库加载到另一个进程之后:

我想从该空间内调用一个函数:

从 IDA 返回当前GetPayloadExportAddr位置(我猜那是我的函数开始的空间)。

所以问题出在InitPayload函数上,当我尝试创建新线程时,它没有这样做,我不知道为什么。

我的dll如下:

问题是,如果我将 Start 方法放在 DLL_PROCESS_ATTACH 上,它就可以工作,否则就不行。

0 投票
2 回答
1006 浏览

c++ - 有关保护 DLL 代码的任何提示?

我想知道一些提示如何保护 DLL(Win32,动态)文件免受注入以及如何提高编译代码的安全性。

  1. DDL 源代码中有一个 SQL 密码,用于连接 MySQL。离开它是否足够安全?
  2. 有什么办法可以防止“用户”修改 HEX 代码?我的意思是从源代码中获得更多保护。
  3. 项目属性中的哪些选项最适合优化和保护 DLL?

我正在使用 MVSC++ 2010 Express,并且用户的源代码将不可用。

0 投票
1 回答
820 浏览

c++ - DLL 注入:DrawText 和 TextOut 不返回所有文本

我成功地将我的 DLL 注入到程序中。但是我想从 ListBox 中获取信息。WM_GETTEXT 不起作用,所以我不得不进行 dll 注入。我收到大量文本,但从所需的控制中我什么也没有。

这是我的代码:

我的问题是:有什么我想念的吗?我的意思是还有其他方法可以从应用程序中获取文本吗?因为当我做我的研究时,这应该给我程序中的所有文本。

非常感谢您的帮助!

0 投票
2 回答
2400 浏览

delphi - 从外部应用程序将数据写入 Delphi TStringGrid

我有一个用 Delphi 编写的遗留应用程序,需要建立一个机制

  1. 阅读和
  2. 写作

来自/到 TStringGrid 的数据。

我没有应用程序的源代码,没有自动化接口,供应商不太可能提供。

因此我创建了

  1. 一个 C++ DLL,它注入
  2. 一个 Delphi DLL(由我编写)到
  3. 遗留应用程序的地址空间。

DLL 2 可以访问遗留应用程序内的 TStringGrid 实例,读取单元格值并将它们写入调试日志。

阅读效果很好。但是,当我尝试使用类似的调用将数据写入网格单元格时

发生访问冲突。

这是代码:

如何在不出现访问冲突问题的情况下将数据写入 TStringGrid?

0 投票
1 回答
533 浏览

debugging - 给定进程名称(而不是给出所有进程的 PID 的 netstat)查找进程的进程 ID(仅)

我需要执行以下操作:

  1. 启动火狐
  2. 加载包含一些插件内容的页面
  3. 查找插件进程的processID
  4. 使用 processID 将 cdb 附加到插件进程
  5. 检测插件加载的 DLL

为了使用批处理脚本自动执行此操作,我需要一种方法来查找给定进程名称的 processID。有没有办法做到这一点?

0 投票
2 回答
2730 浏览

c# - 如何在 C# 中处理动态加载的托管库

我用 C# 编写了一个应用程序,并为它添加了一种 API。使用此 API,您可以将插件编写为 dll,它是一些接口规则的基础。

我想让通过 OpenFileDialog 打开 dll 文件并使用其内容成为可能。我的 API 是一个托管库,所以我只是添加了一个引用,但我想在不知道 dll 文件名称的情况下使用 dll。此外,命名空间是另一个每个库。

如何加载 dll 并在其中运行代码?