一、前言 |
不知大家用过exescope没有,那是日本鬼子写的一个很有用的东西,它能把exe等pe格式(portable executable)文件的资源(图标、位图、对话框、声音等等)分析出来,并能改写回去。当然vc的ide也有类似功能。大家是不是觉得很神秘?其实只要弄清了pe文件的结构,你也可以写一个类似的工具出来。下面是我近 来对pe文件的分析经验,给大家作参考。同时希望看到有中国人能写出比日本鬼子更牛的分析工具来。 |
|
|
二、重要的数据结构 |
PE格式简要说明:(更详细的资料见http://vcangle.8u8.com文件格式专页)
PE文件总结构如下表: |
|
|
就是DATA了。
|
三、取资源主要思路
先要判断是否PE文件。文件头两byte应为0x4d5a即("MZ"),然后到地址0x3c中读出PE文件头(_IMAGE_NT_HEADERS)。判断文件头结构的Signature是否为17744(即"PE\0\0")。
读出节表(_IMAGE_SECTION_HEADER),判断有没有资源节。我采用了一个简单的方法:节表名为".rsrc\0\0"即是资源节。(注:据说该法不定可靠)
如有资源节,则读取资源目录(_IMAGE_RESOURCE_DIRECTORY)和资源入口(_IMAGE_RESOURCE_DIRECTORY_ENTRY)。资源在pe文件中处一树型结构中,可有三层。在资源目录根部,如果资源入口的资源名是一个id,那么它代表一种资源类型。否则,它指向下一层资源入口。(祥见例程)
读出具体资源的数据来。具体资源的入口(_IMAGE_RESOURCE_DATA_ENTRY)在就是资源树的叶子。它的OffsetToData成员指明了具体资源的物理位置。不过特别要注意的是,OffsetToData并不是具体资源在文件中的实际偏移,具体见我的例程。具体资源的长度则由Size成员指定。
导出bmp资源。pe文件里的bmp资源由BITMAPINFO部分和BITMAPDATA部分组成。我们只要为它构造一个文件头(BITMAPFILEHEADER),就可以写成bmp文件了。这里特别要注意的是BITMAPINFO的bmiColors成员是未定长的。你要为它
指明长度,以申请内存。
好了,我不说了,有什么不明白就看例程吧。 |
|
|
四、例子程序简介
我的例子程序基本实现了读取pe文件的资源信息,并能把位图显示、导出。其它资源的操作还在研究中。由于作者水平有限,在分析有些文件时可能会不成功。欢迎指正!主页: http://vcangle.8u8.com,邮箱:king_koo@163.net. |
五、参考资料
http://www.csdn.net/dev/Format/
http://mantousoft.51.net |
相关推荐
商业编程-源码-《把exe里面的资源通通取出来》配套源代码.zip
把exe里面的资源通通取出来,实现反编译
短信通通乐!MRP格式的!可以把短信用得很精彩发给朋友哦!
android tcp通通,里面内含一个Python写的服务器端脚本
把处理器看得通通透透全面了解CPU就这三招.pdf
"通通通"软件就能满足你的要求!!! 它是一个代理服务器协议转换软件,它能将基于 Socks 协议的请求转换为 HTTP 协议的请求,并通过你指定的 HTTP 代理服务器处理这些请求。软件配合 SocksCap(Permeo Security Driver)...
停车场方案停车场方案
通通是一款由盛大网络推出,基于通讯录的多人语音通话软件,它不仅提供通讯录的全部功能,还支持免费多人语音通话功能。通通操作简便,输入号码的同时会自动匹配拨打的联系人,并智能判断对方是否安装了通通软件。...
收集了很久,虽然有些外链资源已经不能发了,被封了,但是数量庞大,还是可以从中收集到一些,死马当活马医吧,2-3w,筛选下来也有不少. 外链资源涵盖了blog /bookmark/ frum
你有网管限制的烦恼(不能QQ,不能玩游戏)吗? 你想自由畅快的互联网冲浪吗?通通通软件就能满足你的要求!!! 它是一个代理服务器协议转换软件
更漂亮的界面,采用ASP+Html的技术,自动生成html页面,减轻服务器的负担管理员帐号和密码均为admin
通通透透了解Cookies.pdf 通通透透了解Cookies.pdf 通通透透了解Cookies.pdf
通通透透看交换机,一起学习。
busybox文件系统
autoconf-2.69
automake-1.15.1.tar
cmake
Service basics Connection Manager简称connman,connman是使用d-bus做为进程间通信机制来管理linux网络链接的一种软件