首页 网络安全

1. 加壳程序

1、壳是什么?

加壳是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码,要经过脱壳才可以查看源代码。

2、加壳的原理是什么?壳是怎么运作的?

加壳是利用特殊的算法,对EXE、DLL文件里的资源进行压缩、加密。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。它们附加在原程序上通过Windows加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译。
简单来说,壳可以完成代码的压缩和实时解压执行,加壳程序可以正常执行,但是看不到原来的代码,反编译的时候看不懂。

3、壳的分类

壳的类型通常分为压缩壳和加密壳两类。
压缩壳的特点是减小软件体积大小,加密保护不是重点。
加密壳种类比较多,不同的壳侧重点不同,一些壳单纯保护程序,另一些壳提供额外的功能,如提供注册机制、使用次数、时间限制等。

2.查壳与脱壳

在Linux系统中,有etect-it-easy和upx进行查壳
在windows中有PEID等,我目前主要用upx对壳进行处理

upx

通过之前对upx的学习,我们知道
upx有选项:

-d decompress
-l listcompressed file

查壳:

upx -t upx -t 新年快乐.exe 

显示如下这表明存在壳:

testing Downloads/新年快乐.exe [OK]

显示如下则不存在壳:

upx: 新年快乐.exe: NotPackedException: not packed by UPX

脱壳

upx -d 新年快乐.exe

显示:

27807 <- 21151 76.06% win32/pe 新年快乐.exe

则这个文件成功脱壳




文章评论