手动分析PE节表+代码实现

时间:2024-03-19 07:41:55

这篇文章用于自学记录与分享,需要有以下基础:
有PE结构基础
十六进制
winhex使用
C++语言

开始:EXE文件我们选择(C::\windows\system32\notepad.exe)
通过winhex打开notepad.exe????
手动分析PE节表+代码实现

手动分析PE节表+代码实现手动分析PE节表+代码实现
节表头 = DOS+4+PE标准头+可选PE 头 = 64+4+20+0xE0+0xE0-0x40(这里是垃圾数据,需要减掉)
手动分析PE节表+代码实现
我们主要注意的是节表的这几个重要数据:????
手动分析PE节表+代码实现
手动分析PE节表+代码实现
通过winhex手动寻找,很快就能找到所有的节表。节表的个数通过标准PE头的NumberOfSections来获取:手动分析PE节表+代码实现
这里 我通过记事本 来记录 手写PE节表的数据????:
手动分析PE节表+代码实现
手动分析PE节表+代码实现

最后一项的characteristics属性怎么理解呢?
我们需要一款软件PETool
手动分析PE节表+代码实现
网上下载,很简单,然后将notepad.exe 拖入到打开的PEtool中:
手动分析PE节表+代码实现
拉到最下面即:
手动分析PE节表+代码实现
这里就是属性所表达的含义: 比如

手动分析PE节表+代码实现
我们根据上图可以知道 这个属性对应的节表包含以下含义????:
手动分析PE节表+代码实现手动分析PE节表+代码实现
手动分析PE节表+代码实现
其他节表的属性,都可以通过上图查询。注:一般通过获取属性来确定该节表是什么节表,而不是通过Name属性来获取,因为Name可以被隐藏(通过特殊手段,如加壳之类的)

代码如下:
手动分析PE节表+代码实现

结果显示:
手动分析PE节表+代码实现
手写PE头节点:
手动分析PE节表+代码实现

一样。成功读取。

其实在后去节表位置的公式那里 ,垃圾数据是通过我实践减去的,正确的做法,不知道是不是这样,有疑问的朋友欢迎探讨!。