- 4
- 0
- 约9.04千字
- 约 8页
- 2016-08-17 发布于河南
- 举报
PE文件格式与API HOOK
对于windows低层编程来说,进行API拦截始终是一件让人激动的事,用自己的代码来改变其它程序的行为,还有比这个更有趣吗?而且,在实现API拦截的过程中我们还有机会去熟悉许多在RAD编程环境中很少接触的东西,如DLL远程注入、内存管理,PE文件格式等知识。许多商业软件,如金山词霸等词典软件,各种即时汉化软件、甚至一些网络游戏的外挂中都用到了这种技术,各种调试工具中多多少少也要用到这种技术。实现API拦截的一种方法是修改PE文件中的输入地址表。在32位windows中,无论是.EXE文件,还是.DLL文件都是采用PE文件格式,PE文件格式将程序所有调用的API函数的地址信息存放在输入地址表中,而在程序码中,对API的调用使用的地址不是API函数的地址,而是输入地址表中该API函数对应的地址。我们只要修改输入地址表中函数地址就可以拦截API了。首先我们来熟悉一下PE文件格式,由于PE文件格式本身比较复杂,涉及到的数据类型较多,所以在这里只介绍一部分内容。我已经画了一幅示意图,大致描绘出PE文件格式,其中有的结构中的数据是一个RVA,凡是这样数据在图中都已注明。PE文件是由一个DOS文件头开始的,紧接在它后面的是一个DOS stub,它们合在一起实际上是一个完整的DOS程序,在PE文件中提供它们最主要的目的是由于兼容性,如果我们在DOS中去执行一个win32程序,这个DOS程序就会显示
原创力文档

文档评论(0)