运行时压缩测试
运行时压缩器是针对PE文件而言的,可执行文件内部含有解压缩代码,文件在运行瞬间于内存中解压缩后执行。
压缩器
使用目的:
- 缩减PE文件大小
- 隐藏PE文件内部代码和资源
保护器
使用目的:
- 防止破解
- 保护代码与资源
尤其游戏,防止你做外挂。
实验
就按照书上面给出的UPX压缩器做测试了。
具体的过程我是这么理解的,UPX给代码做了一个压缩,都放到.UPX1
段中,加载入内存后,先运行.UPX1段
中的解压缩代码,将文件中的压缩代码放到.UPX0段
中。在解压缩过程完成后,跳转到源程序的执行入口执行程序。
至于最后是否是还原成跟压缩前的程序一致(其他的代码段和结构等等),这我就有点不太清楚了。用debug工具调试,最后确实跳转到了程序入口,该入口与调试源程序的入口保持一致。
通过观察内存中的数据,对比发现,解压缩之后程序没有包含原来
.text
中的IMPORT Hints/Names & DLL Names