问题标签 [easyhook]

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 回答
308 浏览

easyhook - 如何让这个 easyhook 演示运行?

我正在尝试让这个 easyhook 演示在我的计算机上运行,​​但不知道如何。
我在windows编程方面经验很少。他们在http://easyhook.codeplex.com/downloads/get/61179
中有一个关于easyhook 的教程。 起初他们提供了一个演示,但我不知道如何构建这个项目。 他们说 我们需要一个主机进程来注入库并显示文件访问。 我不知道这是怎么做到的。我想我需要在 Visual Studio 中打开一个项目?有人可以一步一步教我吗?谢谢!




0 投票
0 回答
760 浏览

c#-4.0 - 无法使用 EasyHook 从托管代码中挂钩 ICorJitCompiler:compileMethod

我一直在尝试ICorJitCompiler:compileMethod从 v4.0 中的托管代码中使用EasyHook LocalHook.Create. 我通过解组这样的结构获得了函数指针:

一切正常,结构似乎没有问题地解组,并且包含的​​委托的 _methodPtr 和 _methodPtrAux 字段填充了一些指针值。

当我尝试像这样设置钩子时出现问题:

我获得了 AccessViolationException

我解决了这个问题并将 _compileMethodPtr变量设置为委托的_methodPtr. 创建钩子时我没有例外,但钩子也不起作用。

我做错了什么?

0 投票
2 回答
1242 浏览

windows - Winsock LSP 与 API 挂钩

我需要你的建议使用什么 - 分层服务提供程序或只是在所有进程中加载​​我的 DLL 并使用 NCodeHook 或 EasyHook 库挂钩必要的功能。

这是检查 HTTP 流量所必需的。

PS 商业应用需要这样做

谢谢!

0 投票
1 回答
3900 浏览

c# - EasyHook,.NET Remoting 客户端和服务器之间的共享接口?

IPC客户端和IPC服务器如何调用共享远程接口(继承MarshalByRefObject的类)进行通信,而不必将接口类放在注入应用程序中?例如,如果我将接口类放在被注入目标进程的注入库项目中,我的注入应用程序将无法引用该接口。

编辑:我已经回答了下面的问题。

0 投票
1 回答
391 浏览

directx-11 - 将 Direct2D 纹理转换为内存流会使应用程序崩溃

我正在尝试使用Direct3DHook库和EasyHook来挂钩 Directx11 IDXGISwapChain.Present以获取屏幕截图。我猜 Direct3DHook 是为单个屏幕截图编写的,我正在尝试扩展它以获取屏幕截图流。在最初的几个屏幕截图之后,主机应用程序在随机渲染堆栈处获得异常。

我可以将错误隔离到文件 DXHookD3D11.cs 中的以下代码:

0 投票
1 回答
201 浏览

winapi - 处理钩子函数

我正在尝试在 C# 中使用 EasyHook 正确挂钩来自 COM 对象(非托管)的方法。

我能够确定 COM 对象的方法的地址,并且可以正确触发我的钩子函数。我是这样做的,其余代码与教程中的代码非常相似:

但是,一旦进入我的钩子,所有参数都会被打乱(它们不等于我最初传递的参数)。

此外,我无法返回任何内容(请注意,我还尝试挂钩另一个返回短且值未正确返回的函数)。

当我打开 eXescope 时,这是函数签名之一:

当我在 C# 中正常使用 COM 对象时,此函数具有以下签名:

有任何想法吗?提前致谢!

0 投票
1 回答
1167 浏览

c# - 从 C# 通过 C++/CLI 访问本机对象!

我编写了一个 C# 应用程序,将 DLL 注入到第三方可执行文件中(恰好是使用 Qt 框架构建的)。此 DLL 使用 EasyHook 拦截对许多特定函数的调用。当我注入的代码被调用时,我会尝试检查一些作为这些函数参数的对象。

例如,我截获了一个解析 XML 的调用:

在我的 C# 代码中,我有一个 PInvoke 签名来匹配这个:

我想调用作为“Source”类成员的“data()”函数。也就是说,QXmlSimpleReader 从 QXmlInputSource 解析原始 XML,但在此之前,我试图通过这个“data()”函数检查原始 XML。

根据这里一位专家的建议,我尝试使用 C++/CLI 本地访问对象(请参阅调用第三方 DLL 中的方法)。我在 C++ 中构造了一个包装器对象,它接受来自 C# 代码的 IntPtr:

标题:

CPP 文件:

当我尝试调用 fpData() 函数指针时,基于 Qt 的应用程序崩溃。帮助:P

一些可能有帮助也可能没有帮助的附加信息:

  • 我已经使用相同的方法成功地调用了“更简单”对象上的函数,例如 QString.count() 和 QString.data()。(QString 似乎只是标准 unicode 字符串的轻量级包装器)。

  • 在包含我感兴趣的 XML 函数的 QtXml4.dll 文件中,实际上有两个 parse() 方法;Source 是 const & 的一种,另一种是 Source 是 const *。我不知道我是否应该使用其中一个。我认为我的签名无论如何都不会改变。

  • 当我尝试玩耍时,我尝试在 C# 代码中取消引用 IntPtr 并将其传递给 C++:

    IntPtr DerefSrc = (IntPtr)Marshal.PtrToStructure(Source, typeof(IntPtr));

如果我打印出这两个 IntPtrs 的值,Source 的值约为 3.5Mb,而 DerefSrc 的值为 1.6Gb - 这与内存中 QtXml4.dll 的地址大致匹配。我的猜测是 3.5Mb 是相对偏移,而 DerefSrc 显然是绝对参考。将 DerefSrc 转换为相对地址并将其传递给 C++ 是否值得一试...?

0 投票
1 回答
872 浏览

c# - c# hookinig API

我正在研究一个反作弊,我想挂钩诸如 Read/WriteProcessMemory、OpenProcess 之类的 API,也许还有一些 API 来检查它是否从游戏读取或写入一些数据。

但我不是那种有经验的程序员自己做的,所以我尝试通过easyhook来做。首先,我让示例(http://www.codeproject.com/Articles/27637/EasyHook-The-reinvention-of-Windows-API-hooking)工作。然后我尝试替换CreateFileReadProcessMemory但是有一条线,如果我被钩住了This.Queue.Push(hProcess);,我应该如何替换?hProcessReadProcessMemory

除了上面发布的挂钩之外,我找不到任何其他在 C# 中挂钩 API 的示例CreateFile。如果有更简单的方法,也不需要通过easyhook来完成。谢谢。

0 投票
1 回答
2323 浏览

c# - 在 Windows 上拦截/重定向传出的 http 连接

我正在寻找在 Windows 机器上重定向传出 http 连接(不使用系统代理)。

背景:

我有一些遗留软件与现已失效的 Web 服务交互。我在一个简单的桌面应用程序中模拟了该服务,并希望将传出的 http 请求重新路由到该应用程序。

实验上,我已经使用 Windows 主机文件成功重定向到本地主机,但这不切实际,因为我有其他服务需要在默认 http 端口 80 上侦听,我不想为此设置另一个物理服务器

旧版软件不使用系统代理,因此像 FiddlerCore 这样的解决方案将无法工作(不幸的是,因为这太棒了!)

我注意到在类似的问题中提到了 EasyHook,与 winsock 一起使用,但是我对低级编程的经验非常有限,在我开始漫长而混乱的旅程之前,我想检查一下我是否走在正确的道路上!

那么,理论上是否可以通过 hookwinsock(最好在 c# 中使用 easyHook)来拦截和重定向不使用系统代理的传出 http 流量?

一个简单的是/否的答案就可以了,一些推理,甚至更好的文档会很棒

0 投票
1 回答
1398 浏览

c# - 如何让 EasyHook 工作?

我正在尝试了解 easyhook 如何为即将到来的项目工作。为此,我决定尝试在 firefox.exe 进程中劫持 GetMonitorInfoW 和 GetDeviceCaps 以获取 window.screen.width 和 height 以返回疯狂的值。

这是我所做的:

injectorHelperLib.dll:

注入器Lib.dll:

文本.exe:

该应用程序似乎已启动并报告附加到该过程,但对window.screen.width我想要影响的任何其他变量没有影响。

我做错了什么?