加壳与脱壳-添加壳代码的几种方式

上一次讲的方式是在区段头后面继续添加区段头,但是万一区段头的后面没有连续的空间怎么办

所以这里有好几种方式来处理

 

 

利用Dos Stub空间

PE文件里面有一段Dos Stub空间,没有什么用,所以可以利用起来作为加壳处理

可以通过把本来的

 

 

这一截(PE头+区段头)全部往上偏移覆盖掉DOS Stub的空间,然后后面的区段头会多出来一截空间,就可以利用这多出来的一截空间再开辟区段头,后面再开辟区段来处理

合并区段

将区段头合并为只有一个,直接往后面添加区段,到时候要访问的区段就可以直接在后面添加就好了

 

 

1 读取PE文件到内存中,将PE文件按照内存对齐(因为内存对齐是要大于文件对齐的,不按内存对齐保存下来,就会导致读取的时候没有把合并了的区段安装内存对齐,因为一个区段头对应的是一个区段,对应它如何对齐,这里合并成了一个区段头,所以需要手工来对齐)

2 删除除第一个区段头以外的区段头信息

3 修改第一个区段的头信息

4 修改numberofsections

5 保存修改后的pe文件