村长

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

本文出自:http://www.hudong.com/wiki/upx

UPX

 

UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。

编辑摘要

UPX - 基本介绍

       UPX 支持许多不同的可执行文件格式 包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库DOS 程序、 Linux

UPXUPX

可执行文件和核心。

UPX - 技术原理

     对于可执行程序资源压缩,是保护文件的常用手段. 俗称加壳,加壳过的程序可以直接运行,但是不能查看源代码.要经过脱壳才可以查看源代码.

     加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。

UPX - 应用平台

1.压缩文件

  用UPX压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。

2.加壳脱壳

   程序为了防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析就需要加壳。加密代码和数据,保护你的程序数据的完整性。不被修改或者窥视你程序的内幕。

UPX - 版本及下载

FileDescription
upx302w.zip Win32 控制台版本
upx-3.02-i386_linux.tar.bz2 i386预编译- Linux版
upx-3.02-amd64_linux.tar.bz2 amd64预编译-linux版
upx-3.02-armeb_linux.tar.bz2 armeb预编译-linux版
upx-3.02-mipsel_linux.tar.bz2 mipsel预编译-linux版
upx-3.02-powerpc_linux.tar.bz2 powerpc预编译-linux版
upx302d.zip 32位DOS 版
upx302a.zip Atari TOS/MiNT 版
upx-3.02-src.tar.bz2 源代码

UPX - 使用实例

ApplicationFormatExecutableOriginalCompressedRatioTotal17,403,0755,347,8570.307
Netscape 4.06 win32/pe netscape.exe 2,934,336 1,124,352 0.383
Descent 2 watcom/le descent2.exe 1,448,873 652,832 0.451
MAME 0.36 djgpp2/coff mame.exe 8,214,016 1,810,056 0.220
OneOhOne dos/exe 101.exe 438,144 179,566 0.410
Emacs 20.2 linux/386 emacs-20.2 2,772,657 925,543 0.334
g++ 2.8.1 atari/tos cc1plus.ttp 1,595,049 655,508 0.411

UPX - 支持格式

以下是支持可执行文件格式列表

Format full namePackUnpackDescriptionLinksamd64-linux.elf amd64-linux.kernel.vmlinux arm-linux.elf arm-linux.kernel.vmlinux arm-wince.pe armeb-linux.elf armeb-linux.kernel.vmlinux fat-darwin.macho i086-dos16.com i086-dos16.exe i086-dos16.sys i386-bsd.elf.execve i386-darwin.macho i386-dos32.djgpp2.coff i386-dos32.tmt.adam i386-dos32.watcom.le i386-freebsd.elf i386-linux.elf i386-linux.elf.execve i386-linux.elf.shell i386-linux.kernel.bvmlinuz i386-linux.kernel.vmlinux i386-linux.kernel.vmlinuz i386-netbsd.elf i386-openbsd.elf i386-win32.pe m68k-atari.tos mips-linux.elf mipsel-linux.elf mipsel.r3000-ps1 powerpc-darwin.macho powerpc-linux.elf powerpc-linux.kernel.vmlinux
X X Linux ELF Linux, AMD64
X X Linux kernel  
X X Linux ELF Linux, ARM
X X Linux kernel  
X X Windows CE executable or DLL Windows CE, ARM
X X Linux ELF Linux, ARM
X X Linux kernel  
X X Mac OS X executable  
X X DOS 16-bit .com file  
X X DOS 16-bit executable FreeDOS homepage
X X DOS 16-bit .sys file  
X X BSD generic  
X X Mac OS X executable Darwin, i386
X X DOS 32-bit COFF djgpp homepage
X X DOS 32-bit executable TMT Pascal
X X DOS 32-bit linear executable Open Watcom C/C++
X X FreeBSD ELF FreeBSD
X X Linux ELF Linux, i386
X X Linux generic  
X X Linux shell script  
X - Linux kernel  
X X Linux kernel  
X - Linux kernel  
X X NetBSD ELF NetBSD
X X OpenBSD ELF OpenBSD
X X Windows 32-bit executable or DLL  
X X Atari TOS/MiNT executable FreeMiNT portal, m68k
X X Linux ELF Linux, MIPS
X X Linux ELF Linux, MIPS
X X PlayStation 1 PlayStation, MIPS
X X Mac OS X executable Darwin, PowerPC
X X Linux ELF Linux, PowerPC
X X Linux kernel  

UPX - 版权信息

Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer Copyright (C) 1996-2007 Laszlo MolnarCopyright (C) 2000-2007 John F. Reiser All Rights Reserved.This program may be used freely, and you are welcome to redistribute it under certain conditions. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the UPX License Agreement for more details.
posted on 2012-02-23 23:39  Say No  阅读(8699)  评论(0编辑  收藏  举报