问题标签 [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 投票
0 回答
170 浏览

delphi - 如何检测 TSemaphor 控件的颜色变化?

我有一个应用程序 A,它有一个小文本框,由一个框架包围,指示系统是否准备好。文本和框架位于 DelphiTSemaphor控件中。

  1. 在初始化期间,框架是黄色的。
  2. 初始化完成且系统准备就绪后,框变为绿色

在另一个应用程序 B 中,我需要检测应用程序 A 何时已初始化并准备就绪。

如何在应用程序 A 中以尽可能少的努力并在以下约束下执行此操作(检测框架颜色的变化)

  1. 应用程序 A 无法更改(我没有它的源代码),
  2. 应用程序 A 没有自动化接口,
  3. 当应用程序 A 准备就绪时,唯一发生的变化是颜色变化

?

我知道有以下解决此问题的方法:

  1. 使用图像识别 (http://sikuli.org/)
  2. 找出相应位置的像素颜色。
  3. 使用注入的 DLL 来访问 TSemaphore 属性。
0 投票
1 回答
2420 浏览

delphi - 64位dll到64位进程的delphi xe3 dll注入不起作用

我正在使用此代码将我的 64 位 dll 注入到 Windows 7 64 位上的 64 位进程中,CreateRemoteThread 返回 200 但仍然没有注入 dll,我用另一个源测试了我的 dll,它工作正常,进程资源管理器显示我的代码不起作用,这段代码有什么问题,我使用的是delphi XE3,我已经在64位目标平台上编译了代码。

0 投票
1 回答
190 浏览

winforms - P/Invoked ShowCursor 返回 0

我正在编写的应用程序需要向另一个应用程序发送消息以使光标可见。我的绝大多数编程经验都是用 C# 编写的,并且我设法编写了一个 DLL Injector,它允许我使用 CreateRemoteThread 注入托管代码。我正在注入的 DLL 内部是对 ShowCursor 的 P/Invoked 调用。然而,这似乎没有任何效果,并且使用 StreamWriter 检查 ShowCursor 返回的值表明,虽然函数成功并且显示计数器增加,但在其他某个点计数器返回到 0。(应该显示光标无论如何,现在我想起来了。)

我错过了什么重要的信息?Windows 窗体是否有一些功能阻止我像这样更改光标?ShowCursor 是否绑定到它正在运行的线程,所以它在完成后恢复?还是完全不同的东西?

0 投票
2 回答
785 浏览

windows - 如果您使用内核驱动程序来确保您的驱动程序是第一个加载的库,那么从 DllMain 调用 LoadLibrary 是否安全?

我一直在研究一些挂钩代码,它们有选择地将库加载到某些进程中,然后挂钩某些本机 API 函数(使用 Detours)。事件链如下所示:

  • 内核驱动程序将A.dll加载到每个进程中。
  • A.dll ::DllMain()决定是否加载包含实际 Detours 钩子的B.dll ( )。LoadLibraryEx
  • B.dll在挂钩所述功能的过程中运行。

此处的第二个项目符号似乎违反了此处指定的 DllMain 规则,但我正在尝试确定驱动程序加载的方式是否A.dll可以解决限制。具体来说,内核驱动程序用于PsSetLoadImageNotifyRoutine在每个进程启动时获取通知,然后将要调用的 APC 排队LoadLibraryExA.dll这意味着它几乎是进程启动时加载的第一个 DLL。这是否规避了调用 inside 的LoadLibrary问题DllMain

0 投票
1 回答
2103 浏览

c++ - DLL 注入仅在未从 Visual Studio 启动时才有效

我正在尝试使用 CreateRemoteThread 将 DLL 注入现有进程。问题是当应用程序从 Visual Studio 2010 中启动时,它根本不起作用。

DLL 注入的工作原理:

  1. 手动启动时(从资源管理器)

  2. 当手动启动它并在注入前附加 VS 2010 调试器时。

当我选择:在 Visual Studio 2010 中开始调试 (F5) 时,CreateRemoteThread 返回 OK。我什至在注入过程中在 LoadLibraryA 上放置了一个断点,它被命中了。所以线程启动了,但它没有到达 DllMain函数。LoadLibraryA 被执行,但模块不会被加载。

注入代码:

和 DllMain 代码:

感谢帮助!

编辑:

我使用 ollyDbg 在 LoadLibraryA 上放置断点。我已将汇编指令“ret”替换为对 GetLastError 的调用,并且在 EAX 寄存器中得到以下值:126。从 MSDN 系统错误代码 126 表示 ERROR_MOD_NOT_FOUND(找不到指定的模块。)。很奇怪,它只在 Visual Studio 运行注入应用程序时发生。

0 投票
2 回答
2673 浏览

crash - win7上的ring0 APC DLL注入崩溃目标进程

我正在尝试实现 ring0 dll 注入器驱动程序并通过 APC 注入实现。该代码在win XP上完美运行。在win7上,它不断崩溃目标进程。

这是代码:

injectDll 由 DeviceIoControl 服务例程调用。

这是目标进程的崩溃堆栈跟踪。

任何想法?

0 投票
2 回答
1652 浏览

directx - 如何停止对 DirectX 的拦截调用

我读过一篇名为Intercept Calls to DirectX with a Proxy DLL的文章,它使用 DLL Proxy 拦截调用,并且可以获得 DirectX 的覆盖。

我正在编写一些 DirectX 应用程序,不希望其他人通过这种方法更改它。我怎样才能防止这种情况?

我可以通过检查原始 DLL 来做到这一点,以及如何做到这一点?

0 投票
2 回答
4765 浏览

windows-7-x64 - CreateRemoteThread 失败并显示 ERROR_ACCESS_DENIED

我正在尝试学习 dll 注入的基础知识,因此我创建了一个非常简单的 hello-world 类型的 DLL 和一个基于我在网上找到的代码的注入器。我找不到任何开箱即用的东西,所以我不得不做一些调整。

注入代码, DLL代码

我在 64 位窗口上运行这些。我正在使用 Visual Studio 2010 进行编译。注入器是一个 win32 控制台应用程序,dll 也是 win32。我正在尝试将我的代码注入现有的记事本进程(也是 32 位)。所有这些都在 Windows 7 x64 上运行。

当我运行注入器时,它每次都失败CreateRemoteThreadGetLastError返回 5(即ERROR_ACCESS_DENIED)。我已经确认 dll 路径是正确的(尽管将其更改为虚假路径会产生相同的行为),并且我已经确认该路径正在使用Cheat Engine在正确的地址写入记事本的内存。我遇到了困难,因为我不确定如何进一步调试问题。

什么可能导致 CreateRemoteThread 失败?

0 投票
0 回答
429 浏览

c# - 调试注入进程

我在调试 DLL 时遇到问题,该 DLL 通过 VC++ DLL 注入到 WPF 应用程序中。注入工作正常。这是从开始到问题的指南:

  1. 我开始调试 WPF 测试应用程序(.Net 4.0 / x86)。
  2. 启动后ButtonClickEvent启动一个小的 ConsoleApplication,它通过 C++ 函数开始注入 3.出于测试目的,程序在Debugger.Break()调用时停止。到此为止还好。
  3. 当我尝试向前迈进时,它仍在工作,但是当我到达foreach由注入的 DLL 管理的循环或对另一个类的调用时,调试器立即停止工作,并且 WPF 应用程序关闭。

如果我在没有中断点的情况下运行这些代码,则没有错误。我不知道,这是我的错,所以我希望你能给我一些解决方法。

0 投票
1 回答
1307 浏览

c++ - 用于dll注入的Win32 Form

我创建了一个带有表单的 dll,当我们注入 dll 时,表单打开。但是当我这样做时,问题是我注入的过程,卡住了,我无法让他注意到。

这就是我所做的。

和注射:

@雷米勒博: