标签: easyhook

使用SharpDX和EasyHook捕获全屏DX11程序的屏幕截图

在任何人提到它之前,我参考了这个链接,找出我需要将后备缓冲区复制到位图.

现在的情况

  • 我被注入目标进程
  • 目标进程'FeatureLevel = Level_11_0
  • 目标SwapChain正在使用DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH标志.
  • SwapChain :: Present函数被挂钩.
  • 屏幕截图显示黑色和目标进程崩溃.没有截图进程运行正常.

期望的情况

正确制作屏幕截图,让目标进程继续正常执行.

注意Hook类与链接中的相同.我只添加了一个UnmodifiableHook版本,它的名字就是这么说的.我遗漏了所有不重要的位.

TestSwapChainHook.cs

using System;
using System.Runtime.InteropServices;

namespace Test
{
    public sealed class TestSwapChainHook : IDisposable
    {
        private enum IDXGISwapChainVirtualTable
        {
            QueryInterface = 0,
            AddRef = 1,
            Release = 2,
            SetPrivateData = 3,
            SetPrivateDataInterface = 4,
            GetPrivateData = 5,
            GetParent = 6,
            GetDevice = 7,
            Present = 8,
            GetBuffer = 9,
            SetFullscreenState = 10,
            GetFullscreenState = 11,
            GetDesc = 12,
            ResizeBuffers = 13,
            ResizeTarget = …
Run Code Online (Sandbox Code Playgroud)

c# directx-11 sharpdx easyhook

10
推荐指数
1
解决办法
2181
查看次数

简单的API挂钩可以防止文件删除?

我想拦截当用户通过挂钩所需的API函数来删除任何目录上的文件时,可以在mesagebox中询问一个简单的布尔问题,Really Would you like to Delete this file?"问题是一个表达我想要的例子控制文件,删除文件或防止删除.

我的操作系统是Windows 8 x64,但我想在其他Windows操作系统和它们的arquitechtures中编写一种通用方法(如果这不会让人头疼更难).

在这个SO问题中,我已经读过,最好的选择是通过我看到的方式挂钩NtSetFileInformation函数Intercept FIleSytemCall for Deletion,它存在一个名为WinAPI的函数DeleteFile,也是接口ICopyHook,我不知道它们之间的差异,但是反正我真的不知道怎么开始这样做......

我想澄清一下,我正在寻找一个VBNET解决方案,我很头疼,因为这些API-Hooking库上没有任何VBNET代码示例,而且当复杂的代码是复杂的代码时,C#代码转换为VBNET是非常错误的.参与其中.

编辑:我发现了一个EasyHook库示例,NtSetFileInformation其中似乎是完美的满足我的需求,但它是C#代码,我试图翻译它没有成功:使用EasyHook挂钩NtdCreateFile API(c#)

所以,我已经尝试使用Deviare库2.6,但什么也没做:

Public Class Form1

    Private _mgr As Deviare2.NktSpyMgr = Nothing
    Private WithEvents _hook As Deviare2.NktHook = Nothing
    Private _proc As Deviare2.INktProcess = Nothing

    Private Shadows Sub Shown() Handles MyBase.Shown

        _mgr = New Deviare2.NktSpyMgr()
        _hook = _mgr.CreateHook("ntdll.dll!NtSetFileInformation", Nothing)
        _hook.Hook()

    End Sub

    Private Sub …
Run Code Online (Sandbox Code Playgroud)

.net vb.net hook winapi easyhook

7
推荐指数
1
解决办法
2513
查看次数

如何使用非托管 EasyHook 从进程内的任何线程挂钩方法?

我在让我的方法挂钩工作时遇到了一些问题。如果“我”调用被挂钩的方法,我就可以让挂钩工作。但是当它在进程操作期间自然发生时,它就不会被吸引。我的问题可能源于这样一个事实:我实际上是在我自己生成的线程中设置这些钩子。显然 LhSetInclusiveACL() 方法需要知道您想要挂钩的线程。嗯,这是我的问题......

\n\n

我并不关心哪些线程应用了钩子,我希望它们都被钩子。例如,假设我希望“gdi32.dll”库中的 CreateICW() 方法与整个进程“iexplorer.exe”挂钩。不仅仅是来自线程 ID 号 48291 或其他什么。要知道哪些线程将调用您有兴趣挂钩的例程,需要深入了解您正在挂钩的进程的内部工作原理。我推测这通常是不可行的,而且对我来说当然也不可行。因此,我不可能先验地知道哪些线程 ID 需要被挂钩。

\n\n

以下代码取自“UnmanageHook”示例:

\n\n
extern "C" int main(int argc, wchar_t* argv[])\n{\n    //...\n    //...\n    //...\n\n    /*\n        The following shows how to install and remove local hooks...\n    */\n    FORCE(LhInstallHook(\n            GetProcAddress(hUser32, "MessageBeep"),\n            MessageBeepHook,\n            (PVOID)0x12345678,\n            hHook));\n\n    // won\'t invoke the hook handler because hooks are inactive after installation\n    MessageBeep(123);\n\n    // activate the hook for the current thread\n    // This is where I believe my problem is.  ACLEntries is \n    // supposed to …
Run Code Online (Sandbox Code Playgroud)

c++ hook unmanaged easyhook

6
推荐指数
1
解决办法
2723
查看次数

捕获 java 进程终止的时间

当有人通过任务管理器或任务杀控制台命令杀死我的应用程序(java,但这并不重要)时,我如何捕获?

我知道我无法在我的应用程序中捕捉到这一点,但也许我可以通过操作系统(当然是 Windows)的一些钩子来做到这一点。也许easyhook库(http://www.codeplex.com/easyhook)可以帮助我,但我在那里找不到例子。我们的应用程序经常在客户服务器上死掉,我只想知道是谁(或什么)杀死了它。我们确定这不是应用程序问题,似乎 java.exe 进程已从任务管理器中终止

java windows easyhook

5
推荐指数
1
解决办法
5633
查看次数

C#Easyhook Winsock WS2_32.dll,连接挂钩Socks5

我试图钩住winsock连接功能,并通过socks5代理/ w auth路由TCP连接。

如果套接字是阻塞套接字,则此方法有效,但是在使用firefox(非阻塞套接字)时,我收到很多10035、10022 winsock错误。

我如何确定它是否是非阻塞/阻塞插座?

我真的很感激任何提示或想法,以实现钩住wsock连接功能并通过socks5服务器路由TCP通信的功能。

如果有人要测试它,我可以将其放在github上。(适用于任何版本的firefox)

编辑1:https : //github.com/duketwo/WinsockConnectHookSocks5/

(您必须在WSockConnectHook / HookManager.cs中编辑代理信息,并在Injector / MainForm.cs中编辑firefox的路径)

Edit2:这很容易引起麻烦,原始函数调用后的所有操作均无法正常进行。

Edit3:似乎我使它具有许多缺陷,实际上需要区分非阻塞套接字和阻塞套接字。任何想法如何实现这一目标?

Edit4:Windows没有提供任何方法来检索套接字的阻塞属性,因此我可能必须钩挂ioctlsocket函数以跟踪套接字的阻塞状态。

谢谢

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using EasyHook;
using System.IO;
using System.Windows.Forms;

namespace WSockConnectHook
{
    public class WinSockConnectController : IDisposable, IHook
    {
        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet =     CharSet.Ansi, SetLastError = true)]
        private delegate int WinsockConnectDelegate(IntPtr s, IntPtr     addr, int addrsize);

    [DllImport("WS2_32.dll", SetLastError = true)]
    public static extern int connect(IntPtr s, IntPtr addr, int addrsize);

    [StructLayout(LayoutKind.Sequential, …
Run Code Online (Sandbox Code Playgroud)

c# winsock easyhook

5
推荐指数
0
解决办法
3814
查看次数

标签 统计

easyhook ×5

c# ×2

hook ×2

.net ×1

c++ ×1

directx-11 ×1

java ×1

sharpdx ×1

unmanaged ×1

vb.net ×1

winapi ×1

windows ×1

winsock ×1