运行时压缩
压缩还分为无损压缩和有损压缩:
无损压缩:使用压缩过的文件之前需要解压,解压之后可以百分之百恢复文件内容。
有损压缩:只用时不需要解压,故压缩时会对源程序有一定的损坏。
运行时压缩
这种压缩时针对可执行文件来说的,可执行文件内部含有解压代码,在运行瞬间于内存中解压后执行。
把普通PE文件创建成运行时压缩文件的实用程序称为“压缩器”,经烦你想技术特别处理的压缩器成为保护器(壳)
保护器的使用目的:保护PE文件遭到逆向破解。
接下来我们选择一个PE文件然后加上壳看一下。
首先我们写一个简单的程序:
#include<stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int a = 2, b = 3;
printf("%d
", add(a, b));
return 0;
}
然后我们将加了壳和没有加壳的exe文件进行一个对比。
这里我们跟着书上一起使用upx压缩器。
这里我们看到压缩了之后,大小有着明显的缩小。
用lordPE打开之后,也可以看到,PE文件被改变了很多。
总结一下,所谓的保护器(壳),就是一种反编译的压缩工具,它会改变文件的pe文件。