《逆向工程核心原理》学习笔记6
运行时压缩
一、压缩文件十分常见,只要通过一定的压缩算法,就能缩减文件的大小。
二、而运行时压缩是针对PE可执行文件而言的,和普通压缩器相比,运行时压缩器的明显不同是“PE文件的可执行性”。
三、常见的压缩器有:UPX,ASPack等
四、保护器:1.保护PE文件免受代码逆向分析的实用工具。
2.目的:防止破解,保护代码和资源
3.使用现状:常用于在线游戏的保护
4.常见保护器:商用:ASProtect,Themida,SVKP等
公用:UltraProtect,Morphine等
五、运行时压缩的测试
用UPX将notepad.exe压缩
upx下载地址:http://upx.sourceforge.net
下载好以后解压到当前文件夹,在终端(本人用的是win10的Windows PowerShell(管理员))进入upx.exe所在的目录,然后输入.\upx.exe如图所示
于是就出现了upx的使用方法
我们先将notepad.exe复制粘贴到工作目录,然后我们输入如下命令行参数,对notepad.exe使用运行时压缩(疑问:-o是什么参数?)
.\upx -o notepad_upx.exe notepad.exe
可以看到notepad.exe被压缩成notepad_upx.exe的信息,如果压缩后还想再看看notepad_upx.exe压缩的信息,可以输入以下命令行
.\upx -l notepad_upx.exe
就会出现以下的信息
可以看到,文件的大小从67584缩小为48640,压缩比为71.97%
我们再用PEviewer来看看压缩前和压缩后有什么区别
这是没压缩前的notepad.exe
这是压缩后的,可以看到,它们的变动主要在节区部分,原来的.text节区和.data节区分别变成了UPX0和UPX1,相应的各自的节区头也发生了改变,点开查看,发现UPX0的大小为0!
我们看看UPX0的节区头,看看能不能发现什么果然发现了端倪,表示节区在内存中的大小的VirtualSize大小居然是10000H!
这就是说,在执行该.exe的瞬间,会有代码解压到这个节区,书上还说,解压缩和压缩的源代码都在第二节区(我也不知道为啥)。书上还说,解压完就可以开始进入EP了。