分析QQ.exe资源目录结构
来源:互联网 发布:苹果怎样申请网站域名 编辑:程序博客网 时间:2024/06/05 10:26
看完视频想自己动手实践一下看看QQ.exe的PE格式
2012版的qq中protect版本和本来的版本是有大的不一样的。这里从两个exe文件大小的不同就可以看出来了。这里就先分析一下普通的qq.exe文件好了。
首先用Resource Hacker工具查看一下资源文件,发现在图标这一栏里面有8只大小不一样的企鹅。。。。。。
我这里第4只好像特别大。。。。这里就先分析下第1只企鹅的图标资源吧。。。。
关于资源表这里就不特别讲解了,大家可以参考一下小甲鱼的课件,讲的很清楚的哦。
http://www.fishc.com/a/shipin/jiemixilie/_PExilie_/1051.html
这里就把课件里面的一张最重要的图片贴出来吧:
然后自己就跟着这张图片还有小甲鱼的讲解自己也演练了一遍:
/*qq.exe resource analyseby Miibotree*///块对齐和文件对齐都是1000H 所以这里的RVA和offset是一样的,方便了计算//资源表的RVA是1A000 大小是10790//第四个区块.rsrc的起始地址是1A000 大小是10790 说明这个区块里面存的全部都是资源//然后用WinHex打开qq.exe正式来分析一下//第一层目录 资源类型typedef struct _IMAGE_RESOURCE_DIRECTORY { DWORD Characteristics; 00 00 00 00H DWORD TimeDateStamp; 00 00 00 00H WORD MajorVersion; 00 04H WORD MinorVersion; 00 00H WORD NumberOfNamedEntries; 00 00H WORD NumberOfIdEntries; 00 04H//这里说明有4种资源类型// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { union { struct { DWORD NameOffset:31; DWORD NameIsString:1; }; DWORD Name; WORD Id; }; union { DWORD OffsetToData; struct { DWORD OffsetToDirectory:31; DWORD DataIsDirectory:1; }; };} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;//name OffsetToData//一。1 0000 0003H 8000 0030H 图标 8(十六进制) = 1000(二进制)最高位为1,低31位作为指针使用//一。2 0000 000EH8000 0080H 版本信息//一。30000 0010H8000 0098H qq自定义的//一。40000 0018H8000 00B0H 应该也是qq自定义的//一。5 0000 0000H0000 0000H 最后一个全部都是0表示结束了吧//第一层结束,我们首先追踪一下qq图标吧,所以先飞到第二层去了,哈哈//第二层目录 资源ID//一.1.二typedef struct _IMAGE_RESOURCE_DIRECTORY { DWORD Characteristics; 00 00 00 00H DWORD TimeDateStamp; 00 00 00 00H WORD MajorVersion; 00 04H WORD MinorVersion; 00 00H WORD NumberOfNamedEntries; 00 00H WORD NumberOfIdEntries; 00 08H//这里说明有8个图标// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;//一。1.二。1-8//name OffsetToData//0000 0001H8000 00C8H//0000 0002H8000 00E0H//0000 0003H8000 00F8H//0000 0004H8000 0110H//0000 0005H8000 0128H//0000 0006H8000 0140H//0000 0007H8000 0158H//0000 0008H8000 0170H//0000 0000H0000 0000H//第二层结束,飞到第三层去吧,呵呵呵呵//第三层目录 资源代码页//一。1.二。1。三typedef struct _IMAGE_RESOURCE_DIRECTORY { DWORD Characteristics; 00 00 00 00H DWORD TimeDateStamp; 00 00 00 00H WORD MajorVersion; 00 04H WORD MinorVersion; 00 00H WORD NumberOfNamedEntries; 00 00H WORD NumberOfIdEntries; 00 01H//这里说明只有一个资源代码页// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;//一。1.二。1。三。1//name OffsetToData//0000 0409H 0000 01D0H//0000 0000H 0000 0000H//第三层结束,离我们的最终胜利越来越近了,加油啊啊啊啊啊//节点 资源数据指针//一。1.二。1。三。1。四IMAGE_RESOURCE_DATA_ENTRY STRUCT OffsetToData DWORD ? ; 资源数据的RVA 00 01 A2 80H Size DWORD ? ; 资源数据的长度 00 00 01 28H CodePage DWORD ? ; 代码页, 一般为000 00 04 E0H Reserved DWORD ? ; 保留字段00 00 00 00HIMAGE_RESOURCE_DATA_ENTRY ENDS//节点 资源数据指针结束,现在终于可以进入我们的最终小企鹅图标的庐山真面目了。。。//图标资源//1A280 - 1A3A8
最后得到了图标资源的位置。用eXeScope打开看一下,发现是一样的。呵呵,简单就分析到这里了。
- 分析QQ.exe资源目录结构
- android 之项目的目录结构分析与资源引用
- CocoStudio资源目录结构
- exe文件结构分析
- 分析exe文件结构
- QQ目录下文件分析
- android 目录结构分析
- Android目录结构分析
- android目录结构分析
- Android 目录结构分析
- android目录结构分析
- ORACLE 目录结构分析
- 【discuzX2】目录结构分析
- Android目录结构分析
- Laravel目录结构分析
- edusoho目录结构分析
- uboot目录结构分析
- Linux目录结构分析
- 开源框架Core Plot的使用
- 利用多线程提高程序性能(for Android)
- 类函数调用自身的回调函数
- jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- 用于分析table的内存使用情况space_usage
- 分析QQ.exe资源目录结构
- WinCE的API函数WriteFile和ReadFile函数
- 总想说点儿让人拍案叫绝的设计
- 如何学习Windows Phone开发
- 封装自己的控件库:iPhone静态库的应用
- 获取本地通讯录的所有联系人的信息
- 关于fushioncharts的Column2d美化图
- 总想说点儿让人拍案叫绝的设计
- GridView(九宫图)的使用介绍