CFF Explorer实现Windows 7下API HOOK

    关于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的操作:

CFF Explorer实现Windows 7下API HOOK_第1张图片

    只要Rebuild Import Table,然后再Save/Save As就可以保存新的文件。这样你的dll就自动的被加载了,然后再DLL加载的时候实现API HOOK就在功告成了。 使用这个技术可以做很多“坏事”,比如刚才提到的截获进程的网络收发数据,还有就是对软件的破解或者去时除限制,举例:假设一个软件是试用软件,试用7天,最笨的办法就是改本机时间,但如果用API HOOK技术就可以很容易做到,可以先用CFF Explorer或者Dependency查看一下该软件是调用 哪个函数来获取系统当前时间的,假如是GetLocalTime函数,那么我就可以截获GetLocalTime,返回一个永不过期的时间,然后利用CFF Explorer把自己的DLL增加到软件的函数导入表,这样不用改系统时间就去除了软件的试用期限。


你可能感兴趣的:(PE文件)