我查阅了一下相关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函数,不信我们可以试

  1. [DllImport("user32", EntryPoint = "MessageBoxW", CharSet = CharSet.Unicode)]
  2. public static extern int MessageBox(IntPtr hWnd, string lpText, string lpCaption, uint uType);
  3. [STAThread]
  4. static void Main(string[] args)
  5. {
  6. InlineHook ich = new InlineHook();
  7. ich.Install(ich.GetProcAddress("user32", "MessageBoxW"), ich.GetProcAddress(new MessageBoxW(CB_MessageBox)));
  8. // MessageBox.Show("Hello world", "Advapi32");
  9. MessageBox(IntPtr.Zero, "Hello world", "Advapi32", 0);
  10. Console.ReadKey(false);
  11. }

试,上面的代码执行后结果与最上面的相同。本类库提供分别需求.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的更多相关文章

  1. HOOK API (一)——HOOK基础+一个鼠标钩子实例

    HOOK API (一)——HOOK基础+一个鼠标钩子实例 0x00 起因 最近在做毕业设计,有一个功能是需要实现对剪切板的监控和进程的防终止保护.原本想从内核层实现,但没有头绪.最后决定从调用层入手 ...

  2. HOOK API 在多线程时应该注意的问题点

    在使用INLINE HOOK API实现对系统API的拦截时,正常情况下并没有太大问题,但一旦涉及到多线程,不管是修改IAT还是JMP,2种方法均会出现不可预料的问题,特别是在HOOK一些复杂的大型系 ...

  3. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术

    catalogue 1. 引言2. 使用注册表注入DLL3. 使用Windows挂钩来注入DLL4. 使用远程线程来注入DLL5. 使用木马DLL来注入DLL6. 把DLL作为调试器来注入7. 使用c ...

  4. 转 BHO API HOOK Wininet基于IE编程的一些资料

      BHO原理:推荐vc base中的文章: 如何使用BHO定制你的Internet Explorer浏览器 API HOOK的基本原理:推荐C++ builder 研究中的文章: API Hook基 ...

  5. 10分钟API Hook MessageBox

    10分钟API Hook MessageBox 分类: C++2012-04-12 22:52 877人阅读 评论(4) 收藏 举报 hookwinapidllthreadpython编程 转载注明出 ...

  6. 程序破解之 API HOOK技术 z

    API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socke ...

  7. API HOOK

    API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...

  8. 汇编Ring 3下实现 HOOK API

    [文章标题]汇编ring3下实现HOOK API [文章作者]nohacks(非安全,hacker0058) [作者主页]hacker0058.ys168.com [文章出处]看雪论坛(bbs.ped ...

  9. API HOOK技术

    API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...

  10. API Hook完全手册

    文章来源: http://blog.csdn.net/atfield 原文作者: ATField 整理日期: 2008-07-16 发表评论 字体大小: 小 中 大   注:本文是根据我两年前写的一个 ...

随机推荐

  1. 亲子之间,在于看懂,无关耐心zz

    每当有人告诉我:『你对孩子真有耐心!』时,我总会想起我的金项链,当越来越多人说的时候,我就越想找出来,我翻箱倒柜的找,越心急却越找不到,那 一条金项链从我十八岁那一年一直戴在我的脖子上一直到女儿两岁, ...

  2. IntelliJ IDEA 目录技巧

    IntelliJ IDEA的Web应用的目录结构 Ø 目录图: Ø 目录解释: 开发目录 目录名称 描述 Test 工程名称 lib Jar包的存放目录 src 源文件也就是文件(类,资源文件)存放的 ...

  3. 关系型数据库与NOSQL(转)

    出处:http://www.cnblogs.com/chay1227/archive/2013/03/17/2964020.html 关系型数据库把所有的数据都通过行和列的二元表现形式表示出来. 关系 ...

  4. android中 EditTex t的 inputType 属性

    //文本类型,多为大写.小写和数字符号    android:inputType="none"    android:inputType="text"    a ...

  5. office2003-2007 绿色版 出错 文件丢失(未解决)

    - 这个版本是我大学时候(2012)年一直用到现在的版本:目录结构如下: 原来一直在32位系统中使用,没有出错过; - 刚装的两台电脑系统分别为 Win7Pro 和 Win10Pro ,都是64位的: ...

  6. iOS设置UISearchBar光标的颜色

    [[UISearchBar appearance] setTintColor:[UIColor blackColor]];

  7. [转]oracle pump expdp impdp使用

    用expdp或impdp命令时, 可暂不指出用户名/密码@实例名 as 身份, 然后根据提示再输入,  如:     expdp schemas=scott DIRECTORY=dpdata  dum ...

  8. 6.9 Android 优缺点

    Android N主要在运行时和图形处理上做了更新. 运行时间上,Android N对编译器进行了优化,软件的运行时间提升了3-6倍.引入了一个全新的JIT编译器,使得App安装速度快了75%,编译代 ...

  9. 使用PPT绘制96孔板

    什么?96孔板就是Ctrl+C然后再Ctrl+V? 那你用PPT给我画一个384孔板吧……(学生物的应该都知道这货吧?示意图不少用吧?) 还不够麻烦?那就试试基因芯片吧…… 疯掉了有木有? 那么,看看 ...

  10. day4----装饰器

    装饰器本质是函数,装饰其他函数,就是为其他函数添加附加功能. 原则:1.不能修改被装饰的函数的源代码           2.不能修改被装饰的函数的调用方式   实现装饰器 知识储备 1.函数即“变量 ...