- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 EasyHook 我设置了以下结构:
APP <--> 接口(interface) <--> DLL
当我按下应用程序中的按钮时,我试图在注入(inject)的 DLL 中运行一些代码。
我设法让 DLL 使用此代码向外部发送消息:
((EntryPoint)HookRuntimeInfo.Callback).Interface.WriteLine("");
但是我怎样才能真正让代码在注入(inject)的 DLL 中运行呢?
最佳答案
您需要配置一个双向IPC接口(interface)。有多种不同的方法可以实现这一点。以下是一个使用 .NET Remoting 的示例。
先看看EasyHook remote file monitor tutorial作为创建接口(interface)以将消息从 DLL 发送回 APP 的起点,即 APP <- interface <- DLL。
要允许来自APP -> interface -> DLL 的消息,需要在DLL 中配置一个新 channel IEntryPoint constructor :例如
#region Allow client event handlers (bi-directional IPC)
// Attempt to create a IpcServerChannel so that any event handlers on the client will function correctly
System.Collections.IDictionary properties = new System.Collections.Hashtable();
properties["name"] = channelName;
properties["portName"] = channelName + Guid.NewGuid().ToString("N"); // random portName so no conflict with existing channels of channelName
System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider binaryProv = new System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider();
binaryProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
System.Runtime.Remoting.Channels.Ipc.IpcServerChannel _clientServerChannel = new System.Runtime.Remoting.Channels.Ipc.IpcServerChannel(properties, binaryProv);
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(_clientServerChannel, false);
#endregion
要从 APP -> interface -> DLL 实现 IPC,请查看“Client”中的 Disconnect
方法和 Disconnected
事件-边事件”的Direct3DHook project 、CaptureInterface.Disconnect
、CaptureInterface.Disconnected
和 ClientCaptureInterfaceEventProxy.Disconnected
,全部在 CaptureInterface.cs 中.除了接口(interface)类之外,这种方法还使用了一个继承自 MarshalByRefObject
的客户端事件代理类,并允许在 DLL 的其他地方调用事件处理程序以响应 APP 调用方法。您需要仔细查看链接的代码,还有一些额外的兴趣点需要考虑(例如事件处理程序生命周期),该接口(interface)实现了每个事件的包装器以“安全”方式触发它.
最后,Disconnected
事件的处理程序附加到 DLL 的 IEntryPoint
Run 方法中:
_interface.Disconnected += _clientEventProxy.DisconnectedProxyHandler;
_clientEventProxy.Disconnected += () =>
{
// This code in the DLL will run when APP calls CaptureInterface.Disconnect
};
关于c# - EasyHook 和通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438799/
使用 EasyHook 我设置了以下结构: APP 接口(interface) DLL 当我按下应用程序中的按钮时,我试图在注入(inject)的 DLL 中运行一些代码。 我设法让 DLL 使用
我正在使用开源库 EasyHook . 我想做的是,当 VB6 应用程序在特定 CLSID 上从 ole32.dll 调用 CoCreateInstance 时 Hook ,返回我自己的对象 C# 实
对不起,但我必须放一段代码,这样你才能理解。 using System; using System.Collections.Generic; using System.Text; using Syst
我可以使用 EasyHook 从内核模式 Hook 一些 API(NtOpenProcess)吗? 我对通过进程范围的 dll 注入(inject)进行用户模式 Hook 不感兴趣,但正如我所见,ea
我正在尝试了解 easyhook 如何为即将到来的项目工作。为此,我决定尝试劫持 firefox.exe 进程中的 GetMonitorInfoW 和 GetDeviceCaps 以获取 window
我正在使用 EasyHook 拦截注册表调用。更详细地说,我使用 RegQueryValue 来拦截从注册表中读取一个键并用其他东西改变它的值的调用。相关代码如下: [UnmanagedFunctio
我一直在尝试使用 EasyHook 从 Chrome 和 Firefox Hook 对“recv”的调用。但是,这不起作用 - 它不会因任何错误而失败,但也不会捕获任何数据包。我已经尝试过带有“Cre
在多次寻找在 C# 中创建到外部应用程序的 Hook 的方法后,我偶然发现了 EasyHook,这将是理想的选择。不幸的是,周围的社区为零,该软件自 2008 年以来就没有维护过,似乎无法在 Visu
如果我这样做: try { try { Config.Register(
我有一个调用以下(删节)代码的注入(inject)器: var processes = Process.GetProcessesByName("target"); /* ... */ var proc
IPC 客户端和IPC 服务器如何调用共享远程接口(interface)(继承MarshalByRefObject 的类)进行通信,而不必将接口(interface)类放在注入(inject)应用程序
我在使方法 Hook 正常工作时遇到了一些问题。如果“我”调用被 Hook 的方法,我就可以让 Hook 工作。但是当它在进程运行期间自然发生时,它不会被钩住。我的问题可能源于这样一个事实,即我实际上
所以我在 winspool.drv!WritePrinter 上有一个 Hook 函数,它成功地 Hook 了远程注入(inject)到 spoolsv.exe 的非托管 C++。 目前, Hook
我设法编写了一个 Hook recv 函数的半工作 EasyHook 示例。我编写了一个表单,添加了一个 WebBrowser 组件,然后启动了应用程序。问题是,我得到了 HTTP 数据包,但如果有套
我已经下载了 EasyHook 2.7 源代码,并尝试在我的 Visual Studio 2012 环境中编译它。 在解决了很多warnings之后,我又发现了其他无法解决的warnings,分别是:
我使用 EasyHook 从库中 Hook 系统 API 例程(在 C++ 中)取得了很多成功。这些库一直是扁平的,基本上充满了全局可调用的例程。这是一个使用 User32.dll 库中的 Messa
我曾尝试使用 EasyHook 将 DLL 注入(inject)到另一个进程中,但是当宿主进程关闭时,EasyHook 和其他注入(inject)的 DLL 仍在处理中。有谁知道如何从目标进程中卸载它
在有人提到它之前,我提到了 this链接以了解我需要如何将后备缓冲区复制到位图。 现状 我被注入(inject)了目标进程 目标进程'FeatureLevel = Level_11_0 正在使用 DX
我正在使用 Easyhook,退出应用程序后,被 Hook 的应用程序崩溃了。我知道它发生在哪里,但不知道如何解决。我正在 Hook DrawText。我什么也没做: int Draw
我正在使用 EasyHook dll 并执行 DoDragDrop API Hook ,一切正常,但如何释放以下 3 个 dll 1.EasyHook.dll2.EasyHook64.dll3.Eas
我是一名优秀的程序员,十分优秀!