1694439208/csharp_InlineHook
GitHub: 1694439208/csharp_InlineHook
一个用C#实现的InlineHook库,支持将托管DLL注入非托管进程并在任意内存地址设置钩子,弥补了EasyHook等工具仅能hook系统API的不足。
Stars: 85 | Forks: 36
# 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); } });  ## 其他 时间仓促,功能简陋,望您包涵。特别希望看到该项目对您哪怕一点点的帮助。任意的意见和建议,欢迎随意与我沟通,联系方式: * Email: <1694439208@qq.com> * QQ:1694439208 * Blog:[Blog](https://my.oschina.net/KFS) 项目的Bug和改进点,可在OSChina上以issue的方式直接提交给我。
写此库之前查阅大量的资料并只有两个实现 一个是*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); } });  ## 其他 时间仓促,功能简陋,望您包涵。特别希望看到该项目对您哪怕一点点的帮助。任意的意见和建议,欢迎随意与我沟通,联系方式: * Email: <1694439208@qq.com> * QQ:1694439208 * Blog:[Blog](https://my.oschina.net/KFS) 项目的Bug和改进点,可在OSChina上以issue的方式直接提交给我。
标签:API Hook, DevSecOps, DLL注入, Hook, InlineHook, SSH蜜罐, 上游代理, 二进制拦截, 云资产清单, 任意点Hook, 内存修改, 多人体追踪, 托管与非托管, 注入, 流量审计, 消息拦截, 游戏辅助, 端点可见性, 系统底层, 跳板DLL, 进程注入, 逆向工程