问题标签 [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 回答
469 浏览

c++ - 通过挂钩 ExtTextOutW 提取文本位置

我对 Windows API RedrawWindowExtTextOut和 BitBlt有疑问。如果我使用参数 lprcUpdate = NULL 和 hrgnUpdate = NULL 调用 RedrawWindow,我将连接 ExtTextOut 以提取屏幕上的文本位置:

在挂钩函数 ExtTextOut 中,我调用 LPToDP API 将位置转换为设备上下文位置。然后它工作正常。文字位置正确。

但是,如果我打电话

然后它失败了。位置不正确。我看到它通过使用 LPToDP 翻译到不正确的位置。

有人知道这个问题吗?我们该如何解决?

谢谢。

0 投票
1 回答
1155 浏览

vb.net - 使用 EasyHook 挂钩 kernel32 函数

要使用 EasyHook 挂钩内核函数,您是否需要自己制作的要注入的 DLL?

0 投票
1 回答
765 浏览

c# - 在进程中创建新的 appdomain 时通知

考虑下一种情况。我已经使用 EasyHook 将我的托管 dll 注入到进程中。EasyHook 使用单独的 AppDomain 注入 dll。现在我需要一种方法来获取有关在当前进程中创建新 AppDomain 的通知。所以问题是当在这个过程中创建一个新的 AppDomain 时,有没有办法获得通知?

0 投票
1 回答
3841 浏览

kernel - EasyHook 内核模式挂钩

我可以使用 EasyHook 从内核模式挂钩一些 API(NtOpenProcess)吗?我对通过进程范围的 dll 注入进行用户模式挂钩不感兴趣,但正如我所见,easy hook 有一个使用与内核模式挂钩相关的代码开发的驱动程序。还是我错了? http://easyhook.codeplex.com/

这项任务的整个目标是为一个应用程序编写一个简单的保护系统,即:阻止特定进程的openprocess,阻止特定目录中的createfile……加上当某些进程试图调用适当的API时得到通知

有什么建议吗?

也许还有其他方法可以在不重新发明轮子的情况下进行内核模式挂钩?

0 投票
0 回答
721 浏览

c++ - 应用程序验证程序导致使用 EasyHook 挂钩的 x64 应用程序崩溃

目前使用 EasyHook 并启用 Application Verifier 时会出现下一个问题。如果 appverifier 禁用应用程序工作,但应用程序验证器启用目标应用程序崩溃。让应用程序验证器工作是相当关键的。那么有什么想法可以让钩子和appverifier运行吗?

我设法创建的最简单的 x64 程序在使用钩子时也会崩溃。我创建了一个带有一个导出函数的本机 dll

original.dll:main.cpp

接下来是主程序:

应用程序验证器使用 Basics 测试的默认选项进行了调整。WinDbg 输出为:

操作系统:Windows 7 x64 内置 VS 2010 AppVerifier 4.1.1078

我在这里发布了类似的问题https://easyhook.codeplex.com/discussions/542316但不幸的是没有任何结果。

谢谢你的帮助。

0 投票
1 回答
1233 浏览

c# - 如何使用 C# 拦截 Win32 API 调用?

我想托管一个虚拟驱动器并拦截 I/O,或者拦截对硬盘驱动器上某些文件夹的 I/O 调用,然后对该调用执行任意操作,例如将文件写入第二个位置。例如,如果 Notepad.exe 将文件写入 C:\Data\test.txt - 我想访问该文件名和文件数据。同样,当任何用户尝试读取 C:\Data\test.txt 或尝试获取 C:\Data 的目录列表时,我想运行任意代码。

理想情况下,我希望有一个处理程序,用于处理文件何时:创建、更新、删除或打开 - 以及何时有人列出目录(从命令行或从 Shell)。

我可以使用 FileSystemWatcher 完成写入部分 - 但我无法拦截磁盘“读取”。所以,我接下来研究了 MS Detours 和 EasyHook。这不会真正起作用,因为我需要监视计算机上的每个进程并在所有进程上连接到 OpenFile。我不想使用 Shell 扩展,因为这种行为也需要在命令行中存在。因此,剩下的就是编写文件系统 MiniFilter 驱动程序 - 或者用 C++ 编写我自己的可安装文件系统。

我可以在 C++ 中使用其中的一部分——尽管驱动程序的内容有点超出我的想象,但最终大部分其余代码都应该在 C# 中,理想情况下。

是否有一些直接的方法来拦截特定文件夹或虚拟驱动器的 I/O?如果答案是 EasyHook 或 MiniFilter,有人有样品吗?尤其是 EasyHook 仅包含 2000 年代后期的样本,此后 API 发生了变化。谢谢!

0 投票
0 回答
7677 浏览

c# - 使用 C# 和 EasyHook 在 DX11 游戏 (CryEngine) 中绘制叠加层

我想做的事:

我有一个基于 CrySDK 的游戏,它是 DirectX11,我想绘制一个类似蒸汽覆盖的游戏覆盖。

-> 我写 C# 因为我不懂任何 C++,所以我正在寻找在 C# 中执行此操作的方法。

-> 我使用 EasyHook 和 SharpDX 库,因为这似乎是最好的方法。

-> 我找到了一个参考项目,它显然是 SC2 的某种 hack,但我只是对覆盖部分感兴趣。

-> 我使用 Visual Studio 2013

-> 现在,如果我能在游戏中随机绘制东西,我会很高兴

到目前为止我做了什么:

我正在查看 google 和 SO 搜索结果,问题是,这些东西是 C++、C 或其他,结果来自 2010 年,与当前的 dx11 不是最新的,包含死链接或由于任何其他原因无法使用. 这涵盖了我自己发现的 95%,一些有用的提示已包含在我的代码中。

我设法创建了一个 Injector.dll 并将其注入到游戏中(至少我认为它是注入的,到目前为止还没有任何可用的结果)

我有的:

进行注入的文件:

injector.dll 本身由这个文件组成,称为 Hooks/Graphics/Direct3D11Hook.cs(我试图保持与 oter sc2 参考项目相似的结构)

在这里,我尝试为 EndScene 函数提供覆盖函数,因为我认为这是我需要的地方。不用说,似乎什么也没画。

委托定义有点像参考项目的复制粘贴,但是我还没有弄清楚如何将我的函数实际挂钩到渲染管道和/或对可能有助于我的事业的事件做出反应。

还有这个巨大的文件[ https://github.com/jasonpang/Starcraft2Hook/blob/master/Game/Hooks/Graphics/Direct3D9.cs]定义了似乎适用于DX9的函数地址,我不认为DX11也可以复制粘贴使用,请问DX11应该有新的功能地址吧?我怎样才能找到那些?我需要看哪里?SharpDX 可以帮助我吗?

TL;博士

想要为 DX11 游戏创建类似蒸汽的覆盖,需要连接 D3D 的东西和魔法和狗屎,让 dll 注入工作,需要管道注入方面的帮助

0 投票
1 回答
543 浏览

c++ - DLL exported function signature

The easyhook.h header file has this function declaration.

The easyhook creator stated this:

Your injected native DLL must have a REMOTE_ENTRY_POINT exported as "NativeInjectionEntryPoint". Take a look at easyhook.h for the signature of that export.

Assuming my dll already looks like this:

What is my dll supposed to look like?

For feedback, I'd like to know if I've stated the question clearly enough to be answered. My last one was voted down and I don't know why.

Any help will be appreciated.

0 投票
1 回答
1152 浏览

c# - c# EasyHook,改变窗口标题

对不起,但我必须放一大段代码,这样你才能理解。

一切正常,直到窗口标题从“Something 100/200”变为“Something 150/300”。我必须获得新的价值。

这是我必须更新的代码:

bigBlindAmount 是应用程序标题的 150/300。当应用程序标题从 100/200 更改为 15/300 时,我必须将 bigBlindAmount 更改为 150/300。

您的回答将不胜感激!

0 投票
1 回答
717 浏览

c# - EasyHook .NET 4.0.x dllNotFound 在 EasyHook EasyHook32.dll

我在我的 c# 项目中使用 EasyHook 并包含 easyhook.dll 作为项目的参考。我尝试添加 easyhook32.dll 和 easyhook64.dll,但是 Visual Studio 说

A reference to [path/to/easyhook32.dll] could not be added. Please make sure the file is accessible, and that it is a valid assembly or COM component

当我尝试在我的程序中使用 EasyHook.dll 时,EasyHook 会System.DllNotFoundException因为找不到EasyHook32.dll.

我试过把它放在 bin 和 debug 文件夹中,但是似乎都没有解决这个问题。我还尝试以管理员身份运行 VS 和应用程序的编译版本,但无济于事。

有任何想法吗?

我在 Visual Studio 2013 和最新版本的 EasyHook 上使用 .NET 4.0.x