CFF Explorer是一款优秀的PE资源工具,使用CFF Explorer可以方便地查看和编辑PE(EXE/DLL)资源,类似PE资源工具有eXeScope、ResHacker等。
使用CFF Explorer可以查看和修改PE文件的资源,可以查看dll文件可供调用的函数,修改函数入口地址达到制造崩溃屏蔽功能的目的。CFF Explorer具有类似DEPENDS的依赖分析功能/hex编辑器/快速反汇编等功能,详见下图:
PE(Portable Execute)文件被称为可移植的执行体,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)
Windows 下实现API HOOK的方法
关于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的技术在Win系统中已经不能简单的使用了,Win系统在很多方面都加强了安全性,限制了很多的API的调用,那么如何简单的来做到DLL注入和API HOOK呢?这里就要介绍一个大名鼎鼎的工具:CFF Explorer,是Explorer Suite(http://www.ntcore.com/)中的一个工具 用于PE文件的修改,同时也可以对原PE文件增加函数输入表,我们只要写好一个DLL文件,然后实现一个导出函数,就可以用这个工具对PE文件增加对自己的DLL的加载,下面这个操作就是让notepad.exe加载rand.dll的操作:
只要Rebuild Import Table,然后再Save/Save As就可以保存新的文件。这样你的dll就自动的被加载了,然后再DLL加载的时候实现API HOOK就在功告成了。
使用这个技术可以做很多“坏事”,比如刚才提到的截获进程的网络收发数据,还有就是对软件的破解或者去时除限制,举例:假设一个软件是试用软件,试用7天,最笨的办法就是改本机时间,但如果用API HOOK技术就可以很容易做到,可以先用CFF Explorer或者Dependency查看一下该软件是调用 哪个函数来获取系统当前时间的,假如是GetLocalTime函数,那么我就可以截获GetLocalTime,返回一个永不过期的时间,然后利用CFF Explorer把自己的DLL增加到软件的函数导入表,这样不用改系统时间就去除了软件的试用期限。
郑重提示:利用API HOOK可以做很多你想做的事情,但我觉得自己研究使用可以,千万不要去传播或者谋取利益,否则后果很严重的。