问题标签 [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.
c# - 使用非托管 C++ .dll 从 C# .exe 调用函数
所以,我有一个用 C# 制作的可执行文件,我没有它的源代码,但我用 IDA 反汇编了它,它给了我很多面向对象的程序集。
我制作了一个 .exe 文件,将 .dll 注入到另一个 .exe 中,并将这个新的 C++ DLL 注入到 C# .exe 中,没有问题,调用了 DLLMain 等等...
但是当我将这个 DLL 注入到一个用 C++ 制作的普通 .exe 文件中时,我可以调用 .exe 中的一个函数及其内存地址,我可以在 IDA 上使用它。
问题是,面向对象的程序集在其函数中没有地址,即使函数名被反汇编。
那么,有什么方法可以用我在 C# .exe 文件上注入的 DLL 调用这个函数?
如果可能的话,有没有办法可以使用在 C# .exe 文件中声明的命名空间及其所有函数和变量,甚至是私有的?
示例反汇编代码:
windows - 在 Windows 7 上可靠地监控/跟踪/记录用户文件访问
我需要跟踪用户访问(创建、打开、读取)的所有文件,并记录这些操作以在单独的应用程序中进行进一步处理。我已经调查并寻找了实现这一目标的可能方法(尽可能简单),并提出了以下解决方案:
挂钩 kernel32.dll 并拦截所有文件特定函数,如 CreateFileA、OpenFile 等。我想修改 IAT 并提供包装器功能。我仍然会将调用转发给原始函数,但会向我的应用程序报告何时访问了哪些文件。这听起来很容易实现,但我怀疑它能否在 Windows 7 上完美运行,因为在我看来,新的安全限制会通过修改导入地址表来阻止成功挂钩。也许有人知道得更好:)
编写文件系统微过滤器并使回调函数报告有关文件访问的情况。因为我之前没有写过微过滤器,所以我不知道这是否可行。我相信微过滤器的开发需要更多的努力。也许有人可以指出一些资源,例如编写简单文件系统微过滤器的教程。
我知道微软的 Detour 库,但在这个阶段我想避免使用它,因为钩子通常非常简单。是否有任何可靠的方法可以在不使用 Detours 或 EasyHook 的情况下在 Windows 7 中挂钩文件功能?关于微过滤器:我相信与处理加密的过滤器相比,我想要实现的目标非常简单。但是,我没有编写微过滤器的经验,也无法估计实现我的目标需要付出多少努力。我偶然发现的所有示例都涉及文件系统过滤器而不是微过滤器。
我很感谢任何提示和建议:)
问候,好奇
c++ - 如何在 C++/Windows 中捕获每个异常?
我有一个 DLL 被注入到非常旧的、有缺陷的并且现在不受它的开发人员应用程序的支持。有时该应用程序崩溃,我需要一些方法来捕获所有可能发生的未处理异常(来自 DLL)以保存数据,然后才允许应用程序崩溃。我怎样才能做到这一点?
目前,有一个用于此目的的外部调试器,但它太慢了,而且很难保持这种状态。
dll-injection - 防止 DLL 反注入
我在 MadCHook 库中的方法 InjectLibrary 的帮助下将 dll 注入到进程中。我能够成功地做到这一点。但后来我尝试使用 UninjectLibrary() 方法通过一个完全独立的 C++ 程序取消注入它,我成功了。简而言之,任何知道我的 dll 名称的人都可以取消注入它。我怎样才能防止这种情况?提前致谢!
dll - 如何在 .Net 应用程序中使 DLL 成为可选
由于 Chilkat .NET 3.5 DLL,我们有一个需要完全信任的应用程序这不是一个大问题,但是我们希望将我们的应用程序提交到:Windows Web 应用程序库,它必须是中等信任度。
所以要让它成为中等信任度,我们需要做的就是
- 删除对 DLL 的引用
- 注释掉与该代码相关的方法
与其制作 2 个不同版本的应用程序,不如为一个应用程序版本删除对 DLL 的引用的最佳方法是什么?
谢谢!
c - Windows 7 DLL 注入
我正在尝试将 dll 注入现有进程。我正在尝试使用 CreateRemoteThread LoadLibrary 方式。我理解它是如何工作的,但我无法弄清楚为什么 CreateRemoteThread 返回 null(失败)......我在 Windows 7 上,所以这可能是原因,但我不确定是否是......也许我需要设置权限?我的代码如下:
c# - 为什么 Control.FromHandle(IntPtr) 在一个钩子进程中返回 null 并返回“Form”的有效对象?在另一个上瘾的过程中?
我面临一个与从某个挂钩进程中取出所有控件有关的问题。我的 SpyDll 成功启动到钩子进程,但是当我检查语句时
Control control = Control.FromHandle(MainWindowHandle),它将 null 返回到控制对象,其中“MainWindowhandle”只是该挂钩进程的本机主窗口句柄,在启动该进程后,您总是从 .NET“Process”类中获取该句柄。
但奇怪的是,在同一个 C# .NET 应用程序的其他一些挂钩进程中,它返回 Main“WinForm”的有效对象。
那么为什么它在上述情况下不起作用呢?正确使用“MainWindowHandle”是否有任何例外。在我的情况下,两者都是用 C# 编程的单独的 .NET 托管进程。在创建该流程时,是否需要特别维护任何流程配置?
问候乌斯曼
c++ - 在 DLL 中的函数后变量不断设置为 NULL
我需要有效数据在全局变量QObject *p
中。但是,在函数内部为该变量分配任何东西都在函数的范围内起作用,但是在函数返回后p
,即使p
是全局的,也会被设置回 NULL。这是我的代码:
我尝试了各种数据结构“解决方法”,例如使用struct
typedef
等……我似乎无法让它工作。我只需要p
保留mParent
.
编辑:这是我执行 install() 的地方
编辑:找出问题所在。指针在执行this
时超出范围install
,因此mParent
,作为 a QObject
,将自身初始化为NULL
。从而p
变成NULL
。但是,返回时会在完全不同的内存地址处返回this
范围。install
经过大量调试和头疼之后,解决方案是创建一个类成员函数,该函数将 aQObject
作为参数并将其传递给install
而不是this
. 只要您需要 DLL 持续存在,您传递给该函数的任何内容都必须持续存在。那,或者,您可以创建自己的复制构造函数来执行深度复制。
c++ - DLL 源代码中的 C++ 函数挂钩
我有来自 C++ DLL 的源代码。此 DLL 是应用程序的一部分。我想挂钩一个由另一个DLL加载到内存中的函数,以便我的挂钩函数被所有其他DLL而不是原始函数调用。我把这段代码放在我的代码中:
问题是:如果我在一个 DLL 中搜索偏移量并通过该偏移量修补函数,这不是错的吗(我认为它更复杂,因为我在另一个 DLL 中并且想为所有 DLL 挂钩该函数)?顺便说一句,有人知道我如何在 IDA PRO 中获得标准(fex。0x0100344C)偏移量吗?
windows - 如何子类化 Windows 资源管理器的窗口
我想像这样更改 explorer.exe 的列表视图的颜色
我通过GetTopWindow函数和他的家人得到了listview窗口的句柄。
为了子类化 explorer.exe 的列表视图窗口,我通过以下代码将我的 dll 代码注入资源管理器。
我的 dll 由 explorer.exe 很好地加载。我在注入的代码中通过SetClassLongPtr(用于全局子类)对窗口过程进行了子类化。
SetClassLongPtr返回成功,但我的子类函数(SubclassProc)仅接收 WM_CREATE WM_DESTROY 和 WM_MOVE 消息。怎么了?我希望得到WM_NOTIFY 和 NM_CUSTOMDRAW。