我有一个可执行文件,它不适合像往常/预期的那样进行反汇编或反编译。
file
并ldd
给出与平常不同的输出:
$ file exe_file
exe_file: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), statically linked, stripped
$ ldd exe_file
not a dynamic executable
strings
也暗示了一些事情是关闭的:
$strings exe_file
UPX!
.....
PROT_EXEC|PROT_WRITE failed.
$Info: This file is packed with the UPX executable packer http://upx.sf.net $
$Id: UPX 3.91 Copyright (C) 1996-2013 the UPX Team. All Rights Reserved. $
还:
$ ls -la exe_file
-rwxr-xr-x 1 root root 59896 Jan 22 15:26 exe_file
怎么了?
从告示签名中,我们正在处理一个打包的UPX可执行文件。
通常UPX用于打包/屏蔽二进制文件/恶意软件/病毒,因为它的签名/核心在大多数 AV 解决方案中都被列入白名单。
请注意,在某些恶意软件可执行文件中,UPX 可以是外层,在“解包”UPX 层之后,您可能还有其他打包/压缩技术的另一个“内”打包程序。
要解压二进制文件,需要安装
upx
.使用 MacPorts 在 MacOS 中安装 UPX:
在 Debian 及其衍生版本中安装 UPX:
解压可执行二进制文件:
打包:
为了比较,拆包
exe_file
后:我们重新运行问题中的命令,结果完全不同:
相关问题了解 Linux 二进制文件在做什么