由于项目需求,需要对二进制进行加壳处理,于是对加壳工具进行比较,最终选择upx,因为是开源的软件。
名称 | 加壳类型 | 商用/开源 | 优点 | 缺点 | 平台兼容性 | |
upx | 压缩壳 | 开源 | 1、压缩率高 2、解压速度快 3、压缩的可执行文件没有额外的内存开销 4、开源 | 1、可能被杀毒软件误认为 恶意软件,存在误杀(目前在virscan.org 上没有扫出病毒之类的信息) 2、用upx加壳后,使用upx -d就可以脱壳, 还有脱壳工具也可以进行脱壳,脱壳简单, 强度弱 | windows linux arm | |
ASProtect | 加密壳 | 商用 | 研究它的人很多,因此很容易被脱壳 | windows | ||
EXECrptor | 加密壳 | 商用 | 加密安全性表现良好 | 1、有破解版 2、兼容性不是很好 | ||
Armadillo | 加密壳 | 商用 | Armadillo中比较强大的保护选项是Nanomites保护(即CC保护),用的好能提高强度,其他选项没什么强度 | |||
Themida | 加密壳 | 商用 | 虚拟机保护技术 | 生成的软件有些大 | ||
VM Protect | 虚拟机壳 | 商用 | 1、加密的安全级别很高 2、破解难度很大 | 1、加密数据多 2、可能会影响系统的性能 | Windows、linux |
1、环境
uname -a
Linux centos 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
2、操作步骤
以ls命令为例,使用readelf查看原始的ls
使用upx对ls加壳,./upx.out -o myls ls
使用file对ls进行查看
使用file对myls查看
upx解压缩
./upx.out -d myls
objdump -d myls
压缩前后大小比较