一.Detours库的来历及下载: Detours库类似于WTL的来历,是由Galen Hunt and Doug Brubacher自己开发出来,于99年7月发表在一篇名为<Detours: Binary Interception of Win32 Functions.>的论文中.基本原理是改写函数的头5个字节(因为一般函数开头都是保存堆栈环境的三条指令共5个字节:8B FF 55 8B EC)为一条跳转指令,直接跳转到自己的函数开头,从而实现API拦截的.后来得到MS的支持并在其网站上提供…
1.附加目标进程, 2.CREATE_PROCESS_DEBUG_EVENT附加事件中将目标api处设置为0xcc(INT 3断点) 3.EXCEPTION_DEBUG_EVENT异常事件中,首先判断是否为EXCEPTION_BREAKPOINT 断点异常,然后GetThreadContext.SetThreadContext 进行相关修改操作 #include <iostream> #include "windows.h" #include "stdio.h&q…
消息HOOK 原理: 1. 用户输入消息,消息被放到系统消息队列. 2. 程序发生了某些需要获取输入的事件,就从系统消息队列拿出消息放到程序消息队列中. 3. 应用程序检测到有新的消息进入到程序消息队列中后,调用相应的事件去处理该消息. 所以在系统消息队列与程序消息队列的中间安装hook,即可获取消息队列中的信息. 安装: SetWindowsHookEx(键盘消息(WH_xxx),Hook函数(处理键盘输入的函数),句柄(hook函数所在的DLL的句柄),线程ID(要hook的线程ID,0为所…
前言 又到了一章的总结,这章里的内容.是把我从一个代码的使用者,如何换位成一个代码的编写者.如何让别人用自己的代码更容易,不用去注意太多的无用细节,不用记住冗长的函数名.在使用API时怎样避免使用者会出现理解的偏差.如何处理一些特殊敏感的值,参数如何设置可以更好地自说明,如何减少API对状态的依赖,如何使API更加灵活,更利于用户的编写.下面一一展开介绍,对应的也会说明每条对应希望给到的是哪方面的建议! 第53条:保持一致的约定 个人总结 不要去创造一个独特的API,要使用一些大家惯用的词汇,参…
[文章标题]汇编ring3下实现HOOK API [文章作者]nohacks(非安全,hacker0058) [作者主页]hacker0058.ys168.com [文章出处]看雪论坛(bbs.pediy.com) ==================[ 汇编ring3下实现HOOK API ]===================== Author: nohacks                                                  Emil: kker.cn@1…
Wordpress作为全球应用最广泛的个人博客建站工具,有很多的技术架构值得我们学习推敲.其中,最著名最经典的编码技术架构就是采用了hook的机制. hook翻译成中文是钩子的意思,单独看这个词我们难以理解这个hook机制(即钩子机制)是什么意思.那么笔者就用大白话以通俗易懂方式给大家讲解一下什么是hook机制,以及用原生PHP函数编写实现简单实例. 大白话解释:以Wordpress为例,它的hook机制就是在网页加载时一起加载了很多hook变量,也就是钩子变量,这些变量作用是绑定相关的函数,只…
/*使用函数库(JAVA API) * 在JAVA的API里类被封装在一个个的package,要使用package的类之前必须 * 要知道这个类属于哪个package * 引用类方式: * 1.通过import关键字把类的包名引用到代码里 * 2.在类的定义时用类的全名来定义*/ public class Hanshuku { public static void main(String[] args){ java.util.ArrayList<Hanshuku> pigList = new…
在使用INLINE HOOK API实现对系统API的拦截时,正常情况下并没有太大问题,但一旦涉及到多线程,不管是修改IAT还是JMP,2种方法均会出现不可预料的问题,特别是在HOOK一些复杂的大型系统软件时,会被时不时的一个内存错误搞得心浮气躁. HOOK API数量越多,需要注意的内容越多,最近实现HOOK FileSystem API,由于是Kernel32中的函数,所有涉及到文件(filename,filehandle)的API均要被HOOK,同时需要在HOOK中实现overlapped…
HOOK API(四) —— 进程防终止 0x00        前言 这算是一个实战吧,做的一个应用需要实现进程的防终止保护,查了相关资料后决定用HOOK API的方式实现.起初学习HOOK API的起因是因为要实现对剪切板的监控,后来面对进程保护这样一个需求时,综合各方资料并自己动手实现HOOK OpenProcess() 和 TerminateProcess() 来从调用层实现进程的防终止.下面将进一步介绍实现的过程,也算是对学习的一个总结与实战. 主要参考:http://www.cnbl…
HOOK API(三) —— HOOK 所有程序的 MessageBox 0x00 前言 本实例要实现HOOK MessageBox,包括MessageBoxA和MessageBoxW,其实现细节与HOOK API(二)中介绍的基本类似,唯一不同的是,本实例要实现对所有程序的HOOK MessageBox,即无论系统中哪一个程序调用MessageBox都会被重定向到我们实现的新的API中. 之前说过,在Windows中,每个进程都有自己的地址空间,进程不能调用别的进程中的函数.这里涉及到一个关键…