关于API HOOK,就是截获API调用的技术,在对一个API调用之前先执行自己设定的函数,根据需要可以再执行缺省的API或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socket api:recv,recvfrom, send, sendto等等,当然你可以用网络抓包工具,这里只介绍通过API HOOK的方式来实现,最基本的有两种方法:1.修改原函数的入口地址,就是修改PE文件输入函数地址表 2.不改变函数输入表,修改函数最开始的内存数据,增加JMP语句跳转到自己的函数,执行完后再恢复内存数据。关于API HOOK,就是截获API调用的技术,在对一个API调用之前先执行自己设定的函数,根据需要可以再执行缺省的API或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socket api:recv,recvfrom, send, sendto等等,当然你可以用网络抓包工具,这里只介绍通过API HOOK的方式来实现,最基本的有两种方法:1.修改原函数的入口地址,就是修改PE文件输入函数地址表 2.不改变函数输入表,修改函数最开始的内存数据,增加JMP语句跳转到自己的函数,执行完后再恢复内存数据.
使用JMP语句的方法是比较灵活的,所以通过API CreateRemoteThread 可以把自己的DLL注入到另一个进程,然后再使用JMP方法来实现API的截获,这种技术的另一个用处就是隐藏进程,很多病毒木马也是利用这个技术来隐藏自己,很难被发现和清除。
但是通过 CreateRemoteThread 注入DLL的技术在Win7系统中已经不能简单的使用了,Win7系统在很多方面都加强了安全性,限制了很多的API的调用,那么如何简单的来做到DLL注入和API HOOK呢?这里就要介绍一个大名鼎鼎的工具:CFF Explorer,是Explorer Suite(http://www.ntcore.com/)中的一个工具 用于PE文件的修改,同时也可以对原PE文件增加函数输入表,我们只要写好一个DLL文件,然后实现一个导出函数,就可以用这个工具对PE文件增加对自己的DLL的加载,下面这个操作就是让notepad.exe加载rand.dll的操作: