问题标签 [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.
c# - EasyHook recv 不会“挂钩”所有数据包
我设法编写了一个半工作的 EasyHook 示例来挂钩 recv 函数。我编写了一个表单,添加了一个 WebBrowser 组件,然后启动了应用程序。问题是,我得到了 HTTP 数据包,但如果有一个套接字,recv 似乎停止“挂钩”。问题是,使用外部应用程序 Spystudio,我可以让它们连接 recv。那么,我错过了什么?
编辑:我毫不怀疑recv,这是apimonitor告诉我的:
那么,有人可以帮助我吗?
c# - Easyhook 引发 System.NotSupportedException
我仍在尝试完全理解 hooking 以及 easyhook 的工作原理。我现在写了一个简单的例子:一个包含 webbrowser 元素的表单,我正在尝试挂钩由它进行的 recv 调用。编译时,程序返回此错误:
在第 46 行,我有以下代码:
我真的看不出问题出在哪里,有人可以帮助我吗?
c# - Easyhook 在 vs2010 上触发“无法在 GAC 中安装程序集”错误
我仍在尝试运行我的 easyhook 练习。现在,我收到此错误:
问题似乎源于这里:
我正在尝试构建的解决方案由两个项目组成,一个库和一个应用程序。构建解决方案后,我将 testinject.dll 复制到 hooktest 调试文件夹,然后在调试模式下运行它。也许我应该使用绝对路径来指示 testinject.dll 在哪里?或在某处添加库?
更新 1
即使进行了此更改,我也会遇到相同的错误
c# - 如何强烈命名非托管 C++ Dll?
我正在开发一个使用EasyHook 库进行 DLL 注入的 C# 应用程序。EasyHook 要求使用它的任何应用程序都必须进行强命名。为了强命名应用程序,我需要确保我使用的所有库也都是强命名的。
这对我所有的托管库都很容易做到,但我也有一个非托管 c++ 库,我需要对其进行强命名。经过一番搜索,我似乎无法找到一种方法来签署我的非托管 dll,即使使用源代码也是如此。可以做到这一点,如果可以,我需要做什么?
感谢您的任何建议或帮助!
c# - 带有原始函数调用的 EasyHook
我正在开发一个应用程序,它使用 EasyHook 库将代码注入所需的进程并拦截来自特定 dll 的调用。在我的例子中,库是 Oracle Call Interface,OCI.dll。我想拦截执行的 sql 语句,以便在客户端创建 sql 查询日志。以前我用过微软的detours(2.1版),但是它的license不允许商业使用,3.0版的成本很高。我开始使用 EasyHook 库。我在交付的示例中更改了从 kernel32.dll 拦截函数 CreateFileW 的代码,并将其调整为与 oci.dll 中的函数 OCIStmtFetch2 一起使用。
我有头文件或 oci 库,我确切地知道函数参数和返回类型。根据头文件签名是:
剑 OCIStmtFetch2 ( OCIStmt *stmtp, OCIError *errhp, ub4 nrows, ub2orientation, ub4 scrollOffset, ub4 mode);
根据 Oracle 提供的其他头文件,OCIStmt 是一个结构,而 OCIError 是错误函数的句柄。ub2 和 ub4 是 unsigned short(16 位)和 unsigned int(32 位)的类型定义。Sword 是 typedef 到有符号整数(也是 32 位) 我的 EasyHook 库注入代码如下所示(一些函数名称与示例 FileMonInject 相同):
如您所见,我将 ub4 与 UInt32 映射,将 ub2 与 UInt16 映射,将剑与 Int32 映射。第一次我使用 IntPtr 作为指针(两个第一个参数),但代码不能正常工作。注入的dll完美地拦截了函数调用,我可以在原始函数之前运行我的代码,我可以调用原始函数并返回预期值,但是当执行return E时,目标应用程序会导致内存冲突异常并退出。正如您在代码中看到的那样,然后我尝试使用 void* 指针和 unsafe 关键字来启用在 C# 中使用指针,结果相同。与我使用 Detours 库的代码相比,我可以使用调试器检查的参数和指针值对于两个库都是相同的,因此类型映射看起来不错。然而,当我从 DOCIStmtFetch2_Hooked 返回时,代码会中断。
有谁知道可能出了什么问题?即使我认为类型映射没问题,我也将错误归咎于他们。
问候。
我删除了锁定部分以缩短源。无论我是否锁定队列,问题仍然存在
c++ - 使用 C++ 和 EasyHook 将 x64-DLL 注入到挂钩 x86-DLL 的 x64 进程中失败
使用 C++ 和 EasyHook 将 x64-DLL 注入到挂钩 x86-DLL 的 x64 进程中失败。如果 Loader、InjectionLibrary 和 InjectionTarget(它在两个版本中都可用,我需要同时连接)是 x86,它就可以工作。获取导出过程的地址(GetProcAddress 本身)在 x64 上不是问题。InjectionTarget 也有 HookTarget(Kernel32.dll) 作为 x64 的依赖项。LhInstallHook(...) 返回 STATUS_NOT_SUPPORTED 源注释说在以下情况下发生:“目标入口点包含不受支持的指令。”
由于源代码适用于 x86 构建,我决定不添加它。
我画了一个小图
c# - C# - 钩子 explorer.exe
我已经下载了一个源代码来挂钩和监视文件
链接: http ://code.google.com/p/easyhook-continuing-detours/downloads/list
但是在执行程序“FileMon”时。. 我收到以下错误:无法加载文件或程序集“EasyHook,版本=2.5.0.0,文化=中性,PublicKeyToken=4b580fca19d0b0c5”或其依赖项之一。该系统找不到指定的文件
如何解决这个错误?
c++ - 如何使用非托管 EasyHook 从进程中的任何线程挂钩方法?
我在让我的方法挂钩工作时遇到了一些问题。如果“我”调用被钩住的方法,我可以让钩子工作。但是当它在进程操作过程中自然发生时,它不会被钩住。我的问题可能源于我实际上是在我自己产生的线程中设置这些钩子。显然 LhSetInclusiveACL() 方法需要知道您要挂钩的线程。好吧,这是我的问题...
我真的不在乎哪个线程应用了钩子,我希望它们都被钩住。例如,假设我希望“gdi32.dll”库中的 CreateICW() 方法与整个进程“iexplorer.exe”挂钩。不仅来自线程 ID 号 48291 或其他。要知道哪些线程将调用您感兴趣的挂接例程,需要对您挂接的进程的内部工作有深入的了解。我推测这通常是不可行的,对我来说当然也不可行。因此,我不可能先验地知道需要挂钩哪些线程 ID。
以下代码取自“UnmanageHook”示例:
我在 LhSetInclusiveACL() 方法调用中添加了一些注释来解释这种情况。LhSetExclusiveACL() 和这些方法的“全局”版本似乎也没有帮助。
LhSetExclusiveACL 的文档供参考:
我用错了吗?我想这就是大多数实现如何使用这个库的方式,那么为什么这对我不起作用?
c# - EasyHook 和 CallWndProc
我正在拼命尝试CallWndProc
使用 EasyHook 进行挂钩,但未能成功。
这会抛出“给定的方法不存在。”。所以我猜要么CallWndProc
不在 user32.dll 中,要么它被称为略有不同的东西,或者我错过了一些基本的难题。
干杯
c++ - 如何在 explorer.exe 中更改 NotifyIcon 的上下文菜单?
我想用新项目扩展默认扬声器通知的(托盘图标)右键单击上下文菜单。另外,我想使用 C++ 处理鼠标点击。
插图
到目前为止我所知道的
我学习了如何使用CreateRemoteThread()进行 dll 注入,因为我认为这是要走的路。我的问题是:在注入的 dll 里面做什么?例如,如何访问 NotifyIcon 对象?
也许可以通过简单的 Windows API 调用,但我不熟悉它。