如何在 UPX 打包的可执行文件上防止“upx -d”?

逆向工程 包装工
2021-07-08 03:46:33

我最近阅读了Ange 的一条推文内容涉及一种在调用选项(解压缩)时欺骗 UPX 的技术-d

我想知道这是如何工作的,以及防止 UPX 打包的可执行文件被解压缩的技术是什么upx -d(如果可能,Linux 和 Windows)。

2个回答

UPX 不检查解包存根的完整性,只是盲目地从存储的信息中恢复数据,而不是从实际执行中恢复数据。

由于 UPX 是开源的并有文档记录(注释为 IDB),因此很容易修改它并实际执行一些额外的操作(反调试、补丁、解密、跳转到真正的入口点...),这些操作在 'upx -d' 时会丢失用来。

这种 UPX 黑客在恶意软件中并不少见。

愚弄upx -d可以像一个字节补丁一样简单,这里是一个小样本。

打包 MS-Windows 标准calc.exe,hexedit 一个字节,结果是一个不可解压的可执行文件upx -d(这不是 corruptingexe,exe 将运行并且可以手动解压)。只用-d开关开箱是行不通的。

  1. 创建一个新文件夹foolupx

    foolupx:\>md foolupx
    
  2. 复制calc.exe到新创建的文件夹:

    foolupx:\>copy c:\WINDOWS\system32\calc.exe foolupx\upxedcalc.exe
        1 file(s) copied.
    
  3. 打包重命名的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.
    
  4. 创建打包的副本以calc.exe进行十六进制编辑并比较文件。不同之处在于名为UPX0链接到的 PE 标头部分中的 1 个字节BPX0

    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
    
  5. 使用-d交换机解压缩这两个文件一个会被解包,另一个不会被解包:

    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:\>