qlwz / csharp_InlineHook

net 实现InlineHook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

csharp_InlineHook

net 实现InlineHook

目录

背景介绍

csharp_InlineHook,是一个可以将托管dll注入到非托管进程hook。

项目介绍

此项目设计初衷是提供一个可方便扩展的hook库。

写此库之前查阅大量的资料并只有两个实现 一个是esayhook 缺点是不支持任意点hook,只能hook系统api 一个是网友实现的只支持托管进程hook

本项目可以支持InlineHook 任意点hook 函数或者流程 使用非托管dll当作跳板用于加载非托管dll实现注入 剩下的hook全部在非托管实现

使用说明

net可以直接编译,

dllmain.cpp自己新建项目编译

使用样例

Inline_Hook.InlineHook(3212659,5, byteSource.ToArray(), getInt(Method),11+10,"接收消息",(obj) =>{
                StringBuilder sb = new StringBuilder();
                sb.Append("接收消息:");
                int a = 0x68;
                try
                {
                    if (obj.ESP == 0)
                        return;
                    int MsgPtr = NativeAPI.ReadMemoryValue(obj.ESP);
                    if (MsgPtr == 0)
                        return;
                    MsgPtr = NativeAPI.ReadMemoryValue(MsgPtr);
                    if (MsgPtr == 0)
                        return;
                    MsgPtr = NativeAPI.ReadMemoryValue(MsgPtr + 0x68);
                    if (MsgPtr == 0)
                        return;
                    int len = NativeAPI.lstrlenW(MsgPtr);
                    if (len == 0)
                        return;
                    sb.Append(NativeAPI.ReadMemoryStrValue(MsgPtr, len*2+2));
                    sb.Append("\r\n");
                    listBox1.Items.Add(sb.ToString());
                }
                catch (Exception es)
                {
                    File.AppendAllText("error.txt", es.Message);
                }
            });

Shurnim icon

其他

时间仓促,功能简陋,望您包涵。特别希望看到该项目对您哪怕一点点的帮助。任意的意见和建议,欢迎随意与我沟通,联系方式:

项目的Bug和改进点,可在OSChina上以issue的方式直接提交给我。

About

net 实现InlineHook

License:Apache License 2.0


Languages

Language:C# 86.7%Language:C++ 13.3%