使用 UPX 压缩可执行文件——UPX有不光彩的使用记录,它被用来给木马和病毒加壳,躲避杀毒软件的查杀
使用 UPX 压缩可执行文件
UPX 可以有效地对可执行文件进行压缩,并且压缩后的文件可以直接由系统执行,支持多系统和平台。
使用 UPX 来压缩可执行文件是一种减少发布包大小的有效方式。
安装
-
从 github release page 下载预编译的二进制文件
-
macOS 可以使用 brew 安装:
brew install upx
使用
压缩
upx [options] yourfile
upx 对文件的默认操作即为压缩,使用上述命令会使用默认参数压缩并替换文件 yourfile。
upx 支持如下可选参数:
-1[23456789]
:不同的压缩级别,数值越高压缩率越高,但耗时更长。对于小于 512 KiB 的文件默认使用-8
,其他的默认为-7
。--best
:最高压缩级别--brute
:尝试使用各种压缩方式来获取最高压缩比--ultra-brute
:尝试使用更多的参数来获取更高的压缩比
-o [file]
:将压缩文件保存为 [file]
解压
upx -d [yourfile]
优劣
压缩的程序占用更少的硬盘空间,但会在打开时消耗更多的 CPU 资源,在运行时占用更多的内存(或 swap 空间、/tmp 存储等)。
优点
- UPX 可以压缩各种类型的可执行文件
- 压缩后的文件可以直接由操作系统执行
- 压缩过程不会修改源文件,也就意味着解压后直接可以得到原始文件
- 不会产生额外的动态库调用
缺点
- 运行的程序不会共享数据段(汇编),所以多实例运行的程序不适合压缩
- 使用
ldd
和size
命令无法获取到程序的有效信息
原理
为什么压缩后的文件可由系统直接执行?
UPX 将程序压缩,并在头部加入解压的程序,具体的原理可以参看参考[2]。
在 Linux 系统中可以使用 strings
命令查看可执行文件的内容,通过查看 UPX 压缩后的程序可以看到,UPX 在文件中写入了自己的特征码。
参考
UPX 可以有效地对可执行文件进行压缩,并且压缩后的文件可以直接由系统执行,支持多系统和平台。
使用 UPX 来压缩可执行文件是一种减少发布包大小的有效方式。
安装
-
从 github release page 下载预编译的二进制文件
-
macOS 可以使用 brew 安装:
brew install upx
使用
压缩
upx [options] yourfile
upx 对文件的默认操作即为压缩,使用上述命令会使用默认参数压缩并替换文件 yourfile。
upx 支持如下可选参数:
-1[23456789]
:不同的压缩级别,数值越高压缩率越高,但耗时更长。对于小于 512 KiB 的文件默认使用-8
,其他的默认为-7
。--best
:最高压缩级别--brute
:尝试使用各种压缩方式来获取最高压缩比--ultra-brute
:尝试使用更多的参数来获取更高的压缩比
-o [file]
:将压缩文件保存为 [file]
解压
upx -d [yourfile]
优劣
压缩的程序占用更少的硬盘空间,但会在打开时消耗更多的 CPU 资源,在运行时占用更多的内存(或 swap 空间、/tmp 存储等)。
优点
- UPX 可以压缩各种类型的可执行文件
- 压缩后的文件可以直接由操作系统执行
- 压缩过程不会修改源文件,也就意味着解压后直接可以得到原始文件
- 不会产生额外的动态库调用
缺点
- 运行的程序不会共享数据段(汇编),所以多实例运行的程序不适合压缩
- 使用
ldd
和size
命令无法获取到程序的有效信息
原理
为什么压缩后的文件可由系统直接执行?
UPX 将程序压缩,并在头部加入解压的程序,具体的原理可以参看参考[2]。
在 Linux 系统中可以使用 strings
命令查看可执行文件的内容,通过查看 UPX 压缩后的程序可以看到,UPX 在文件中写入了自己的特征码。
补充:
代码保护-- 几款加壳工具
Virbox Protector(商用)
分带授权的版本和独立壳。带授权的版本加壳后需要绑定许可,许可控制软件能否用,加壳保护安全。独立版的话就只是对代码做加壳,防止代码反编译。
碎片代码执行、外壳加密、混淆、数据加密。
服务商提供了较为完善的文档以及加密方式,提供了较为充分的产品管理平台,以及云端网络加密,并且对于开发者免费使用。
使用评价:
简单下载使用了一下,提供的功能很多,并且管理平台较好。比较推荐这一个软件。
DRMsoft EncryptEXE(有破解版)
加密模式:
非绑定模式 ---- 加密后的文件不绑定用户电脑,但用户需要一个开启密码才可以打开
绑定模式 ---- 一机一码授权,加密后的文件不同用户电脑需要不同的开启密码
无密码模式 ---- 加密后的文件无需要开启密码即可运行,仅对原始文件做加密保护
一码通模式 ---- 采用相同秘钥和产品编号加密的不同文件,在同台电脑上只需认证一次
特点:
可以设置加密后文件的运行次数和有效期;
可以设置加密文件运行过程中锁定用户键盘;
可以设置加密文件运行中禁用鼠标右键;
可以设置用户提示语,在用户打开之前显示给用户;
可以禁止拷贝、编辑、打印;
可以禁止虚拟机运行;
可以设置加密后的文件只能从命令行打开运行,以便只有你自己的程序可以调用他;
可以禁用打印机;
可以检测用户电脑是否开启远程桌面服务并终止运行
EXECryptor(有破解版)
有支持代码和资源的压缩;压缩功能主要用来减少带宽占用和加快下载速度。支持多种文件格式,在保护代码中插入不同的处理器指令或代码片段,并使用其它指令替换,这些指令的运算结果都是相同的。是在 CPU 指令层面上混乱代码而不是在应用层上。
网络评价兼容性不是很好,但是加密安全性表现良好。
VProject(有破解版)
原创虚拟机保护引擎、随机指令集、随机填充代码、代码乱序执行、外壳保护、反内存转储存、区段合并、资源加密、反调试、防修改。使用拟机乱序引擎,可以阻止绝大多数人逆向分析。使用SDK,进行重点加密。所以基本上不影响程序运行效率自带授权系统,正常用户管理系统,黑名单,加密SDK,授权API等实用功能,分析使用Vprotect保护后的程序,将不仅仅是一项技术活,同时也会成为高强度的体力活。
Axprotect(商用)
加密方式:
在运行时自动解密和重新加密软件的技术,为软件提供自动防护。该技术目前支持多种操作平台,诸如Windows,Linux,Mac OS,.NET 及Java应用程序等等。所有的用户收到的是相同的被保护软件版本。可以针对不同用户购买的不同功能模块或者产品类型,个性化的生成对应的许可信息。您有权决定客户以何种方式接受许可,或者将许可存放至CmDongle加密狗中发放给客户,或者通过CmAct许可文件进行发放。可以对客户分配相应的许可类型,例如本地单用户许可、网络并发许可、时间限制型许可(适用于软件测试版)。
特点:
Protection 保护工具
用于实现高安全强度的保护软件,防止盗版及逆向工程
Licensing 授权工具
用于实现便捷、安全的软件授权,包括创建灵活的授权模式、整合软件的业务流程,以及采用企业现行的办公后台系统对软件所有的生命周期进行完整的管理。
Security 安全工具
监控软件最终使用者,防止来自第三方的恶意篡改及攻击。
Vmproject(商用软件、长期更新)
虚拟机保护机制,安全系数较高,破解难度大
VMProtect允许对可执行文件(EXE、SCR)、动态链接库(DLL,OCX,BPL)和驱动程序(SYS)进行保护。VMProtect允许对32位和64位应用、库和驱动进行保护。MProtec保护的文件可以在几乎任何版本Windows OS上运行,自Windows 95开始。32和64位版本都被支持,VMProtect兼容DEP和UAC。VMProtect允许生成和验证序列号。手动和自动生成都被支持。序列号可以是有限的时间或日期和硬件锁定的,而免费升级期间也可以被限制。 VMProtect确保它实际上无法运行没有一个序列号代码。
网络评价:
加密的安全级别很高,破解难度很大,但是加密数据多,可能会影响系统的性能。