exe解析
IMAGE_DOS_HEADER size 0x40
e_lfanew 0xe0
当中有0xA0的间隔数据。
IMAGE_NT_HEADERS size 0xf8
Section Header紧接着NT_HEADERS
通过IMAGE_NT_HEADERS结构中的Section Number,解析所有的Section Header
每个Section Header中记录了Section Data的真实文件偏移与Section Data Size。
这里有一个奇怪的问题,按道理来说,Section Header后紧接着就是Section Data,但在我的测试文件中,却不是,Section Header完成后文件偏移为0x2f0,而最开始有数据的Section Data起始偏移是在0x400,这中间差了不少了,具体存放了什么数据,没有找到说明。
不过分析Section Data的偏移以及大小发现,Section Data数据后没有其它数据了,SectionData是文件最后的数据。
现在总结下,问题就两个:
1、 Section Header与Section Data中间的数据是什么?
2、 Section Data数据如何解析?
整理下最终的exe文件结构布局
IMAGE_DOS_HEADER
空闲部分
IMAGE_NT_HEADERS 地址为 IMAGE_DOS_HEADER中e_lfanew字段值
IMAGE_SECTION_HEADER
IMAGE_SECTION_HEADER
…
IMAGE_SECTION_HEADER Section Header数量通过IMAGE_NT_HEADERS 中的FileHeader.NumberOfSections确定
未知
SectionData
…
Section Data 这里的数据通过IMAGE_SECTION_HEADER记录的文件指针偏移以及大小读取
示例C代码:
#include<iostream>
#include<Windows.h>
#include<vector>
int main(intargc,char** argv)
{
FILE*fp = fopen(argv[1],"rb");
if(!fp)
{
std::cerr<<"Readfile error!\n";
return-1;
}
fseek(fp,0,SEEK_END);
intiLen = ftell(fp)+1;
fseek(fp,0,SEEK_SET);
char*pC = new char[iLen];
intiRead = fread(pC,1,iLen,fp);
fclose(fp);
//解析
IMAGE_DOS_HEADER* m_pDOSHeader= (IMAGE_DOS_HEADER*)(pC);
intiDosHeaderSize = sizeof(IMAGE_DOS_HEADER);
IMAGE_NT_HEADERS* m_pNTHeaders32= (IMAGE_NT_HEADERS *) ((BYTE*)m_pDOSHeader +
m_pDOSHeader->e_lfanew);
intiNTHeaderSize = sizeof(IMAGE_NT_HEADERS);
intiSectionStart = m_pDOSHeader->e_lfanew + iNTHeaderSize;
std::vector<IMAGE_SECTION_HEADER*>vecSectionHeaders;
for(inti=0; i<m_pNTHeaders32->FileHeader.NumberOfSections; i++)
{
IMAGE_SECTION_HEADER*pSectionHeader = (IMAGE_SECTION_HEADER*)((BYTE*)m_pDOSHeader +
iSectionStart+ i*sizeof(IMAGE_SECTION_HEADER));
vecSectionHeaders.push_back(pSectionHeader);
}
intiCurPos = iSectionStart +m_pNTHeaders32->FileHeader.NumberOfSections*sizeof(IMAGE_SECTION_HEADER);
return0;
}
exe解析的更多相关文章
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q115-Q117)
Question 115You create a timer job.You need to debug the timer job.To which process should you attac ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q54-Q56)
Question 54You create custom code to import content to SharePoint sites.You create a custom site def ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q40-Q44)
Question 40You need to send a single value from a consumer Web Part to a provider Web Part.Which int ...
- c# 借助cmd命令解析apk文件信息
借助aapt.exe文件 aapt.exe 解析apk包信息cmd命令: aapt dump badging *.apkaapt d badging *.apk >1.txt(保存成1.txt文 ...
- QQ网页链接打开本地QQ.exe原理
一.观察现象 QQ推广上有相关文档 http://shang.qq.com/v3/widget.html 新建一个html,点击链接就会启动本地QQ. <html> <body> ...
- PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Thread safe(线程安全)是运行在Apache上以模块的PHP上,如果你以CGI的模式运行PHP,请选择非线程安全模式(non-thread safe). 1. VC6与VC9的区别: VC6 ...
- [Android Pro] Android签名与认证详细分析之一(CERT.RSA剖析)
转载自:http://www.thinksaas.cn/group/topic/335450/ 一.Android签名概述 我们已经知道的是:Android对每一个Apk文件都会进行签名,在Apk文件 ...
- win2003 服务器安全设置详细介绍
第一步:一.先关闭不需要的端口 我比较小心,先关了端口.只开了3389 21 80 1433(MYSQL)有些人一直说什么默认的3389不安全,对此我不否认,但是利用的途径也只能一个一个的穷举爆破, ...
- PHP版本中的VC6,VC9,VC11,TS,NTS区别
以windows为例,看看下载到得php zip的文件名 php-5.4.4-nts-Win32-VC9-x86.zip VC6:legacy Visual Studio 6 compiler,是使用 ...
随机推荐
- 虚拟主机的配置、DNS重定向网站
虚拟主机的配置:我用的是localhost本地测试站点+Apache环境 第一步:找到Apache安装目录下的httpd-vhosts.conf文件,然后启用这个文件,如何启用这个文件呢?当然是在ht ...
- 基于visual Studio2013解决C语言竞赛题之0704字符串长度
题目
- FastDFS的学习与使用(大量帖子)
http://www.oschina.net/p/fastdfs http://bbs.chinaunix.net/forum-240-1.html
- Shell脚本笔记
如何查询文件里的某个字符串? grep “字符串” 文件 例:grep "abc" tmp.txt 如何将查询出来的内容赋给变量? str=$(grep "abc ...
- linux下抓取网页快照
1.下载 https://code.google.com/p/wkhtmltopdf/downloads/detail?name=wkhtmltoimage-0.11.0_rc1-static-i38 ...
- 基于visual Studio2013解决面试题之1306奇偶位数交换
题目
- VB.net总结
.NET视频差点儿相同用时一周结束,总体感觉就是"走耳不走脑".刚開始看视频理解起来有一点困难,台湾口音以及台湾与大陆计算机术语的差异,让我把前几集相当于直接忽略过了(建议打算看这 ...
- Google的Java经常使用类库 Guava
Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包括很多 Google 核心的 Java 经常使用库. 1. 基本工具 [Basic utilities] 让使用Java ...
- linux命令: sort
参考 linux sort 命令详解 http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html 1 sort的工作原理 sort将文 ...
- CSS3实现8种Loading效果【第二波】
原文:CSS3实现8种Loading效果[第二波] 今晚吃完饭回宿舍又捣鼓了另外几种Loading效果,老规矩,直接“上菜“…… 注:gif图片动画有些卡顿,非实际效果! PS:若要转载请注明出处,尊 ...