加壳与脱壳-添加壳代码的几种方式
上一次讲的方式是在区段头后面继续添加区段头,但是万一区段头的后面没有连续的空间怎么办
所以这里有好几种方式来处理
利用Dos Stub空间
PE文件里面有一段Dos Stub空间,没有什么用,所以可以利用起来作为加壳处理
可以通过把本来的
这一截(PE头+区段头)全部往上偏移覆盖掉DOS Stub的空间,然后后面的区段头会多出来一截空间,就可以利用这多出来的一截空间再开辟区段头,后面再开辟区段来处理
合并区段
将区段头合并为只有一个,直接往后面添加区段,到时候要访问的区段就可以直接在后面添加就好了
1 读取PE文件到内存中,将PE文件按照内存对齐(因为内存对齐是要大于文件对齐的,不按内存对齐保存下来,就会导致读取的时候没有把合并了的区段安装内存对齐,因为一个区段头对应的是一个区段,对应它如何对齐,这里合并成了一个区段头,所以需要手工来对齐)
2 删除除第一个区段头以外的区段头信息
3 修改第一个区段的头信息
4 修改numberofsections
5 保存修改后的pe文件