C# inline-hook / api-hook
我查阅了一下相关C#方面的资料,却没有发现有提供过关于api-hook方面的资
料包括应用库由此本人编写一套inline-hook的库用于支持x64、x86上的基于在
clr的公共语言,如: c#、c+/clr、vb.net 全部都可以使用该类库改变底层api执
行结果,如我们需要制作抓包工具,或者拦截某个ActiveX对象内部调用的函数
用处广泛 有些人在制作“截包”工具时是通过使用SPI,但也可以通过本技术实现
调用MessageBox.Show("Hello world", "Advapi32")时会跳转到CB_MessageBox函数
MessageBox.Show()这个方法在下层中会调用MessageBoxW函数,不信我们可以试
- [DllImport("user32", EntryPoint = "MessageBoxW", CharSet = CharSet.Unicode)]
- public static extern int MessageBox(IntPtr hWnd, string lpText, string lpCaption, uint uType);
- [STAThread]
- static void Main(string[] args)
- {
- InlineHook ich = new InlineHook();
- ich.Install(ich.GetProcAddress("user32", "MessageBoxW"), ich.GetProcAddress(new MessageBoxW(CB_MessageBox)));
- // MessageBox.Show("Hello world", "Advapi32");
- MessageBox(IntPtr.Zero, "Hello world", "Advapi32", 0);
- Console.ReadKey(false);
- }
试,上面的代码执行后结果与最上面的相同。本类库提供分别需求.net 2 / 4的两种
不同的类库,基本满足开发的需要 不过这一块一直是C++方面的哦不过我相信以后
会是C#做这一块,不过与其等到到时候再提供类库 不如早些提供类库,大家不需要
去研究我类库中怎么去实现的,虽然类库我稍微混淆了一下 不过你们要去学习也不
是很困难,不过我是懒得去讨论在下层怎么实现的 DLL是没有打入版权的信息,很
简单你在属性中看不到任何信息,除了一个内部名称之外没有任何信息,所以你不
必担心 下面是解释InlineHook中导出的函数接口及释义。
InlineHook.GetProcAddress(string strLibraryName, string strMethodName) // 取函数地址(库文件, 函数名)
InlineHook.GetProcAddress(System.Delegate d) // 取函数地址(有效委托)
InlineHook.Install(System.IntPtr oldMethodAddress, System.IntPtr newMethodAddress) // 安装钩子(源函数地址, 新函数地址)
InlineHook.Resume() // 恢复钩子
InlineHook.Suspend() // 挂起钩子
InlineHook.Uninstall() // 卸载钩子
Sample:
CAT(inline-hook) http://pan.baidu.com/s/1kTKjFPt // 示例地址含类库
每个版本文件夹中都包含x86 / x64两份不同的类库,如果使用本类库有疑惑的地方可以在本人下方留言。
C# inline-hook / api-hook的更多相关文章
- HOOK API (一)——HOOK基础+一个鼠标钩子实例
HOOK API (一)——HOOK基础+一个鼠标钩子实例 0x00 起因 最近在做毕业设计,有一个功能是需要实现对剪切板的监控和进程的防终止保护.原本想从内核层实现,但没有头绪.最后决定从调用层入手 ...
- HOOK API 在多线程时应该注意的问题点
在使用INLINE HOOK API实现对系统API的拦截时,正常情况下并没有太大问题,但一旦涉及到多线程,不管是修改IAT还是JMP,2种方法均会出现不可预料的问题,特别是在HOOK一些复杂的大型系 ...
- Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
catalogue 1. 引言2. 使用注册表注入DLL3. 使用Windows挂钩来注入DLL4. 使用远程线程来注入DLL5. 使用木马DLL来注入DLL6. 把DLL作为调试器来注入7. 使用c ...
- 转 BHO API HOOK Wininet基于IE编程的一些资料
BHO原理:推荐vc base中的文章: 如何使用BHO定制你的Internet Explorer浏览器 API HOOK的基本原理:推荐C++ builder 研究中的文章: API Hook基 ...
- 10分钟API Hook MessageBox
10分钟API Hook MessageBox 分类: C++2012-04-12 22:52 877人阅读 评论(4) 收藏 举报 hookwinapidllthreadpython编程 转载注明出 ...
- 程序破解之 API HOOK技术 z
API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socke ...
- API HOOK
API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...
- 汇编Ring 3下实现 HOOK API
[文章标题]汇编ring3下实现HOOK API [文章作者]nohacks(非安全,hacker0058) [作者主页]hacker0058.ys168.com [文章出处]看雪论坛(bbs.ped ...
- API HOOK技术
API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...
- API Hook完全手册
文章来源: http://blog.csdn.net/atfield 原文作者: ATField 整理日期: 2008-07-16 发表评论 字体大小: 小 中 大 注:本文是根据我两年前写的一个 ...
随机推荐
- C++中类的前向声明的用法
原创文章,未经博主允许禁止转载. C++的类可以进行前向声明.但是,仅仅进行前向声明而没有定义的类是不完整的,这样的类,只能用于定义指针.引用.以及用于函数形参的指针和引用.而不能定义对象(因为此时编 ...
- HDU 1166 敌兵布阵 (数状数组,或线段树)
题意:... 析:可以直接用数状数组进行模拟,也可以用线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo ...
- Poj-1088-滑雪
此题为动态规划加搜索型题目 采用记忆化搜索的方式 dp[i][j]表示从坐标为 i,j 开始滑所能达到的最长距离 则dp[i][j]=max(dp[i-1][j],dp[i][j+1],dp[i+1] ...
- Nginx学习笔记(八) Nginx进程启动分析
Nginx进程启动分析 worker子进程的执行循环的函数是ngx_worker_process_cycle (src/os/unix/ngx_process_cycle.c). 其中,捕获事件.分发 ...
- [ACM_图论] Highways (变形说法的最小生成树)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28972#problem/C 题目给出T种情况,每种情况有n个城镇,接下来每一行是第i个城 ...
- Redis教程(六):Sorted-Sets数据类型
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/133.html 一.概述: Sorted-Sets和Sets类型极为相似, ...
- Unexpected namespace prefix "xmlns" found for tag Linear Layout
原文地址http://blog.csdn.net/taxuexumei/article/details/41523419 今天遇到的问题,,,保存到博客里,下回遇到找博客就行了,,,,,, 今天在制作 ...
- .net使用cefsharp开源库开发chrome浏览器(一)
一.背景 公司现在使用.NET技术,有web组.有winfrom桌面组.而这两组团队业务部分有分多相似的地方,使用的数据源也是相同的,以此造成两组团队之间做了很多彼此都已经做过的工作. 有什么办法使得 ...
- atitit.GMT UTC Catitit.GMT UTC CST DST CET 星期 月份 节日 时间的不同本质and起源
atitit.GMT UTC Catitit.GMT UTC CST DST CET 星期 月份 节日 时间的不同本质and起源 1. GMT(Greenwich Mean Time)是格林尼治平时 ...
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...