-d
(解压缩)时欺骗UPX的技术。打包的可执行文件,可以通过upx -d
(如果适用于Linux和Windows)解压缩。#1 楼
UPX不会检查拆包存根的完整性,而只是盲目地从存储的信息中还原数据,而不是从实际执行中恢复数据。修改它并实际上做一些额外的事情(防调试,补丁,解密,跳转到真实的入口点...),当使用'upx -d'时这些东西会丢失。在恶意软件中并不罕见。评论
如果我做对了,它只需要修改打包的可执行文件的校验和……或者我是否误解了?
–恐怖
2013年12月30日13:47
@perror你明白了吗?
– Tiago
16-09-27在12:08
我似乎是对的(在我测试时)。因此,修改可执行文件的校验和不会阻止执行它,但是会使解压缩更加困难(因为在应用解压缩之前,您需要绕过此校验和验证)。
–恐怖
16-09-27在13:22
#2 楼
愚弄upx -d
可以像一个字节补丁一样简单,这里是一个小样本。打包MS-Windows标准
calc.exe
,将其编辑为一个字节,结果是upx -d
不可解压缩的可执行文件(这不是exe的corrupting
,该exe将运行并可以手动解压缩)。仅使用-d
开关打开包装不起作用。 创建一个新文件夹
foolupx
:foolupx:\>md foolupx
将
calc.exe
复制到新创建的文件夹:foolupx:\>copy c:\WINDOWS\system32\calc.exe foolupx\upxedcalc.exe
1 file(s) copied.
打包重命名的
calc.exe
:foolupx:\>upx .\foolupx\upxedcalc.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2011
UPX 3.08w Markus Oberhumer, Laszlo Molnar & John Reiser Dec 12th 2011
File size Ratio Format Name
-------------------- ------ ----------- -----------
114688 -> 56832 49.55% win32/pe upxedcalc.exe
Packed 1 file.
创建一个打包的
calc.exe
的副本以进行hexediting并比较文件。区别在于,名为UPX0
的PE标头节中的1个字节链接到BPX0
:使用-d
开关解压缩两个文件。foolupx:\>copy .\foolupx\upxedcalc.exe .\foolupx\modupxedcalc.exe
1 file(s) copied.
foolupx:\>fc .\foolupx\upxedcalc.exe .\foolupx\modupxedcalc.exe
Comparing files .\FOOLUPX\upxedcalc.exe and .\FOOLUPX\MODUPXEDCALC.EXE
000001E8: 55 42
解压缩两个文件。一个将被打开包装,另一个将不被打开包装:
foolupx:\>upx -d .\foolupx\modupxedcalc.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2011
UPX 3.08w Markus Oberhumer, Laszlo Molnar & John Reiser Dec 12th 2011
File size Ratio Format Name
-------------------- ------ ----------- -----------
upx: .\foolupx\modupxedcalc.exe: CantUnpackException: file is modified/hacked/protected; take care!!!
Unpacked 0 files.
foolupx:\>upx -d .\foolupx\upxedcalc.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2011
UPX 3.08w Markus Oberhumer, Laszlo Molnar & John Reiser Dec 12th 2011
File size Ratio Format Name
-------------------- ------ ----------- -----------
114688 <- 56832 49.55% win32/pe upxedcalc.exe
Unpacked 1 file.
foolupx:\>
评论
当然,@ blabb的答案可以防止upx -d,但是您应该知道,诸如RL Depacker之类的通用拆包程序仍然可以解压缩此类文件。如果需要,可以使用Denuvo / VMProtect / enigma保护器/任何这种性质的东西来保护UPX输出,没有人可以解压缩它。