win32下PE文件分析之节表
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,接上一篇的win32下PE文件分析之NT头(一).FileBuffer与ImageBuffer(1).FileBuffer是将文件原原本本的读入申请的内存区域中,那部分区域就是FileBuffer,里
千家信息网最后更新 2026年10月31日win32下PE文件分析之节表

接上一篇的win32下PE文件分析之NT头
(一).FileBuffer与ImageBuffer
(1).FileBuffer是将文件原原本本的读入申请的内存区域中,那部分区域就是FileBuffer,里面的内容与磁盘中的文件一模一样.如下图:
(2).ImageBuffer是按照一定规则加载到内存中的某个区域,并且通过一定的处理,能立刻执行的区域,那部分区域叫做ImageBuffer.其大小就是可选PE头中的SizeOfImage.结构如下图:

(3).二者之间的关系:
ImageBuffer是按照文件FileBuffer中给定的条件,按照一定的规定加载到ImageBuffer.如果内存对齐与文件对齐大小一样,则ImageBuffer几乎是FileBuffer的一份完整拷贝(图中×××部分是节表中的Misc).
(二).节表:
从上面的图中,可以看到节表的位置就挨着可选PE头的,所以只要从FileBuffer的起始位置加上几个头的大小,就是节表的位置.一个PE文件中,节表的数量可能不一样.各个节表是紧挨着的.以下是Visual C++ 6.0中winnt.h中定义的节表结构:
#define IMAGE_SIZEOF_SHORT_NAME 8typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; //该节的名字 union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; //该节在内存中对齐前的大小 DWORD VirtualAddress; //该节在ImageBuffer中的偏移 DWORD SizeOfRawData; //该节在文件中对齐后的大小 DWORD PointerToRawData; //该节在在文件中的偏移 DWORD PointerToRelocations; DWORD PointerToLinenumbers; WORD NumberOfRelocations; WORD NumberOfLinenumbers; DWORD Characteristics; //该节的属性(比如是否可读,是否可写...)} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;(三).遍历节表:
通过循环遍历notepad.exe中的节表,节的数量为标准PE头中NumberOfSections的值,代码如下:
section.h:
void OutputSections(void* buffer){ void* buf = buffer; IMAGE_DOS_HEADER* pdos = (IMAGE_DOS_HEADER*)buf; IMAGE_FILE_HEADER* pfile = (IMAGE_FILE_HEADER*)((unsigned char*)buf + pdos->e_lfanew + 0x4); //定位节表在文件缓冲中的位置 IMAGE_SECTION_HEADER* psec = (IMAGE_SECTION_HEADER*)((unsigned char*)buf + pdos->e_lfanew + 0x4 + 0x14 + pfile->SizeOfOptionalHeader); //遍历节表 for(int sec_num = 1; sec_num <= pfile->NumberOfSections; sec_num++) { printf("\nSection%d: %s\n", sec_num, psec->Name); printf("Misc: %#X\n", psec->Misc); printf("VirtualAddress: %#X\n", psec->VirtualAddress); printf("SizeOfRawData: %#X\n", psec->SizeOfRawData); printf("PointToRawData: %#X\n", psec->PointerToRawData); printf("Charactoeristcs: %#X\n", psec->Characteristics); psec++; }}注释掉解析其他头的函数,运行结果如下图:
(四).说明:
上面的代码中只输出了部分信息,主要是一些比较有用的信息.
节表中最后一个成员的值Characteristics,决定了这个节的权限.下图是其属性的对照表:
有空会继续更新.有任何建议请留评论.
文件
区域
大小
位置
内存
部分
就是
代码
信息
属性
数量
结构
面的
图中
偏移
分析
一模一样
原原本本
下图
个头
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
互联网科技公司经营范围
为想互联网科技怎么样
重生之互联网科技帝国
平安科技 互联网
致骋互联网科技
卓越科技互联网 招聘
联恩商钥互联网科技有限公司
互联网 科技馆
农村开互联网科技讲堂
茂名市互联网科技产业园
湖南诚度互联网科技有限公司
阿大互联网科技有限公司
互联网科技商业
天津腾达互联网科技有限公司
迪庆互联网科技招生
高科技互联网套路
互联网高科技行业有哪些企业
中国主要互联网科技公司
株洲百竞科技的互联网营销顾问
互联网科技保险
金诺互联网科技
互联网 新科技
互联网科技寓意
来此购互联网科技有限公司
徐州市互联网科技有限公司
互联网科技公司营业执照怎么办理
锡山区互联网智能科技产品供应
富国互联网科技002692
互联网科技自媒体灵感