一.PE(Portable Executable)
PE格式,是微软WIN32环境可执行文件的标准格式(除.EXE外,还包括.DLL/.VXD/.SYS/.VDM等)。PE文件使用的是一个平面地址空间,所有代码和数据都合并在一起,组成一个很大的结构。
1.PE文件的主要结构:
.text 编译或汇编结束是产生的一种块,内容全是指令代码(*.code);
.rdata 运行期只读数据;
.data 初始化的数据块;
.idata 包含其他外来DLL的函数及数据信息,即输入表;
.rsrc 包含模块的全部资源:如图标、菜单、位图等。
2.PE文件结构(简化):
-------------------------------------------------------------------------
|1,DOS MZ header |DOS MZ文件头
-------------------------------------------------------------------------
|2,DOS stub |DOS块
-------------------------------------------------------------------------
|3,PE,0,0 |PE文件头标志
--------------------------------------------------------------------------
|4,IMAGE_FILE_HEADER结构 |PE文件表头
--------------------------------------------------------------------------
|5,IMAGE_OPTIONAL_HEADER32结构 |
---------------------------------------------------------------------------
|6,16*IMAGE_DATA_DIRECTORY结构 |数据目录列表
---------------------------------------------------------------------------
|7,Section table |区段表(节表)
---------------------------------------------------------------------------
|8,Section 1 |
---------------------------------------------------------------------------
|9,Section 2 |
---------------------------------------------------------------------------
| Section ... |
----------------------------------------------------------------------------
|n,Section n |
---------------------------------------------------------------------------
二.壳
壳,指的是一种可以利用特殊的算法将EXE、DLL等文件重新压缩、加密的程序。当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。
1.壳可实现功能:
1.减小被压缩文件的体积;
2.加密可被加密文件中的信息;
3.其他(如:免杀)。
2.壳的分类:
按照加壳类型,壳程序大体上分为两类。第一类是压缩壳,可以将被处理文件的体积减小,如:UPX、ASPACK、NSPACK等。第二类是加密壳,可以对被处理文件进行加密处理,通常会使被处理文件的体积增大,常见的有ASPRM、EXEStealth等。
一般来说,加密壳也有一定的压缩功能(不过有的也没有),所以有人把壳程序分为三类:压缩壳、加密壳、压缩加密壳。
除了压缩壳和加密壳,还有一种捆绑壳,这类壳有些属于压缩壳,有些属于加密壳。
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!