Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ce6d99bdb4 | |||
| 86d4125893 | |||
| 3a18f00379 | |||
| e6274904a7 | |||
| 3677395444 | |||
| 22ba35b3b5 | |||
| 9c1ab9979b | |||
| eaa463e1c9 | |||
| 6984be48c3 | |||
| b739bd3d79 | |||
| 23f3e4396c | |||
| c264750924 | |||
| c155f0a5d5 | |||
| 76734f086d | |||
| 4f2d1172dd | |||
| 75caf4e297 | |||
| 509ab8261f | |||
| 1e05b40d4f | |||
| 451390f835 | |||
| 58cce9d2f8 | |||
| 2eb6e3b0ea | |||
| fb1181ed26 | |||
| 6d5e1d529d | |||
| 0e0ca08924 | |||
| 5d948a67a8 | |||
| 6a4db2ecab | |||
| f700273624 | |||
| 0c198e0ccc |
@@ -2,12 +2,19 @@
|
||||
User visible changes for UPX
|
||||
==================================================================
|
||||
|
||||
Changes in 2.00 (XX XXX 2006):
|
||||
Changes in 2.00 (27 Apr 2006):
|
||||
* linux/386: the stub now prints an error message if some strict
|
||||
SELinux mode does prevent runtime decompression and execution
|
||||
(for a fully SELinux-compatible but otherwise inferior compression
|
||||
format you can use the '--force-execve' option)
|
||||
* linux/386: worked around a problem where certain Linux kernels
|
||||
clobber the %ebx register during a syscall
|
||||
* win32/pe: disable filters for files with broken PE headers
|
||||
|
||||
Changes in 1.96 beta (13 Apr 2006):
|
||||
* arm/pe: added filter support
|
||||
* win32/pe: removed an unnecessary check so that Delphi 2006 and
|
||||
Digital Mars C++ programs finally work
|
||||
Digital Mars C++ programs finally are supported
|
||||
|
||||
Changes in 1.95 beta (09 Apr 2006):
|
||||
* arm/pe: added DLL support
|
||||
@@ -28,8 +35,8 @@ Changes in 1.93 beta (07 Feb 2005):
|
||||
* vmlinuz/386: fixes to support more kernels
|
||||
|
||||
Changes in 1.92 beta (20 Jul 2004):
|
||||
* win32/pe: added option `--strip-loadconf' to strip the SEH
|
||||
load config section
|
||||
* win32/pe: added option '--strip-loadconf' to strip the SEH load
|
||||
config section [NOTE: this option is obsolete since UPX 1.94]
|
||||
* win32/pe: try to detect .NET (win32/net) files [not yet supported by UPX]
|
||||
* vmlinux/386: new format that directly supports building Linux kernels
|
||||
* source code: now compiles cleanly under Win64
|
||||
@@ -40,7 +47,7 @@ Changes in 1.91 beta (30 Jun 2004):
|
||||
* vmlinuz/386: added support for recent kernels
|
||||
* watcom/le: don't crash on files without relocations
|
||||
* win32/pe: stricter checks of some PE values
|
||||
* option `--brute' now implies `--crp-ms=999999'.
|
||||
* option '--brute' now implies '--crp-ms=999999'.
|
||||
* source code: much improved portability using ACC, the
|
||||
Automatic Compiler Configuration
|
||||
* source code: compile fixes for strict ISO C++ compilers
|
||||
@@ -49,9 +56,9 @@ Changes in 1.91 beta (30 Jun 2004):
|
||||
|
||||
Changes in 1.90 beta (11 Nov 2002):
|
||||
* implemented several new options for finer compression control:
|
||||
`--all-methods', `--all-filters' and `--brute'
|
||||
'--all-methods', '--all-filters' and '--brute'
|
||||
* ps1/exe: new format - UPX now supports PlayStation One programs
|
||||
* linux/386: added the option `--force-execve'
|
||||
* linux/386: added the option '--force-execve'
|
||||
* vmlinuz/386: better kernel detection and sanity checks
|
||||
* re-synced with upx 1.24 branch
|
||||
* documentation updates
|
||||
@@ -96,9 +103,9 @@ Changes in 1.22 (27 Jun 2002)
|
||||
Digital Mars C++ and Watcom C++
|
||||
|
||||
Changes in 1.21 (01 Jun 2002)
|
||||
* New option `--crp-ms=' for slightly better compression at the cost
|
||||
* New option '--crp-ms=' for slightly better compression at the cost
|
||||
of higher memory requirements during compression.
|
||||
Try `upx --best --crp-ms=100000'. See the docs for more info.
|
||||
Try 'upx --best --crp-ms=100000'. See the docs for more info.
|
||||
* source code: portability fixes
|
||||
* source code: compile fixes for g++ 3.0 and g++ 3.1
|
||||
|
||||
@@ -136,7 +143,7 @@ Changes in 1.05 (24 Jan 2001)
|
||||
at the unstable UPX 1.1x beta versions for that)
|
||||
|
||||
Changes in 1.04 (19 Dec 2000)
|
||||
* dos/exe: fixed an internal error when using `--no-reloc'
|
||||
* dos/exe: fixed an internal error when using '--no-reloc'
|
||||
* win32/pe: fixed a rare bug in the relocation handling code
|
||||
* some tunings for the default compression level
|
||||
|
||||
@@ -144,7 +151,7 @@ Changes in 1.03 (30 Nov 2000)
|
||||
* linked with a new version of the NRV compression library:
|
||||
- improved compression ratio a little bit
|
||||
- overall significantly faster compression
|
||||
- much faster when using high compression levels like `-9' or `--best'
|
||||
- much faster when using high compression levels like '-9' or '--best'
|
||||
- much faster with large files
|
||||
* atari/tos: added support for FreeMiNT
|
||||
* the 32-bit DOS version now uses the new CWSDSTUB extender
|
||||
@@ -152,7 +159,7 @@ Changes in 1.03 (30 Nov 2000)
|
||||
Changes in 1.02 (13 Sep 2000)
|
||||
* watcom/le: fixed a problem with the Causeway extender
|
||||
* win32/pe: don't automatically strip relocs if they seem needed
|
||||
* support multiple backup generations when using `-k'
|
||||
* support multiple backup generations when using '-k'
|
||||
* updated the console screen driver
|
||||
|
||||
Changes in 1.01 (09 Apr 2000)
|
||||
@@ -180,7 +187,7 @@ Changes in 0.99.1 (29 Feb 2000)
|
||||
|
||||
Changes in 0.99 (25 Feb 2000)
|
||||
* FULL SOURCE CODE RELEASED UNDER THE TERMS OF THE GNU GPL
|
||||
* win32/pe: changed default to `--strip-relocs=1'
|
||||
* win32/pe: changed default to '--strip-relocs=1'
|
||||
* dos/com and dos/sys: fixed a bad decompressor problem
|
||||
* linux/386: the counter for the progress indicator was off by one
|
||||
|
||||
@@ -203,7 +210,7 @@ Changes in 0.91 (13 Nov 1999)
|
||||
* dos/exe: correctly restore cs when uncompressing
|
||||
|
||||
Changes in 0.90 (10 Nov 1999)
|
||||
* all formats: `--overlay=copy' now is the default overlay mode
|
||||
* all formats: '--overlay=copy' now is the default overlay mode
|
||||
* improved compression ratio for most files
|
||||
* win32/pe: uncompression is finally supported
|
||||
* win32/pe: never compress REGISTRY resources
|
||||
@@ -213,7 +220,7 @@ Changes in 0.90 (10 Nov 1999)
|
||||
* win32/pe: somewhat less memory is required during compression
|
||||
* linux/386: fixed compression of scripts which was broken since 0.71
|
||||
* linux/386: more FreeBSD compatibility issues
|
||||
* changed option: `-i' now prints some more details during compression
|
||||
* changed option: '-i' now prints some more details during compression
|
||||
(not finished yet)
|
||||
|
||||
Changes in 0.84 (04 Oct 1999)
|
||||
@@ -229,7 +236,7 @@ Changes in 0.83 (17 Sep 1999)
|
||||
Changes in 0.82 (16 Aug 1999)
|
||||
* dos/exe: fixed a decompressor bug which could cause crash on some files
|
||||
* linux/386: section headers are now stripped from the stub so that
|
||||
`strip' won't ruin a compressed file any longer
|
||||
'strip' won't ruin a compressed file any longer
|
||||
* wc/le: support for stack not in the last object disabled again
|
||||
* win32/pe: removed some unneeded data
|
||||
|
||||
@@ -238,32 +245,32 @@ Changes in 0.81 (04 Aug 1999)
|
||||
* dos/com: fixed an internal error that could happen with very small files
|
||||
|
||||
Changes in 0.80 (03 Aug 1999)
|
||||
* you can set some default options in the environment var `UPX'
|
||||
* you can set some default options in the environment var 'UPX'
|
||||
* dos/com: the decompressor stub now checks for enough free memory
|
||||
* dos/exe: decompressor rewritten, some bugs are fixed
|
||||
* dos/exe: new option `--no-reloc': no relocation data is put into
|
||||
* dos/exe: new option '--no-reloc': no relocation data is put into
|
||||
the DOS header
|
||||
* tmt/adam: added support for more stubs, detect already packed files
|
||||
* tmt/adam: new option `--copy-overlay'
|
||||
* tmt/adam: new option '--copy-overlay'
|
||||
* wc/le: reduced memory requirement during uncompression
|
||||
* wc/le: support files which do not contain their stack in the last object
|
||||
* wc/le: fixed a bug which could cause a crash, improved relocation
|
||||
handling
|
||||
* wc/le: new option `--copy-overlay'
|
||||
* win32/pe: `--compress-icons=2' is now the default
|
||||
* wc/le: new option '--copy-overlay'
|
||||
* win32/pe: '--compress-icons=2' is now the default
|
||||
* win32/pe: even better TLS support
|
||||
* win32/pe: versioninfo works on NT
|
||||
* win32/pe: import by ordinal from kernel32.dll works
|
||||
* win32/pe: other import improvements: importing a nonexistant DLL
|
||||
results in a usual Windows message, importing a nonexistant function
|
||||
results in program exit (instead of crash ;-)
|
||||
* win32/pe: new option: `--compress-resources=0'
|
||||
* win32/pe: new option: '--compress-resources=0'
|
||||
* win32/pe: reduced memory requirement during uncompression, some
|
||||
files might even require LESS memory when they're compressed
|
||||
* win32/pe: TYPELIBs should work now
|
||||
* win32/pe: improved relocation handling, 16-bit relocations should work
|
||||
* win32/pe: new option `--strip-relocs' (only if you know what you are doing)
|
||||
* win32/pe: new option `--copy-overlay'
|
||||
* win32/pe: new option '--strip-relocs' (only if you know what you are doing)
|
||||
* win32/pe: new option '--copy-overlay'
|
||||
* important internal changes: now the stubs are built at runtime
|
||||
|
||||
Changes in 0.72 (12 May 1999)
|
||||
@@ -277,20 +284,20 @@ Changes in 0.72 (12 May 1999)
|
||||
* linux/386: minor decompressor stub updates, nicer progress bar
|
||||
|
||||
Changes in 0.71 (19 Apr 1999)
|
||||
* dos/exe: added option `--no-overlay'
|
||||
* dos/exe: added option '--no-overlay'
|
||||
* linux/386: various improvements in the stub, most notably the
|
||||
overhead for an extra cleanup process has been removed
|
||||
* win32/pe: added support for export forwarders
|
||||
* win32/pe: added support for DLLs without entry point or imports
|
||||
* win32/pe: yet another .bss fix
|
||||
* win32/pe: new option `--compress-icons=2': compress all icons
|
||||
* win32/pe: new option '--compress-icons=2': compress all icons
|
||||
which are not in the first icon directory
|
||||
* win32/pe: rearranged stub to avoid false alerts from some virus scanners
|
||||
|
||||
Changes in 0.70 (30 Mar 1999)
|
||||
* added support for linux/386 executables
|
||||
* improved compression ratio quite a bit
|
||||
* added new compression level `--best' to squeeze out even some more bytes
|
||||
* added new compression level '--best' to squeeze out even some more bytes
|
||||
* win32/pe: TLS support is much better now
|
||||
* win32/pe: --compress-icons=0 should now work as well
|
||||
* the usual minor fixes for win32/pe
|
||||
|
||||
@@ -13,31 +13,6 @@
|
||||
|
||||
|
||||
|
||||
WARNING - UNSTABLE BETA VERSION
|
||||
===============================
|
||||
|
||||
All versions 1.9x are unstable beta releases - use them only for testing,
|
||||
and never distribute a program that is packed with them !
|
||||
There will be hidden bugs. Really.
|
||||
|
||||
The current stable release is 1.25, and the next stable release
|
||||
will be called version 2.00.
|
||||
|
||||
The main news since 1.25 are:
|
||||
- slightly better compression using the new NRV2E algorithm
|
||||
- new options for compression tuning (e.g. `--brute')
|
||||
- support for bootable Linux kernels ("vmlinuz/386")
|
||||
- support for Linux kernel building ("vmlinux/386")
|
||||
- direct Linux ELF-to-memory decompression ("linux/elf386") and
|
||||
shell-to-memory decompression ("linux/sh386")
|
||||
- support for arm/WinCE ("arm/pe") exes
|
||||
- support for mach/ppc32
|
||||
- support for Linux elf/ppc32
|
||||
- support for Linux elf/amd64
|
||||
- support for playstation exes ("ps1/exe")
|
||||
- lots of new bugs ;-) take care
|
||||
|
||||
|
||||
WELCOME
|
||||
=======
|
||||
|
||||
@@ -80,8 +55,8 @@ UPX aims to be Commercial Quality Freeware.
|
||||
SHORT DOCUMENTATION
|
||||
===================
|
||||
|
||||
`upx program.exe' will compress a program or DLL. For best compression
|
||||
results try `upx --best program.exe'.
|
||||
'upx program.exe' will compress a program or DLL. For best compression
|
||||
results try 'upx --brute program.exe'.
|
||||
|
||||
Please see the file UPX.DOC for the full documentation. The files
|
||||
NEWS and BUGS also contain various tidbits of information.
|
||||
@@ -95,7 +70,7 @@ UPX comes with ABSOLUTELY NO WARRANTY; for details see the file LICENSE.
|
||||
Having said that, we think that UPX is quite stable now. Indeed we
|
||||
have compressed lots of files without any problems. Also, the
|
||||
current version has undergone several months of beta testing -
|
||||
actually it's more than 4 years since our first public beta.
|
||||
actually it's almost 8 years since our first public beta.
|
||||
|
||||
This is the first production quality release, and we plan that future
|
||||
releases will be backward compatible with this version.
|
||||
|
||||
+15
-16
@@ -13,22 +13,21 @@
|
||||
|
||||
|
||||
|
||||
WARNING - UNSTABLE BETA VERSION
|
||||
===============================
|
||||
|
||||
The current stable release is 1.25, and the next stable release
|
||||
will be called version 2.00.
|
||||
MAJOR NEWS IN UPX 2
|
||||
===================
|
||||
|
||||
The main news since 1.25 are:
|
||||
- slightly better compression using the new NRV2E algorithm
|
||||
- new options for compression tuning (e.g. `--brute')
|
||||
- support for bootable Linux kernels ("vmlinuz/386")
|
||||
- support for Linux kernel building ("vmlinux/386")
|
||||
- direct Linux ELF-to-memory decompression ("linux/elf386") and
|
||||
shell-to-memory decompression ("linux/sh386")
|
||||
- support for arm/WinCE ("arm/pe") exes
|
||||
- support for Linux elf/amd64
|
||||
- support for Linux elf/ppc32
|
||||
- support for mach/ppc32
|
||||
- support for playstation exes ("ps1/exe")
|
||||
|
||||
* new format: added support for arm/pe (ARM executables running on WinCE)
|
||||
* new format: added support for linux elf/amd64
|
||||
* new format: added support for linux elf/ppc32
|
||||
* new format: added support for mach/ppc32 (Apple Mac OS X)
|
||||
* new format: added support for bootable Linux kernels ("vmlinuz/386")
|
||||
* new format: added support for Playstation exes ("ps1/exe")
|
||||
|
||||
* slightly better compression using the new NRV2E algorithm
|
||||
* new options for compression tuning (e.g. '--brute')
|
||||
* improved win32/pe compatibility
|
||||
* direct ELF-to-memory decompression
|
||||
* various bug fixes
|
||||
|
||||
|
||||
+14
-13
@@ -69,11 +69,7 @@ Tools needed to build/modify the UPX sources
|
||||
- A C++ compiler supporting inner classes, templates, exceptions
|
||||
and RTTI.
|
||||
|
||||
- GNU make 3.80 for Win32
|
||||
http://www.cygwin.com/
|
||||
|
||||
- GNU make 3.80 for DOS
|
||||
http://www.delorie.com/djgpp/
|
||||
- GNU make 3.80 or better
|
||||
|
||||
|
||||
To compile the packer sources
|
||||
@@ -96,26 +92,31 @@ To compile the packer sources
|
||||
If you want to modify the stub sources you'll also need
|
||||
-------------------------------------------------------
|
||||
|
||||
- Nasm 0.98.38 - the Netwide Assembler
|
||||
http://upx.sourceforge.net/download/tools/
|
||||
http://sourceforge.net/projects/nasm/
|
||||
|
||||
- A68K - a 68000 macro assembler
|
||||
http://upx.sourceforge.net/download/tools/
|
||||
|
||||
- ASM5900 - a MIPS R3000 assembler
|
||||
http://upx.sourceforge.net/download/tools/
|
||||
|
||||
- djasm - an assembler for the djgpp stub
|
||||
http://upx.sourceforge.net/download/tools/
|
||||
|
||||
- Perl 5.6 or better
|
||||
- nasm 0.98.39 - the Netwide Assembler
|
||||
http://upx.sourceforge.net/download/tools/
|
||||
http://sourceforge.net/projects/nasm/
|
||||
|
||||
- Linux (for the linux/386 stubs)
|
||||
- Perl & Python
|
||||
|
||||
- Certain versions of some i386-linux tools:
|
||||
- gcc-2.95.3
|
||||
- gcc-3.4.6
|
||||
- binutils-2.16.1
|
||||
|
||||
- Other cross compilers targeted at the following architectures:
|
||||
- arm-9tdmi-linux-gnu
|
||||
- powerpc-750-linux-gnu
|
||||
- x86_64-unknown-linux-gnu
|
||||
- arm-9tdmi-linux-gnu
|
||||
|
||||
- ASM5900 - a MIPS R3000 assembler
|
||||
|
||||
Misc. notes
|
||||
-----------
|
||||
|
||||
+1
-1
@@ -1120,7 +1120,7 @@ void upx_sanity_check(void)
|
||||
assert(memcmp(UPX_VERSION_DATE + strlen(UPX_VERSION_DATE) - 4, UPX_VERSION_YEAR, 4) == 0);
|
||||
|
||||
#if 1
|
||||
# if 1
|
||||
# if 1 && !defined(UPX_OFFICIAL_BUILD)
|
||||
assert(TestBELE<LE16>::test());
|
||||
assert(TestBELE<LE32>::test());
|
||||
assert(TestBELE<LE64>::test());
|
||||
|
||||
@@ -1764,6 +1764,14 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
ft.addvalue = ih.codebase - rvamin;
|
||||
// compress
|
||||
int strategy = allow_filter ? 0 : -3;
|
||||
|
||||
// disable filters for files with broken headers
|
||||
if (ih.codebase + ih.codesize > ph.u_len)
|
||||
{
|
||||
ft.buf_len = 1;
|
||||
strategy = -3;
|
||||
}
|
||||
|
||||
compressWithFilters(&ft, 2048, strategy,
|
||||
NULL, 0, 0, ih.codebase, rvamin);
|
||||
// info: see buildLoader()
|
||||
|
||||
+3
-10
@@ -508,14 +508,6 @@ PackLinuxElf64amd::canPack()
|
||||
// throwCantPack("invalid Phdr p_offset; try `--force-execve'");
|
||||
// return false;
|
||||
//}
|
||||
|
||||
// detect possible conflict upon invocation
|
||||
acc_uint64l_t const p_vaddr = get_native64(&phdr->p_vaddr);
|
||||
if (p_vaddr < (unsigned)(0x100000 + file_size)
|
||||
|| p_vaddr < (unsigned)(0x100000 + file_size) ) {
|
||||
throwAlreadyPackedByUPX(); // not necessarily, but mostly true
|
||||
return false;
|
||||
}
|
||||
exetype = 1;
|
||||
break;
|
||||
}
|
||||
@@ -654,7 +646,7 @@ PackLinuxElf32ppc::generateElfHdr(
|
||||
if (ph.format==UPX_F_LINUX_ELFPPC32) {
|
||||
cprElfHdr2 *const h2 = (cprElfHdr2 *)&elfout;
|
||||
assert(2==get_native16(&h2->ehdr.e_phnum));
|
||||
set_native32(&h2->phdr[0].p_flags, Elf32_Phdr::PF_W | get_native32(&h2->phdr[0].p_flags));
|
||||
set_native32(&h2->phdr[0].p_flags, ~Elf32_Phdr::PF_W & get_native32(&h2->phdr[0].p_flags));
|
||||
memset(&h2->linfo, 0, sizeof(h2->linfo));
|
||||
fo->write(h2, sizeof(*h2));
|
||||
}
|
||||
@@ -675,7 +667,7 @@ PackLinuxElf64amd::generateElfHdr(
|
||||
if (ph.format==UPX_F_LINUX_ELF64_AMD) {
|
||||
cprElfHdr2 *const h2 = (cprElfHdr2 *)&elfout;
|
||||
assert(2==get_native16(&h2->ehdr.e_phnum));
|
||||
set_native32(&h2->phdr[0].p_flags, Elf64_Phdr::PF_W | get_native32(&h2->phdr[0].p_flags));
|
||||
set_native32(&h2->phdr[0].p_flags, ~Elf64_Phdr::PF_W & get_native32(&h2->phdr[0].p_flags));
|
||||
memset(&h2->linfo, 0, sizeof(h2->linfo));
|
||||
fo->write(h2, sizeof(*h2));
|
||||
}
|
||||
@@ -1518,6 +1510,7 @@ void PackLinuxI386elf::pack1(OutputFile *fo, Filter &)
|
||||
fi->seek(ehdri.e_phoff, SEEK_SET);
|
||||
fi->readx(phdri, sz_phdrs);
|
||||
|
||||
progid = getRandomId();
|
||||
generateElfHdr(fo, linux_i386elf_fold, getbrk(phdri, ehdri.e_phnum) );
|
||||
}
|
||||
|
||||
|
||||
@@ -1853,6 +1853,14 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
ft.addvalue = ih.codebase - rvamin;
|
||||
// compress
|
||||
int strategy = allow_filter ? 0 : -3;
|
||||
|
||||
// disable filters for files with broken headers
|
||||
if (ih.codebase + ih.codesize > ph.u_len)
|
||||
{
|
||||
ft.buf_len = 1;
|
||||
strategy = -3;
|
||||
}
|
||||
|
||||
compressWithFilters(&ft, 2048, strategy,
|
||||
NULL, 0, 0, ih.codebase, rvamin);
|
||||
// info: see buildLoader()
|
||||
|
||||
+9
-9
@@ -101,23 +101,23 @@ O2BIN = perl -w $(srcdir)/scripts/o2bin.pl
|
||||
### i386-linux
|
||||
###
|
||||
|
||||
LD_LINUX_I386 = ld -m elf_i386
|
||||
OBJCOPY_LINUX_I386 = objcopy -F elf32-i386
|
||||
LD_LINUX_I386 = i386-linux-ld-2.16.1 -m elf_i386
|
||||
OBJCOPY_LINUX_I386 = i386-linux-objcopy-2.16.1 -F elf32-i386
|
||||
OBJSTRIP_LINUX_I386 = $(OBJCOPY_LINUX_I386) -R .comment -R .note
|
||||
STRIPELF_LINUX_I386 = ./util/sstrip/i386-linux-sstrip
|
||||
|
||||
# gcc 2.7.2.3 (fold_*86.bin: 1900 / 1011 / 1786 / 1401)
|
||||
CC_LINUX_I386_GCC272 = gcc-2.72 -m386 -O2 -MMD
|
||||
CC_LINUX_I386_GCC272 = i386-linux-gcc-2.72 -m386 -O2 -MMD
|
||||
CC_LINUX_I386_GCC272 += -malign-functions=0 -malign-jumps=0 -malign-loops=0
|
||||
|
||||
# gcc 2.95.3 (fold_*86.bin: 1770 / 995 / 1661 / 1314)
|
||||
CC_LINUX_I386_GCC295 = gcc-2.95.3 -march=i386 -mcpu=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC295 = i386-linux-gcc-2.95.3 -march=i386 -mcpu=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC295 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC295 += -malign-functions=0 -malign-jumps=0 -malign-loops=0
|
||||
CC_LINUX_I386_GCC295 += -Werror
|
||||
|
||||
# gcc 3.4.6 (fold_*86.bin: 1651 / 947 / 1537 / 1190)
|
||||
CC_LINUX_I386_GCC34 = gcc-3.4.6
|
||||
CC_LINUX_I386_GCC34 = i386-linux-gcc-3.4.6
|
||||
CC_LINUX_I386_GCC34 += -m32 -march=i386 -mtune=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC34 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC34 += -momit-leaf-frame-pointer
|
||||
@@ -128,7 +128,7 @@ CC_LINUX_I386_GCC34 += -Werror
|
||||
|
||||
# gcc 4.1.0 (fold_*86.bin: 1725 / 963 / 1620 / 1202)
|
||||
# gcc 4.0.3 (fold_*86.bin: 1731 / 995 / 1625 / 1195)
|
||||
CC_LINUX_I386_GCC41 = gcc-4.1.0
|
||||
CC_LINUX_I386_GCC41 = i386-linux-gcc-4.1.0
|
||||
CC_LINUX_I386_GCC41 += -m32 -march=i386 -mtune=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC41 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC41 += -momit-leaf-frame-pointer
|
||||
@@ -150,7 +150,7 @@ CC_LINUX_I386 += -funsigned-char
|
||||
### MIPS R3000
|
||||
###
|
||||
|
||||
CPP_MR3K = gcc-2.95.3 -nostdinc -I$(UCL_UPX) -I$(srcdir) -E -x assembler-with-cpp -Wall -Wp,-P,-C,-traditional
|
||||
CPP_MR3K = i386-linux-gcc-2.95.3 -nostdinc -I$(UCL_UPX) -I$(srcdir) -E -x assembler-with-cpp -Wall -Wp,-P,-C,-traditional
|
||||
APP_MR3K = perl -w $(srcdir)/scripts/app_mr3k.pl
|
||||
ASM_MR3K = asm5900 --nologo -q
|
||||
|
||||
@@ -189,7 +189,7 @@ ifneq ($(wildcard $d),)
|
||||
endif
|
||||
d = /opt/cc-i386-linux/crosstool/powerpc-750-linux-gnu/gcc-3.4.3.20050210-glibc-2.2.5/bin
|
||||
ifneq ($(wildcard $d),)
|
||||
GCC_PPC32 := $d/powerpc-750-linux-gnu-gcc -m32 -nostdinc -MMD
|
||||
GCC_PPC32 := $d/powerpc-750-linux-gnu-gcc -m32 -nostdinc -MMD -fno-exceptions -fno-asynchronous-unwind-tables
|
||||
LD_PPC32 := $d/powerpc-750-linux-gnu-ld
|
||||
OBJCOPY_PPC32 := $d/powerpc-750-linux-gnu-objcopy
|
||||
endif
|
||||
@@ -468,7 +468,7 @@ m_lx_elfppc32.o: m_lx_elfppc32.c $(MAKEFILE_DEPS)
|
||||
$(OBJSTRIP_PPC32) $@
|
||||
|
||||
a_lx_elf64amd.o: a_lx_elf64.c $(MAKEFILE_DEPS)
|
||||
$(GCC_AMD64) -c -Os -o $@ $<
|
||||
$(GCC_AMD64) -c -Os -fno-exceptions -fno-asynchronous-unwind-tables -o $@ $<
|
||||
$(OBJSTRIP_AMD64) $@
|
||||
|
||||
fold_elfppc32.o: fold_elfppc32.S ppc_bxx.S $(MAKEFILE_DEPS)
|
||||
|
||||
+19
-12
@@ -224,9 +224,9 @@ xfind_pages(unsigned mflags, Elf64_Phdr const *phdr, int phnum,
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
|
||||
addr = mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC, mflags, 0, 0);
|
||||
addr = mmap((void *)lo, hi, PROT_NONE, mflags, -1, 0);
|
||||
*p_brk = hi + addr; // the logical value of brk(0)
|
||||
munmap(szlo + addr, hi - szlo); // desirable if PT_LOAD non-contiguous
|
||||
//mprotect(szlo + addr, hi - szlo, PROT_NONE); // no access, but keep the frames!
|
||||
return (unsigned long)addr - lo;
|
||||
}
|
||||
|
||||
@@ -260,29 +260,36 @@ do_xmap(
|
||||
mlen += frag;
|
||||
addr -= frag;
|
||||
|
||||
if (addr != mmap(addr, mlen, PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen, prot | (xi ? PROT_WRITE : 0),
|
||||
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
(xi ? -1 : fdi), phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
}
|
||||
if (xi) {
|
||||
unpackExtent(xi, &xo, f_decompress, f_unf);
|
||||
}
|
||||
bzero(addr, frag); // fragment at lo end
|
||||
// Linux does not fixup the low end, so neither do we.
|
||||
//if (PROT_WRITE & prot) {
|
||||
// bzero(addr, frag); // fragment at lo end
|
||||
//}
|
||||
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
if (xi && 0==phdr->p_offset) {
|
||||
Elf64_Ehdr *const ehdr = (Elf64_Ehdr *)addr;
|
||||
*(int *)&ehdr->e_ident[12] = 0x90c3050f; // syscall; ret; nop
|
||||
if (PROT_WRITE & prot) { // note: read-only .bss not supported here
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
}
|
||||
if (0!=mprotect(addr, mlen, prot)) {
|
||||
err_exit(10);
|
||||
if (xi) {
|
||||
if (0==phdr->p_offset) {
|
||||
Elf64_Ehdr *const ehdr = (Elf64_Ehdr *)addr;
|
||||
*(int *)&ehdr->e_ident[12] = 0x90c3050f; // syscall; ret; nop
|
||||
}
|
||||
if (0!=mprotect(addr, mlen, prot)) {
|
||||
err_exit(10);
|
||||
ERR_LAB
|
||||
}
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != mmap(addr, haddr - addr, prot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
ALIGN(1<<3)
|
||||
.p2align 3
|
||||
lit_n2b:
|
||||
incq %rsi; movb %dl,(%rdi)
|
||||
incq %rdi
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
ALIGN(1<<3)
|
||||
.p2align 3
|
||||
lit_n2e:
|
||||
incq %rsi; movb %dl,(%rdi)
|
||||
incq %rdi
|
||||
|
||||
+68
-85
@@ -1,4 +1,4 @@
|
||||
/* fold_elf64amd.h -- created from fold_elf64amd.bin, 1964 (0x7ac) bytes
|
||||
/* fold_elf64amd.h -- created from fold_elf64amd.bin, 1696 (0x6a0) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,22 +27,22 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELF64AMD_FOLD_SIZE 1964
|
||||
#define LINUX_ELF64AMD_FOLD_ADLER32 0xbcebb18a
|
||||
#define LINUX_ELF64AMD_FOLD_CRC32 0x2dba754c
|
||||
#define LINUX_ELF64AMD_FOLD_SIZE 1696
|
||||
#define LINUX_ELF64AMD_FOLD_ADLER32 0x8e868b92
|
||||
#define LINUX_ELF64AMD_FOLD_CRC32 0xfc2cafa4
|
||||
|
||||
unsigned char linux_elf64amd_fold[1964] = {
|
||||
unsigned char linux_elf64amd_fold[1696] = {
|
||||
127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 62, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||
64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
|
||||
1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 40 */
|
||||
0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
172, 6, 0, 0, 0, 0, 0, 0,172, 6, 0, 0, 0, 0, 0, 0, /* 0x 60 */
|
||||
160, 6, 0, 0, 0, 0, 0, 0,160, 6, 0, 0, 0, 0, 0, 0, /* 0x 60 */
|
||||
0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, /* 0x 70 */
|
||||
172, 6, 0, 0, 0, 0, 0, 0,172, 6, 16, 0, 0, 0, 0, 0, /* 0x 80 */
|
||||
172, 6, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* 0x 90 */
|
||||
4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x a0 */
|
||||
160, 6, 0, 0, 0, 0, 0, 0,160, 6, 16, 0, 0, 0, 0, 0, /* 0x 80 */
|
||||
160, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 80, 0, 0, /* 0x b0 */
|
||||
0,131,249, 73,117, 74, 72,137,241, 72,137,254,235, 44,138, 7, /* 0x c0 */
|
||||
72,131,199, 1, 60,128,114, 10, 60,143,119, 6,128,127,254, 15, /* 0x d0 */
|
||||
@@ -51,7 +51,7 @@ unsigned char linux_elf64amd_fold[1964] = {
|
||||
72,131,199, 1, 72,255,201,117,217,235, 5, 72,255,201,117,190, /* 0x 100 */
|
||||
195, 72,141,116, 36, 56, 72,173, 72,133,192,117,249, 72,173, 72, /* 0x 110 */
|
||||
133,192,117,249, 65, 89, 72,137,241, 94, 95, 72,129,236, 0, 8, /* 0x 120 */
|
||||
0, 0, 72,137,226, 73,137,232,232, 77, 4, 0, 0, 72,129,196, /* 0x 130 */
|
||||
0, 0, 72,137,226, 73,137,232,232, 65, 4, 0, 0, 72,129,196, /* 0x 130 */
|
||||
0, 8, 0, 0, 94, 95, 89, 80,106, 11, 88,255,225,176, 11,235, /* 0x 140 */
|
||||
13,176, 10,235, 9,176, 12,235, 5,176, 9, 73,137,202, 15,182, /* 0x 150 */
|
||||
192, 15, 5, 72, 61, 0,240,255,255,114, 4, 72,131,200,255,195, /* 0x 160 */
|
||||
@@ -80,79 +80,62 @@ unsigned char linux_elf64amd_fold[1964] = {
|
||||
57,200,116, 17, 72,255,200, 15,148,194, 49,192,133,246, 15,149, /* 0x 2d0 */
|
||||
192,133,194,116, 8, 72,137, 15, 76,137, 71, 8,195, 72,131,199, /* 0x 2e0 */
|
||||
16,235,215,195, 65, 87,184, 0, 0, 0, 0, 73,137,255, 65, 86, /* 0x 2f0 */
|
||||
73,137,254, 65, 85, 65, 84, 85, 83, 72,131,236, 88, 76, 3,119, /* 0x 300 */
|
||||
32,102,131,127, 16, 3, 72,137,116, 36, 48, 15,183,119, 56, 72, /* 0x 310 */
|
||||
137, 76, 36, 32,185, 16, 0, 0, 0,137, 84, 36, 44, 76,137, 68, /* 0x 320 */
|
||||
36, 24, 76,137, 76, 36, 16, 15, 68,200, 76,137,242, 73,131,205, /* 0x 330 */
|
||||
255, 49,237, 69, 49,228,131,193, 34,255,206,120, 38,131, 58, 1, /* 0x 340 */
|
||||
117, 27, 72,139, 66, 16, 76, 57,232,115, 7, 76,139, 98, 32, 73, /* 0x 350 */
|
||||
137,197, 72, 3, 66, 40, 72, 57,197, 72, 15, 66,232, 72,131,194, /* 0x 360 */
|
||||
56,235,214, 76,137,232, 73,129,229, 0,240,255,255, 69, 49,201, /* 0x 370 */
|
||||
76, 41,237, 37,255, 15, 0, 0, 69, 49,192, 72,129,197,255, 15, /* 0x 380 */
|
||||
0, 0, 77,141,164, 4,255, 15, 0, 0,186, 7, 0, 0, 0, 72, /* 0x 390 */
|
||||
129,229, 0,240,255,255, 76,137,239, 72,137,238, 73,129,228, 0, /* 0x 3a0 */
|
||||
240,255,255,232,161,253,255,255, 72,137,195, 72,141, 4, 40, 76, /* 0x 3b0 */
|
||||
41,229, 74,141, 60, 35, 72,137,238, 76, 41,235, 72,137, 68, 36, /* 0x 3c0 */
|
||||
56,232,119,253,255,255,102, 65,131,127, 56, 0, 72,137, 92, 36, /* 0x 3d0 */
|
||||
8,199, 68, 36, 4, 0, 0, 0, 0, 15,132,100, 1, 0, 0, 72, /* 0x 3e0 */
|
||||
131,124, 36, 48, 0,116, 35, 65,131, 62, 6,117, 29, 72,139, 84, /* 0x 3f0 */
|
||||
36, 8, 73, 3, 86, 16,190, 3, 0, 0, 0, 72,139,124, 36, 32, /* 0x 400 */
|
||||
232,173,254,255,255,233, 34, 1, 0, 0, 65,131, 62, 1, 15,133, /* 0x 410 */
|
||||
24, 1, 0, 0, 72,139,124, 36, 8, 73, 3,126, 16,186, 3, 0, /* 0x 420 */
|
||||
0, 0, 65,139, 78, 4,199, 4, 36, 64, 98, 81,115, 73,139, 70, /* 0x 430 */
|
||||
32, 77,139, 78, 8, 68,139, 68, 36, 44,131,225, 7, 72,137,253, /* 0x 440 */
|
||||
72,137,251,129,229,255, 15, 0, 0,193,225, 2,211, 44, 36, 72, /* 0x 450 */
|
||||
41,235,131, 36, 36, 7, 73,137,253, 77, 3,110, 40, 72,131,124, /* 0x 460 */
|
||||
36, 48, 1, 76,141, 36, 40, 72,137,124, 36, 72, 72,137,223, 76, /* 0x 470 */
|
||||
137,230, 72,137, 68, 36, 64, 25,201, 73, 41,233,131,225,224,131, /* 0x 480 */
|
||||
193, 50,232,194,252,255,255, 72, 57,195,117,105, 72,131,124, 36, /* 0x 490 */
|
||||
48, 0,116, 25, 72,139, 76, 36, 16, 72,139, 84, 36, 24, 72,141, /* 0x 4a0 */
|
||||
116, 36, 64, 72,139,124, 36, 48,232,251,252,255,255, 72,137,233, /* 0x 4b0 */
|
||||
76,137,229, 49,192, 72,247,221, 72,137,223,252,129,229,255, 15, /* 0x 4c0 */
|
||||
0, 0, 72,131,124, 36, 48, 0,243,170, 74,141, 60, 35, 72,137, /* 0x 4d0 */
|
||||
233,243,170,116, 14, 73,131,126, 8, 0,117, 7,199, 67, 12, 15, /* 0x 4e0 */
|
||||
5,195,144,139, 20, 36, 76,137,230, 72,137,223,232, 80,252,255, /* 0x 4f0 */
|
||||
255,133,192,116, 10,191,127, 0, 0, 0,232,109,252,255,255, 73, /* 0x 500 */
|
||||
141, 4, 44, 72, 1,195, 76, 57,235,115, 33,139, 20, 36, 73, 41, /* 0x 510 */
|
||||
221, 69, 49,201, 69, 49,192,185, 50, 0, 0, 0, 76,137,238, 72, /* 0x 520 */
|
||||
137,223,232, 34,252,255,255, 72, 57,195,117,201,255, 68, 36, 4, /* 0x 530 */
|
||||
65, 15,183, 71, 56, 73,131,198, 56, 57, 68, 36, 4, 15,140,156, /* 0x 540 */
|
||||
254,255,255, 72,131,124, 36, 48, 0,116, 18,102, 65,131,127, 16, /* 0x 550 */
|
||||
3,116, 10, 72,139,124, 36, 56,232,232,251,255,255, 73,139, 71, /* 0x 560 */
|
||||
24, 72, 1, 68, 36, 8, 72,139, 68, 36, 8, 72,131,196, 88, 91, /* 0x 570 */
|
||||
93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 86, 76,141,114, 64, /* 0x 580 */
|
||||
65, 85, 77,137,205, 65, 84, 77,137,196, 85, 72,137,213, 83, 72, /* 0x 590 */
|
||||
137,203, 49,201, 72,131,236, 48,139, 7, 72,137, 52, 36, 72,137, /* 0x 5a0 */
|
||||
116, 36, 16, 72,141,116, 36, 32, 72,137, 84, 36, 40, 72,137,124, /* 0x 5b0 */
|
||||
36, 8, 76,137,194, 72,137,124, 36, 24, 72,137,231, 72,137, 68, /* 0x 5c0 */
|
||||
36, 32,232,225,251,255,255, 73,139, 86, 16,190, 3, 0, 0, 0, /* 0x 5d0 */
|
||||
72,137,223, 72,131,194, 64,232,214,252,255,255, 72, 15,183, 85, /* 0x 5e0 */
|
||||
56,190, 5, 0, 0, 0, 72,137,223,232,196,252,255,255, 72,139, /* 0x 5f0 */
|
||||
85, 24,190, 9, 0, 0, 0, 72,137,223,232,179,252,255,255, 72, /* 0x 600 */
|
||||
141,116, 36, 16, 77,137,233, 77,137,224, 49,210, 72,137,217, 72, /* 0x 610 */
|
||||
137,239,232,205,252,255,255, 69, 49,237,102,131,125, 56, 0, 73, /* 0x 620 */
|
||||
137,196,116,104, 65,131, 62, 3,117, 82, 73,139,126, 16, 49,210, /* 0x 630 */
|
||||
49,246,232, 45,251,255,255,133,192,137,195,120, 23,186, 0, 4, /* 0x 640 */
|
||||
0, 0, 72,137,238,137,199,232, 20,251,255,255, 72, 61, 0, 4, /* 0x 650 */
|
||||
0, 0,116, 10,191,127, 0, 0, 0,232, 14,251,255,255, 72,137, /* 0x 660 */
|
||||
239, 69, 49,201, 69, 49,192, 49,201,137,218, 49,246,232,114,252, /* 0x 670 */
|
||||
255,255,137,223, 73,137,196,232,236,250,255,255, 15,183, 69, 56, /* 0x 680 */
|
||||
65,255,197, 73,131,198, 56, 65, 57,197,124,152, 72,131,196, 48, /* 0x 690 */
|
||||
76,137,224, 91, 93, 65, 92, 65, 93, 65, 94,195, 0, 0, 0, 0, /* 0x 6a0 */
|
||||
20, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,120, 16, 12, 7, 8, /* 0x 6b0 */
|
||||
144, 1, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, /* 0x 6c0 */
|
||||
128, 1, 16, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, /* 0x 6d0 */
|
||||
65, 14, 16, 46, 8, 87, 14, 8, 46, 0, 95, 14, 0, 0, 0, 0, /* 0x 6e0 */
|
||||
44, 0, 0, 0, 68, 0, 0, 0,184, 1, 16, 0, 0, 0, 0, 0, /* 0x 6f0 */
|
||||
10, 1, 0, 0, 0, 0, 0, 0, 66, 14, 16,141, 2, 69, 14, 24, /* 0x 700 */
|
||||
140, 3, 68, 14, 32,134, 4, 68, 14, 40,131, 5, 71, 14, 80, 0, /* 0x 710 */
|
||||
20, 0, 0, 0,116, 0, 0, 0,194, 2, 16, 0, 0, 0, 0, 0, /* 0x 720 */
|
||||
50, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,140, 0, 0, 0, /* 0x 730 */
|
||||
244, 2, 16, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, /* 0x 740 */
|
||||
66, 14, 16,143, 2, 74, 14, 24,142, 3, 69, 14, 32, 66, 14, 40, /* 0x 750 */
|
||||
65, 14, 48, 65, 14, 56, 68, 14,144, 1,131, 7,134, 6,140, 5, /* 0x 760 */
|
||||
141, 4, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,204, 0, 0, 0, /* 0x 770 */
|
||||
138, 5, 16, 0, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 0, 0, /* 0x 780 */
|
||||
66, 14, 16,142, 2, 70, 14, 24,141, 3, 69, 14, 32,140, 4, 68, /* 0x 790 */
|
||||
14, 40,134, 5, 68, 14, 48,131, 6, 73, 14, 96 /* 0x 7a0 */
|
||||
65, 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104, 76, 3,103, /* 0x 300 */
|
||||
32,102,131,127, 16, 3,137, 84, 36, 60, 15,183, 87, 56, 72,137, /* 0x 310 */
|
||||
76, 36, 48,185, 16, 0, 0, 0, 72,137,116, 36, 64, 76,137, 68, /* 0x 320 */
|
||||
36, 40, 76,137, 76, 36, 32, 15, 68,200, 76,137,230, 72,131,205, /* 0x 330 */
|
||||
255, 49,219,131,193, 34,255,202,120, 33,131, 62, 1,117, 22, 72, /* 0x 340 */
|
||||
139, 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40, 72, 57, /* 0x 350 */
|
||||
195, 72, 15, 66,216, 72,131,198, 56,235,219, 72,129,229, 0,240, /* 0x 360 */
|
||||
255,255, 49,210, 69, 49,201, 72, 41,235, 65,131,200,255, 72,137, /* 0x 370 */
|
||||
239, 72,129,195,255, 15, 0, 0, 72,129,227, 0,240,255,255, 72, /* 0x 380 */
|
||||
137,222,232,194,253,255,255, 72,141, 20, 24, 72, 41,232,102, 65, /* 0x 390 */
|
||||
131,127, 56, 0, 72,137, 68, 36, 24,199, 68, 36, 20, 0, 0, 0, /* 0x 3a0 */
|
||||
0, 72,137, 84, 36, 72, 15,132,139, 1, 0, 0, 72,131,124, 36, /* 0x 3b0 */
|
||||
64, 0,116, 37, 65,131, 60, 36, 6,117, 30, 72,139, 84, 36, 24, /* 0x 3c0 */
|
||||
73, 3, 84, 36, 16,190, 3, 0, 0, 0, 72,139,124, 36, 48,232, /* 0x 3d0 */
|
||||
222,254,255,255,233, 71, 1, 0, 0, 65,131, 60, 36, 1, 15,133, /* 0x 3e0 */
|
||||
60, 1, 0, 0, 72,139, 68, 36, 24, 73, 3, 68, 36, 16, 65,190, /* 0x 3f0 */
|
||||
64, 98, 81,115, 65,139, 76, 36, 4, 65,131,200,255, 73,139, 84, /* 0x 400 */
|
||||
36, 32, 72,137,197, 72,137, 68, 36, 88, 73,139, 68, 36, 40,131, /* 0x 410 */
|
||||
225, 7, 72,137,235, 72,137, 84, 36, 80,193,225, 2,129,227,255, /* 0x 420 */
|
||||
15, 0, 0, 72, 1,232, 65,211,238, 72, 41,221, 72,137, 68, 36, /* 0x 430 */
|
||||
8, 73,139, 68, 36, 8, 65,131,230, 7, 76,141, 44, 26,185, 50, /* 0x 440 */
|
||||
0, 0, 0, 72, 41,216, 72,131,124, 36, 64, 0,117, 7, 68,139, /* 0x 450 */
|
||||
68, 36, 60,177, 18, 68,137,242, 73,137,193, 76,137,238,131,202, /* 0x 460 */
|
||||
2, 72,131,124, 36, 64, 0, 72,137,239, 65, 15, 68,214,232,214, /* 0x 470 */
|
||||
252,255,255, 72, 57,197,117,105, 72,131,124, 36, 64, 0,116, 25, /* 0x 480 */
|
||||
72,139, 76, 36, 32, 72,139, 84, 36, 40, 72,141,116, 36, 80, 72, /* 0x 490 */
|
||||
139,124, 36, 64,232, 15,253,255,255, 76,137,235, 72,247,219,129, /* 0x 4a0 */
|
||||
227,255, 15, 0, 0, 65,246,198, 2,116, 13, 74,141,124, 45, 0, /* 0x 4b0 */
|
||||
49,192, 72,137,217,252,243,170, 72,131,124, 36, 64, 0,116, 43, /* 0x 4c0 */
|
||||
73,131,124, 36, 8, 0,117, 7,199, 69, 12, 15, 5,195,144, 68, /* 0x 4d0 */
|
||||
137,242, 76,137,238, 72,137,239,232,100,252,255,255,133,192,116, /* 0x 4e0 */
|
||||
10,191,127, 0, 0, 0,232,129,252,255,255, 73,141, 68, 29, 0, /* 0x 4f0 */
|
||||
72, 1,197, 72, 59,108, 36, 8,115, 38, 72, 41,108, 36, 8, 69, /* 0x 500 */
|
||||
49,201, 65,131,200,255, 72,139,116, 36, 8,185, 50, 0, 0, 0, /* 0x 510 */
|
||||
68,137,242, 72,137,239,232, 46,252,255,255, 72, 57,197,117,193, /* 0x 520 */
|
||||
255, 68, 36, 20, 65, 15,183, 71, 56, 73,131,196, 56, 57, 68, 36, /* 0x 530 */
|
||||
20, 15,140,117,254,255,255, 72,131,124, 36, 64, 0,116, 18,102, /* 0x 540 */
|
||||
65,131,127, 16, 3,116, 10, 72,139,124, 36, 72,232,244,251,255, /* 0x 550 */
|
||||
255, 73,139, 71, 24, 72, 1, 68, 36, 24, 72,139, 68, 36, 24, 72, /* 0x 560 */
|
||||
131,196,104, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 86, /* 0x 570 */
|
||||
76,141,114, 64, 65, 85, 77,137,205, 65, 84, 77,137,196, 85, 72, /* 0x 580 */
|
||||
137,213, 83, 72,137,203, 49,201, 72,131,236, 48,139, 7, 72,137, /* 0x 590 */
|
||||
52, 36, 72,137,116, 36, 16, 72,141,116, 36, 32, 72,137, 84, 36, /* 0x 5a0 */
|
||||
40, 72,137,124, 36, 8, 76,137,194, 72,137,124, 36, 24, 72,137, /* 0x 5b0 */
|
||||
231, 72,137, 68, 36, 32,232,237,251,255,255, 73,139, 86, 16,190, /* 0x 5c0 */
|
||||
3, 0, 0, 0, 72,137,223, 72,131,194, 64,232,226,252,255,255, /* 0x 5d0 */
|
||||
72, 15,183, 85, 56,190, 5, 0, 0, 0, 72,137,223,232,208,252, /* 0x 5e0 */
|
||||
255,255, 72,139, 85, 24,190, 9, 0, 0, 0, 72,137,223,232,191, /* 0x 5f0 */
|
||||
252,255,255, 72,141,116, 36, 16, 77,137,233, 77,137,224, 49,210, /* 0x 600 */
|
||||
72,137,217, 72,137,239,232,217,252,255,255, 69, 49,237,102,131, /* 0x 610 */
|
||||
125, 56, 0, 73,137,196,116,104, 65,131, 62, 3,117, 82, 73,139, /* 0x 620 */
|
||||
126, 16, 49,210, 49,246,232, 57,251,255,255,133,192,137,195,120, /* 0x 630 */
|
||||
23,186, 0, 4, 0, 0, 72,137,238,137,199,232, 32,251,255,255, /* 0x 640 */
|
||||
72, 61, 0, 4, 0, 0,116, 10,191,127, 0, 0, 0,232, 26,251, /* 0x 650 */
|
||||
255,255, 72,137,239, 69, 49,201, 69, 49,192, 49,201,137,218, 49, /* 0x 660 */
|
||||
246,232,126,252,255,255,137,223, 73,137,196,232,248,250,255,255, /* 0x 670 */
|
||||
15,183, 69, 56, 65,255,197, 73,131,198, 56, 65, 57,197,124,152, /* 0x 680 */
|
||||
72,131,196, 48, 76,137,224, 91, 93, 65, 92, 65, 93, 65, 94,195 /* 0x 690 */
|
||||
};
|
||||
|
||||
+15
-33
@@ -97,32 +97,31 @@ L50:
|
||||
%define MAX_ELF_HDR 512
|
||||
|
||||
sub esp, dword MAX_ELF_HDR + OVERHEAD ; alloca
|
||||
mov edx, esp ; %edx= &tmp
|
||||
push ebx ; save &Elf32_Ehdr of this stub
|
||||
xor ecx, ecx ; 0
|
||||
push ecx ; assume not ET_DYN
|
||||
lea eax, [szElf32_Ehdr + 2*szElf32_Phdr + szl_info + szp_info + ebx] ; 1st &b_info
|
||||
mov esi, [e_entry + ebx] ; beyond compressed data
|
||||
push ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] ; phdr[0].p_memsz, pre-rounded up
|
||||
lea edx, [PAGE_SIZE + edx + ebx] ; 1 page in l_lx_elf86asm for unfold
|
||||
push edx ; end of unmap region
|
||||
sub eax, eax ; 0
|
||||
cmp word [e_type + ebx], byte ET_DYN
|
||||
jne L53
|
||||
pop ecx ; is ET_DYN: discard false assumption
|
||||
add esi, ebx ; relocate e_entry
|
||||
mov ch, PAGE_SIZE>>8 ; %ecx= PAGE_SIZE
|
||||
add ebx, [p_memsz + szElf32_Ehdr + ebx]
|
||||
add ebx, ecx
|
||||
push ebx ; dynbase
|
||||
xchg eax, edx ; dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
L53:
|
||||
push eax ; dynbase
|
||||
|
||||
mov esi, [e_entry + ebx] ; end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 2*szElf32_Phdr + szl_info + szp_info + ebx] ; 1st &b_info
|
||||
sub esi, eax ; length of compressed data
|
||||
mov ebx, [ eax] ; length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] ; length of compressed ELF headers
|
||||
add ecx, byte szb_info
|
||||
lea edx, [3*4 + esp] ; &tmp
|
||||
pusha ; (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi ; swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
EXTERN upx_main
|
||||
call upx_main ; returns entry address
|
||||
add esp, byte 8*4 ; remove 8 params from pusha
|
||||
pop ecx ; dynbase
|
||||
pop ebx ; &Elf32_Ehdr of this stub
|
||||
add esp, byte (8 +1)*4 ; remove 8 params from pusha, also dynbase
|
||||
pop ecx ; end of unmap region
|
||||
pop ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, dword MAX_ELF_HDR + OVERHEAD ; un-alloca
|
||||
push eax ; save entry address
|
||||
|
||||
@@ -135,23 +134,6 @@ L60:
|
||||
jne L60 ; not AT_NULL
|
||||
; edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
|
||||
; _dl_start and company (ld-linux.so.2) once assumed that it had virgin stack,
|
||||
; and did not initialize all its stack local variables to zero.
|
||||
; See bug libc/1165 at http://bugs.gnu.org/cgi-bin/gnatsweb.pl
|
||||
; Found 1999-06-16 glibc-2.1.1
|
||||
; Fixed 1999-12-29 glibc-2.1.2
|
||||
;
|
||||
;%define N_STKCLR (0x100 + MAX_ELF_HDR + OVERHEAD)/4
|
||||
;%define N_STKCLR 8
|
||||
; lea edi, [esp - 4*N_STKCLR]
|
||||
; pusha ; values will be zeroed
|
||||
; mov esi,esp ; save
|
||||
; mov esp,edi ; Linux does not grow stack below esp
|
||||
; mov ecx, N_STKCLR
|
||||
; ; xor eax,eax ; eax already 0 from L60
|
||||
; rep stosd
|
||||
; mov esp,esi ; restore
|
||||
|
||||
push eax
|
||||
push eax
|
||||
push eax
|
||||
@@ -159,7 +141,7 @@ L60:
|
||||
push eax
|
||||
push eax
|
||||
push eax
|
||||
push eax ; 32 bytes of zeroes now on stack
|
||||
push eax ; 32 bytes of zeroes now on stack, ready for 'popa'
|
||||
|
||||
sub ecx, ebx ; length to unmap
|
||||
mov al, __NR_munmap ; eax was 0 from L60
|
||||
|
||||
+102
-105
@@ -1,4 +1,4 @@
|
||||
/* fold_elf86.h -- created from fold_elf86.bin, 1651 (0x673) bytes
|
||||
/* fold_elf86.h -- created from fold_elf86.bin, 1603 (0x643) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,113 +27,110 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386ELF_FOLD_SIZE 1651
|
||||
#define LINUX_I386ELF_FOLD_ADLER32 0x3a4ad069
|
||||
#define LINUX_I386ELF_FOLD_CRC32 0xd4e0324c
|
||||
#define LINUX_I386ELF_FOLD_SIZE 1603
|
||||
#define LINUX_I386ELF_FOLD_ADLER32 0x34baaf28
|
||||
#define LINUX_I386ELF_FOLD_CRC32 0xd41e0330
|
||||
|
||||
unsigned char linux_i386elf_fold[1651] = {
|
||||
unsigned char linux_i386elf_fold[1603] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,128, 0,192, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, /* 0x 30 */
|
||||
0, 0,192, 0,115, 6, 0, 0,116, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,115, 6, 0, 0,116, 6,192, 0, /* 0x 50 */
|
||||
116, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, /* 0x 30 */
|
||||
0, 16,192, 0, 67, 6, 0, 0, 68, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0, 67, 6, 0, 0, 68, 22,192, 0, /* 0x 50 */
|
||||
68, 22,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
41,201,186,120, 2, 0, 0,137,230,137,231,232,112, 0, 0, 0, /* 0x 80 */
|
||||
41,201,186,120, 2, 0, 0,137,230,137,231,232,115, 0, 0, 0, /* 0x 80 */
|
||||
137,230,209,234, 25,192, 41,193,141, 36,196,133,210,117,243,137, /* 0x 90 */
|
||||
231,232, 90, 0, 0, 0,129,236, 0, 10, 0, 0,137,226, 83, 49, /* 0x a0 */
|
||||
201, 81,141,131,140, 0, 0, 0,139,115, 24,102,131,123, 16, 3, /* 0x b0 */
|
||||
117, 11, 89, 1,222,181, 16, 3, 91, 72, 1,203, 83, 41,198,139, /* 0x c0 */
|
||||
24,139, 72, 4,131,193, 12, 96, 71,232,144, 4, 0, 0,131,196, /* 0x d0 */
|
||||
32, 89, 91,129,196, 0, 10, 0, 0, 80, 79, 41,192, 60,175,175, /* 0x e0 */
|
||||
117,252, 80, 80, 80, 80, 80, 80, 80, 80, 41,217,176, 91,255, 39, /* 0x f0 */
|
||||
173,171,133,192,117,250,173,171,133,192,117,250, 87,173,171,131, /* 0x 100 */
|
||||
248, 32,115, 3, 15,179,194,133,192,173,171,117,240,131,239, 8, /* 0x 110 */
|
||||
1,201, 64,243,171, 72,171,171, 95,195, 83,141, 92, 36, 8,106, /* 0x 120 */
|
||||
90, 88,205,128, 91,195, 0, 0, 87, 86,137,206, 83,137,195, 57, /* 0x 130 */
|
||||
8,139,120, 4,115, 10,106,127, 91,106, 1, 88,205,128,235,254, /* 0x 140 */
|
||||
133,201,116, 8,138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, /* 0x 150 */
|
||||
51, 91, 94, 95,195, 85,137,229, 87, 86,137,198, 83,137,211,131, /* 0x 160 */
|
||||
236, 24,139, 69, 8,139,125, 12,137, 69,220,131, 58, 0, 15,132, /* 0x 170 */
|
||||
184, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0,137,240,232,165, /* 0x 180 */
|
||||
255,255,255,139, 69,228,139, 77,232,133,192,117, 19,129,249, 85, /* 0x 190 */
|
||||
80, 88, 33,117, 15,131, 62, 0, 15,132,142, 0, 0, 0,235, 4, /* 0x 1a0 */
|
||||
133,201,117, 10,106,127, 91,106, 1, 88,205,128,235,254, 57,193, /* 0x 1b0 */
|
||||
119,242, 59, 3,119,238, 57,193,115, 85, 15,182, 69,236, 80,141, /* 0x 1c0 */
|
||||
69,224, 80,255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20, /* 0x 1d0 */
|
||||
133,192,117,208,139, 85,224, 59, 85,228,117,200,138, 69,237,132, /* 0x 1e0 */
|
||||
192,116, 34,133,255,116, 30,129,250, 0, 2, 0, 0,119, 4, 57, /* 0x 1f0 */
|
||||
19,117, 18, 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4, /* 0x 200 */
|
||||
255,215,131,196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, /* 0x 210 */
|
||||
83, 4,137,240,232, 15,255,255,255,139, 85,228,139, 3, 1, 83, /* 0x 220 */
|
||||
4, 41,208,133,192,137, 3,233, 66,255,255,255,141,101,244, 91, /* 0x 230 */
|
||||
94, 95,201,195,133,210,137,209,116, 6,198, 0, 0, 64,226,250, /* 0x 240 */
|
||||
195,133,192, 83,137,211,116, 29,168, 1,117, 25,139, 16, 57,218, /* 0x 250 */
|
||||
116, 7, 74,117, 11,133,219,116, 7,137, 24,137, 72, 4,235, 5, /* 0x 260 */
|
||||
131,192, 8,235,231, 91,195, 85,137,229, 87, 86, 83,131,236, 72, /* 0x 270 */
|
||||
137, 85,224,139, 77,224,137, 69,228,139, 93,224,199, 69,204, 0, /* 0x 280 */
|
||||
0, 0, 0, 3, 73, 28,139, 69, 8,139, 85, 12,137, 69,220, 49, /* 0x 290 */
|
||||
192,102,131,123, 16, 2,137, 85,216,137, 77,212,137,202, 15,183, /* 0x 2a0 */
|
||||
75, 44, 15,148,192,131,206,255,193,224, 4,137,207,131,192, 34, /* 0x 2b0 */
|
||||
49,219, 79,137, 69,184,120, 34,131, 58, 1,117, 24,139, 66, 8, /* 0x 2c0 */
|
||||
57,240,115, 8,139,122, 16,137,198,137,125,204, 3, 66, 20, 57, /* 0x 2d0 */
|
||||
195,115, 2,137,195,131,194, 32,226,222,137,247,106, 0,129,231, /* 0x 2e0 */
|
||||
0,240,255,255,106, 0, 41,251,255,117,184,129,195,255, 15, 0, /* 0x 2f0 */
|
||||
0,106, 7,129,227, 0,240,255,255,139, 85,204, 83,137,240, 37, /* 0x 300 */
|
||||
255, 15, 0, 0, 87,137, 93,172,141,180, 2,255, 15, 0, 0,232, /* 0x 310 */
|
||||
6,254,255,255,137,194,131,196, 24, 1,218,129,230, 0,240,255, /* 0x 320 */
|
||||
255,137, 85,240,137,194, 41,243, 1,242,137,217,137, 69,176,137, /* 0x 330 */
|
||||
211,106, 91, 88,205,128,139, 69,176,199, 69,196, 0, 0, 0, 0, /* 0x 340 */
|
||||
139, 85,224, 41,248,102,131,122, 44, 0,137, 69,208, 15,132,195, /* 0x 350 */
|
||||
1, 0, 0,139, 77,212,139, 1,131,248, 6,117, 27,139, 93,212, /* 0x 360 */
|
||||
186, 3, 0, 0, 0,139, 77,208, 3, 75, 8,139, 69,216,232,206, /* 0x 370 */
|
||||
254,255,255,233,135, 1, 0, 0, 72, 15,133,128, 1, 0, 0,139, /* 0x 380 */
|
||||
125,212,199, 69,192, 64, 98, 81,115,139, 69,208,139, 79, 24, 3, /* 0x 390 */
|
||||
71, 8,131,225, 7,139, 87, 16,193,225, 2,211,109,192,137,195, /* 0x 3a0 */
|
||||
139, 79, 20,137,199,129,231,255, 15, 0, 0,137, 85,232,141, 52, /* 0x 3b0 */
|
||||
58,139, 85,212, 1,193,137, 69,236,139, 66, 4, 41,251,131,101, /* 0x 3c0 */
|
||||
192, 7, 41,248,131,125,220, 1, 80,255,117,228, 25,192,137, 77, /* 0x 3d0 */
|
||||
188,131,224,224,131,192, 50,131,125,220, 0, 80,137,240,106, 3, /* 0x 3e0 */
|
||||
116, 3,141, 70, 3, 80, 83,232, 46,253,255,255,131,196, 24, 57, /* 0x 3f0 */
|
||||
195, 15,133,186, 0, 0, 0,131,125,220, 0,116, 34,139, 77,212, /* 0x 400 */
|
||||
49,192,246, 65, 24, 1,116, 6,139, 69,228,131,192, 2, 80,139, /* 0x 410 */
|
||||
69,220,255,117,228,141, 85,232,232, 56,253,255,255, 88, 90,137, /* 0x 420 */
|
||||
250,137,247,137,216,247,223,232, 8,254,255,255,129,231,255, 15, /* 0x 430 */
|
||||
0, 0,141, 4, 51,137,250,137,125,180,232,245,253,255,255,131, /* 0x 440 */
|
||||
125,220, 0,116, 94,139, 69,212,131, 56, 1,117, 86,246, 64, 24, /* 0x 450 */
|
||||
1,116, 80,139, 80, 20,139,120, 8,141, 12, 58, 3, 77,208, 59, /* 0x 460 */
|
||||
80, 16,117, 14,137,200,247,216, 37,255, 15, 0, 0,131,248, 3, /* 0x 470 */
|
||||
119, 17,139, 85,212,107, 69,208, 52,131,122, 4, 0,141, 76, 7, /* 0x 480 */
|
||||
12,117, 15,139, 1, 61,205,128, 97,195,116, 6,199, 1,205,128, /* 0x 490 */
|
||||
97,195,133,201,116, 13,139, 69,216, 49,210,131,224,254,232,158, /* 0x 4a0 */
|
||||
253,255,255,137,241,139, 85,192,106,125, 88,205,128,133,192,116, /* 0x 4b0 */
|
||||
10,106,127, 91,106, 1, 88,205,128,235,254,139,125,180,141, 4, /* 0x 4c0 */
|
||||
62, 1,195, 59, 93,188,115, 30,106, 0,106, 0,106, 50,255,117, /* 0x 4d0 */
|
||||
192, 41, 93,188,255,117,188, 83,232, 61,252,255,255,131,196, 24, /* 0x 4e0 */
|
||||
57,195,116, 27,235,203,131,125,220, 0,116, 19,141, 78, 3,129, /* 0x 4f0 */
|
||||
225,255, 15, 0, 0,131,249, 3,119, 5,106, 91, 88,205,128,139, /* 0x 500 */
|
||||
85,224,255, 69,196, 15,183, 66, 44,131, 69,212, 32, 57, 69,196, /* 0x 510 */
|
||||
15,140, 61,254,255,255,131,125,220, 0,117, 14,139, 93,228,106, /* 0x 520 */
|
||||
6, 88,205,128,133,192,116, 20,235,135,139,125,224,102,131,127, /* 0x 530 */
|
||||
16, 3,116, 8,139, 93,240,106, 45, 88,205,128,131,125, 16, 0, /* 0x 540 */
|
||||
116, 8,139, 85,208,139, 69, 16,137, 16,139, 77,224,139, 73, 24, /* 0x 550 */
|
||||
1, 77,208,139, 69,208,141,101,244, 91, 94, 95,201,195, 85,137, /* 0x 560 */
|
||||
229, 87, 86, 83,131,236, 12,139,125, 28,106, 0,139, 69, 16,141, /* 0x 570 */
|
||||
87, 52,139,117, 8, 80,139, 93, 32,137, 69,236,137, 85,232,141, /* 0x 580 */
|
||||
69, 32,141, 85, 24,232,203,251,255,255,139, 69, 12, 15,183, 79, /* 0x 590 */
|
||||
44,186, 5, 0, 0, 0,137, 69, 32,137,240, 41, 93, 36,232,158, /* 0x 5a0 */
|
||||
252,255,255, 15,183, 79, 42,186, 4, 0, 0, 0,137,240,232,142, /* 0x 5b0 */
|
||||
252,255,255,139, 93,232,139, 77, 40,186, 3, 0, 0, 0, 3, 75, /* 0x 5c0 */
|
||||
8,137,240,131,193, 52,232,118,252,255,255,141, 69,240,137,250, /* 0x 5d0 */
|
||||
80,141, 69, 32, 86, 80,139, 69,236,232,137,252,255,255,186, 9, /* 0x 5e0 */
|
||||
0, 0, 0,137,193,137,195,137,240,232, 83,252,255,255,102,139, /* 0x 5f0 */
|
||||
79, 44,131,196, 20, 49,210,102,133,201,116, 93,139, 69,232,131, /* 0x 600 */
|
||||
56, 3,117, 73,139, 93,240, 49,201, 3, 88, 8,137,202,106, 5, /* 0x 610 */
|
||||
88,205,128,133,192,137,198,120, 20,102,186, 0, 2,137,195,137, /* 0x 620 */
|
||||
249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91, /* 0x 630 */
|
||||
106, 1, 88,205,128,235,254,106, 0,137,250,106, 0,137,240,106, /* 0x 640 */
|
||||
0,232, 33,252,255,255,131,196, 12,137,195,235, 12, 66, 15,183, /* 0x 650 */
|
||||
193,131, 69,232, 32, 57,194,124,163,141,101,244,137,216, 91, 94, /* 0x 660 */
|
||||
95,201,195 /* 0x 670 */
|
||||
231,232, 93, 0, 0, 0,129,236, 0, 10, 0, 0, 83,139, 83, 72, /* 0x a0 */
|
||||
141,148, 26, 0, 16, 0, 0, 82, 41,192,102,131,123, 16, 3,117, /* 0x b0 */
|
||||
1,146, 80,139,115, 24,141,131,140, 0, 0, 0, 41,198,139, 24, /* 0x c0 */
|
||||
139, 72, 4,131,193, 12,141, 84, 36, 12, 96, 71,232, 92, 4, 0, /* 0x d0 */
|
||||
0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 80, 79, 41,192, /* 0x e0 */
|
||||
60,175,175,117,252, 80, 80, 80, 80, 80, 80, 80, 80, 41,217,176, /* 0x f0 */
|
||||
91,255, 39,173,171,133,192,117,250,173,171,133,192,117,250, 87, /* 0x 100 */
|
||||
173,171,131,248, 32,115, 3, 15,179,194,133,192,173,171,117,240, /* 0x 110 */
|
||||
131,239, 8, 1,201, 64,243,171, 72,171,171, 95,195, 83,141, 92, /* 0x 120 */
|
||||
36, 8,106, 90, 88,205,128, 91,195, 0, 0, 0, 87, 86,137,206, /* 0x 130 */
|
||||
83,137,195, 57, 8,139,120, 4,115, 10,106,127, 91,106, 1, 88, /* 0x 140 */
|
||||
205,128,235,254,133,201,116, 8,138, 7, 71,136, 2, 66,226,248, /* 0x 150 */
|
||||
1,115, 4, 41, 51, 91, 94, 95,195, 85,137,229, 87, 86,137,198, /* 0x 160 */
|
||||
83,137,211,131,236, 24,139, 69, 8,139,125, 12,137, 69,220,131, /* 0x 170 */
|
||||
58, 0, 15,132,184, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0, /* 0x 180 */
|
||||
137,240,232,165,255,255,255,139, 69,228,139, 77,232,133,192,117, /* 0x 190 */
|
||||
19,129,249, 85, 80, 88, 33,117, 15,131, 62, 0, 15,132,142, 0, /* 0x 1a0 */
|
||||
0, 0,235, 4,133,201,117, 10,106,127, 91,106, 1, 88,205,128, /* 0x 1b0 */
|
||||
235,254, 57,193,119,242, 59, 3,119,238, 57,193,115, 85, 15,182, /* 0x 1c0 */
|
||||
69,236, 80,141, 69,224, 80,255,115, 4, 81,255,118, 4,255, 85, /* 0x 1d0 */
|
||||
220,131,196, 20,133,192,117,208,139, 85,224, 59, 85,228,117,200, /* 0x 1e0 */
|
||||
138, 69,237,132,192,116, 34,133,255,116, 30,129,250, 0, 2, 0, /* 0x 1f0 */
|
||||
0,119, 4, 57, 19,117, 18, 15,182,192, 80, 15,182, 69,238, 80, /* 0x 200 */
|
||||
82,255,115, 4,255,215,131,196, 16,139, 69,232, 1, 70, 4, 41, /* 0x 210 */
|
||||
6,235, 10,139, 83, 4,137,240,232, 15,255,255,255,139, 85,228, /* 0x 220 */
|
||||
139, 3, 1, 83, 4, 41,208,133,192,137, 3,233, 66,255,255,255, /* 0x 230 */
|
||||
141,101,244, 91, 94, 95,201,195,133,192, 83,137,211,116, 29,168, /* 0x 240 */
|
||||
1,117, 25,139, 16, 57,218,116, 7, 74,117, 11,133,219,116, 7, /* 0x 250 */
|
||||
137, 24,137, 72, 4,235, 5,131,192, 8,235,231, 91,195, 85,137, /* 0x 260 */
|
||||
229, 87, 86, 83,131,236, 64,137, 85,224,139, 77,224,137, 69,228, /* 0x 270 */
|
||||
139, 85, 12, 3, 73, 28,139, 69, 8,137, 85,216,139, 93,224,139, /* 0x 280 */
|
||||
85,224,137, 69,220, 49,192,102,131,123, 16, 2,137, 77,212,137, /* 0x 290 */
|
||||
203, 15,183, 74, 44, 15,148,192,131,207,255,193,224, 4,137,202, /* 0x 2a0 */
|
||||
49,246,131,192, 34, 74,120, 28,131, 59, 1,117, 18,139, 83, 8, /* 0x 2b0 */
|
||||
57,250,115, 2,137,215, 3, 83, 20, 57,214,115, 2,137,214,131, /* 0x 2c0 */
|
||||
195, 32,226,228,137,251,106, 0,129,227, 0,240,255,255,106,255, /* 0x 2d0 */
|
||||
41,222, 80,129,198,255, 15, 0, 0,106, 0,129,230, 0,240,255, /* 0x 2e0 */
|
||||
255, 86, 83,232, 53,254,255,255,139, 77,224,141, 52, 48,131,196, /* 0x 2f0 */
|
||||
24, 41,216,102,131,121, 44, 0,137,117,240,137, 69,208,199, 69, /* 0x 300 */
|
||||
204, 0, 0, 0, 0, 15,132,218, 1, 0, 0,139, 93,212,139, 3, /* 0x 310 */
|
||||
131,248, 6,117, 24,139, 77,208,186, 3, 0, 0, 0, 3, 75, 8, /* 0x 320 */
|
||||
139, 69,216,232, 16,255,255,255,233,161, 1, 0, 0, 72, 15,133, /* 0x 330 */
|
||||
154, 1, 0, 0,139, 69,212,199, 69,200, 64, 98, 81,115,139, 85, /* 0x 340 */
|
||||
212,139, 72, 24,139, 90, 20,131,225, 7,193,225, 2,211,109,200, /* 0x 350 */
|
||||
139, 72, 16,139, 69,208, 3, 66, 8,137, 77,232,131,101,200, 7, /* 0x 360 */
|
||||
137,194, 1,195,129,226,255, 15, 0, 0,137,199,141, 52, 17,139, /* 0x 370 */
|
||||
77,212,137, 69,236, 41,215,139, 65, 4,137, 93,196, 41,208,131, /* 0x 380 */
|
||||
125,220, 0, 80,139, 69,228,116, 3,131,200,255,131,125,220, 1, /* 0x 390 */
|
||||
80, 25,192,131,224,224,131,192, 50,131,125,220, 0, 80,139, 69, /* 0x 3a0 */
|
||||
200,116, 3,131,200, 2,131,125,220, 0, 80,137,240,116, 3,141, /* 0x 3b0 */
|
||||
70, 3, 80, 87,232,100,253,255,255,131,196, 24, 57,199, 15,133, /* 0x 3c0 */
|
||||
187, 0, 0, 0,131,125,220, 0,116, 31, 49,192,246, 69,200, 4, /* 0x 3d0 */
|
||||
116, 6,139, 69,228,131,192, 2, 80,139, 69,220,255,117,228,141, /* 0x 3e0 */
|
||||
85,232,232,114,253,255,255, 88, 90,137,243,247,219,129,227,255, /* 0x 3f0 */
|
||||
15, 0, 0,246, 69,200, 2,137, 93,192,116, 15,133,219,141, 4, /* 0x 400 */
|
||||
55,116, 8,137,217,198, 0, 0, 64,226,250,131,125,220, 0,116, /* 0x 410 */
|
||||
120,139, 69,212,131, 56, 1,117, 86,246, 64, 24, 1,116, 80,139, /* 0x 420 */
|
||||
80, 20,139, 88, 8,141, 12, 26, 3, 77,208, 59, 80, 16,117, 14, /* 0x 430 */
|
||||
137,200,247,216, 37,255, 15, 0, 0,131,248, 3,119, 17,139, 85, /* 0x 440 */
|
||||
212,107, 69,208, 52,131,122, 4, 0,141, 76, 3, 12,117, 15,139, /* 0x 450 */
|
||||
1, 61,205,128, 97,195,116, 6,199, 1,205,128, 97,195,133,201, /* 0x 460 */
|
||||
116, 13,139, 69,216, 49,210,131,224,254,232,201,253,255,255,137, /* 0x 470 */
|
||||
251,137,241,139, 85,200,106,125, 88,205,128,133,192,116, 10,106, /* 0x 480 */
|
||||
127, 91,106, 1, 88,205,128,235,254,139, 85,192,141, 4, 22,141, /* 0x 490 */
|
||||
28, 7, 59, 93,196,115, 30,106, 0,106,255,106, 50,255,117,200, /* 0x 4a0 */
|
||||
41, 93,196,255,117,196, 83,232,113,252,255,255,131,196, 24, 57, /* 0x 4b0 */
|
||||
195,116, 27,235,202,131,125,220, 0,116, 19,141, 78, 3,129,225, /* 0x 4c0 */
|
||||
255, 15, 0, 0,131,249, 3,119, 5,106, 91, 88,205,128,139, 77, /* 0x 4d0 */
|
||||
224,255, 69,204, 15,183, 65, 44,131, 69,212, 32, 57, 69,204, 15, /* 0x 4e0 */
|
||||
140, 38,254,255,255,131,125,220, 0,117, 14,139, 93,228,106, 6, /* 0x 4f0 */
|
||||
88,205,128,133,192,116, 20,235,134,139, 69,224,102,131,120, 16, /* 0x 500 */
|
||||
3,116, 8,139, 93,240,106, 45, 88,205,128,131,125, 16, 0,116, /* 0x 510 */
|
||||
8,139, 77,208,139, 85, 16,137, 10,139, 93,224,139, 91, 24, 1, /* 0x 520 */
|
||||
93,208,139, 69,208,141,101,244, 91, 94, 95,201,195, 85,137,229, /* 0x 530 */
|
||||
87, 86, 83,131,236, 24,139,125, 28,106, 0,139, 69, 16,141, 87, /* 0x 540 */
|
||||
52,139,117, 8, 80,139, 93, 32,137, 69,236,137, 85,232,141, 69, /* 0x 550 */
|
||||
32,141, 85, 24,232, 0,252,255,255,139, 69, 12, 15,183, 79, 44, /* 0x 560 */
|
||||
186, 5, 0, 0, 0,137, 69, 32,137,240, 41, 93, 36,232,198,252, /* 0x 570 */
|
||||
255,255, 15,183, 79, 42,186, 4, 0, 0, 0,137,240,232,182,252, /* 0x 580 */
|
||||
255,255,139, 93,232,139, 77, 40,186, 3, 0, 0, 0, 3, 75, 8, /* 0x 590 */
|
||||
137,240,131,193, 52,232,158,252,255,255,141, 69,240,137,250, 80, /* 0x 5a0 */
|
||||
141, 69, 32, 86, 80,139, 69,236,232,177,252,255,255,186, 9, 0, /* 0x 5b0 */
|
||||
0, 0,137,193,137,195,137,240,232,123,252,255,255,102,139, 79, /* 0x 5c0 */
|
||||
44,131,196, 20, 49,210,102,133,201,116, 94,139, 69,232,131, 56, /* 0x 5d0 */
|
||||
3,117, 74,139, 93,240, 49,201, 3, 88, 8,137,202,106, 5, 88, /* 0x 5e0 */
|
||||
205,128,133,192,137,198,120, 21,186, 0, 2, 0, 0,137,195,137, /* 0x 5f0 */
|
||||
249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91, /* 0x 600 */
|
||||
106, 1, 88,205,128,235,254,106, 0,137,250,106, 0,137,240,106, /* 0x 610 */
|
||||
0,232, 72,252,255,255,131,196, 12,137,195,235, 12, 66, 15,183, /* 0x 620 */
|
||||
193,131, 69,232, 32, 57,194,124,162,141,101,244,137,216, 91, 94, /* 0x 630 */
|
||||
95,201,195 /* 0x 640 */
|
||||
};
|
||||
|
||||
+98
-102
@@ -1,4 +1,4 @@
|
||||
/* fold_elfppc32.h -- created from fold_elfppc32.bin, 2324 (0x914) bytes
|
||||
/* fold_elfppc32.h -- created from fold_elfppc32.bin, 2260 (0x8d4) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,18 +27,18 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELFPPC32_FOLD_SIZE 2324
|
||||
#define LINUX_ELFPPC32_FOLD_ADLER32 0x0789a535
|
||||
#define LINUX_ELFPPC32_FOLD_CRC32 0x665028e2
|
||||
#define LINUX_ELFPPC32_FOLD_SIZE 2260
|
||||
#define LINUX_ELFPPC32_FOLD_ADLER32 0x6c8685d0
|
||||
#define LINUX_ELFPPC32_FOLD_CRC32 0xa1bffc23
|
||||
|
||||
unsigned char linux_elfppc32_fold[2324] = {
|
||||
unsigned char linux_elfppc32_fold[2260] = {
|
||||
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */
|
||||
0, 0, 7,252, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 40, /* 0x 20 */
|
||||
0, 0, 7,188, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 40, /* 0x 20 */
|
||||
0, 7, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */
|
||||
0, 16, 0, 0, 0, 0, 7,196, 0, 0, 7,196, 0, 0, 0, 5, /* 0x 40 */
|
||||
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,196, 0, 16, 7,196, /* 0x 50 */
|
||||
0, 16, 7,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, /* 0x 60 */
|
||||
0, 16, 0, 0, 0, 0, 7,132, 0, 0, 7,132, 0, 0, 0, 5, /* 0x 40 */
|
||||
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,132, 0, 16, 7,132, /* 0x 50 */
|
||||
0, 16, 7,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, /* 0x 60 */
|
||||
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */
|
||||
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 90 */
|
||||
@@ -50,7 +50,7 @@ unsigned char linux_elfppc32_fold[2324] = {
|
||||
47,130, 0, 0, 64,158,255,244, 78,128, 0, 32,125, 8, 2,166, /* 0x f0 */
|
||||
129, 33, 0, 0, 75,255,255,229, 75,255,255,225,128,159,255,248, /* 0x 100 */
|
||||
85, 30, 0, 38, 56,161,248, 0,127,231,251,120,124,100,248, 80, /* 0x 110 */
|
||||
56, 33,247,240, 84,125, 0, 38,128,195, 0, 24, 72, 0, 5, 73, /* 0x 120 */
|
||||
56, 33,247,240, 84,125, 0, 38,128,195, 0, 24, 72, 0, 5, 9, /* 0x 120 */
|
||||
124,127, 27,120,127,163,235,120,124,157,240, 80, 72, 0, 0, 81, /* 0x 130 */
|
||||
127,232, 3,166,184, 65, 8, 20,128, 33, 8, 16, 78,128, 0, 32, /* 0x 140 */
|
||||
56, 0, 0, 90, 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, /* 0x 150 */
|
||||
@@ -86,96 +86,92 @@ unsigned char linux_elfppc32_fold[2324] = {
|
||||
129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0, /* 0x 330 */
|
||||
124, 0, 90, 20,144, 31, 0, 4,145, 63, 0, 0, 75,255,254,228, /* 0x 340 */
|
||||
128, 1, 0, 68,187,129, 0, 48, 56, 33, 0, 64,124, 8, 3,166, /* 0x 350 */
|
||||
78,128, 0, 32,124,128, 35,121,124, 9, 3,166, 77,130, 0, 32, /* 0x 360 */
|
||||
56, 0, 0, 0,152, 3, 0, 0, 56, 99, 0, 1, 66, 0,255,248, /* 0x 370 */
|
||||
78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255, /* 0x 380 */
|
||||
125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, /* 0x 390 */
|
||||
33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, /* 0x 3a0 */
|
||||
65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, /* 0x 3b0 */
|
||||
56, 99, 0, 8, 75,255,255,208,124, 8, 2,166,148, 33,255,160, /* 0x 3c0 */
|
||||
125,128, 0, 38,190, 65, 0, 40,124,121, 27,120,124,151, 35,120, /* 0x 3d0 */
|
||||
144, 1, 0,100,124,181, 43,120,161, 67, 0, 44,124,210, 51,120, /* 0x 3e0 */
|
||||
160, 3, 0, 16,124,243, 59,120, 53, 74,255,255,129, 35, 0, 28, /* 0x 3f0 */
|
||||
104, 0, 0, 3,145,129, 0, 36,124, 0, 0,208,127, 99, 74, 20, /* 0x 400 */
|
||||
84, 3, 46,246,125, 20, 67,120, 56, 99, 8, 34,127,107,219,120, /* 0x 410 */
|
||||
59,128,255,255, 59,192, 0, 0, 59,224, 0, 0, 65,128, 0, 72, /* 0x 420 */
|
||||
57, 74, 0, 1,125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, /* 0x 430 */
|
||||
64,190, 0, 44,129, 43, 0, 8,127,137,224, 64, 64,156, 0, 12, /* 0x 440 */
|
||||
131,235, 0, 16,125, 60, 75,120,128, 11, 0, 20,124, 0, 74, 20, /* 0x 450 */
|
||||
127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, 57,107, 0, 32, /* 0x 460 */
|
||||
66, 0,255,200, 87,128, 5, 62, 87,156, 0, 38,125, 60,240, 80, /* 0x 470 */
|
||||
127,255, 2, 20, 57, 41, 15,255, 56, 31, 15,255, 85, 62, 0, 38, /* 0x 480 */
|
||||
84, 31, 0, 38,124,102, 27,120,127,196,243,120, 56,160, 0, 7, /* 0x 490 */
|
||||
126,167,171,120, 57, 0, 0, 0,127,131,227,120, 75,255,252,165, /* 0x 4a0 */
|
||||
124,159,240, 80,124, 3,242, 20,124,125, 27,120, 56,160, 0, 0, /* 0x 4b0 */
|
||||
124, 99,250, 20,144, 1, 0, 8, 75,255,252,189,160, 25, 0, 44, /* 0x 4c0 */
|
||||
58,192, 0, 0,127, 28,232, 80,127,150, 0, 0, 64,156, 1,116, /* 0x 4d0 */
|
||||
45,151, 0, 0, 65,142, 0, 40,128, 27, 0, 0, 47,128, 0, 6, /* 0x 4e0 */
|
||||
64,190, 0, 28,128,187, 0, 8,126, 67,147,120, 56,128, 0, 3, /* 0x 4f0 */
|
||||
124,165,194, 20, 75,255,254,129, 72, 0, 1, 52,128, 27, 0, 0, /* 0x 500 */
|
||||
47,128, 0, 1, 64,190, 1, 40,128, 27, 0, 24, 61, 32,115, 81, /* 0x 510 */
|
||||
129, 91, 0, 8, 97, 41, 98, 64, 84, 0, 22,250,129,123, 0, 20, /* 0x 520 */
|
||||
125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255,124,160,185, 16, /* 0x 530 */
|
||||
128, 27, 0, 16, 85, 58, 7,126,127,170, 90, 20, 84,165, 8, 60, /* 0x 540 */
|
||||
127,254, 80, 80,144, 1, 0, 16,127,128,242, 20,145, 65, 0, 20, /* 0x 550 */
|
||||
127,255,194, 20,127,189,194, 20,124,165,211,120, 65,142, 0, 12, /* 0x 560 */
|
||||
56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18,129, 27, 0, 4, /* 0x 570 */
|
||||
127,227,251,120,127,132,227,120,126,167,171,120,125, 30, 64, 80, /* 0x 580 */
|
||||
75,255,251,193,127,159, 24, 0, 64,158, 0,104, 65,174, 0, 24, /* 0x 590 */
|
||||
126,227,187,120, 56,129, 0, 16,126,101,155,120,126,134,163,120, /* 0x 5a0 */
|
||||
75,255,252, 89, 87, 64,255,254, 46, 0, 0, 0, 65,178, 0, 16, /* 0x 5b0 */
|
||||
127,196,243,120,127,227,251,120, 75,255,253,157,124, 28, 0,208, /* 0x 5c0 */
|
||||
84, 30, 5, 62, 65,178, 0, 16,124,127,226, 20,127,196,243,120, /* 0x 5d0 */
|
||||
75,255,253,133, 65,174, 0, 36,127,227,251,120,127,132,227,120, /* 0x 5e0 */
|
||||
127, 69,211,120, 75,255,251,145, 47,131, 0, 0, 65,190, 0, 12, /* 0x 5f0 */
|
||||
56, 96, 0,127, 75,255,251, 97,124, 28,242, 20,127,255, 2, 20, /* 0x 600 */
|
||||
127,159,232, 64, 64,188, 0, 40,124,159,232, 80,127, 69,211,120, /* 0x 610 */
|
||||
127,227,251,120, 56,192, 0, 50, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 620 */
|
||||
75,255,251, 33,127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, /* 0x 630 */
|
||||
58,214, 0, 1, 59,123, 0, 32,127,150, 0, 0, 75,255,254,144, /* 0x 640 */
|
||||
128,121, 0, 24,128, 1, 0,100,129,129, 0, 36,124, 99,194, 20, /* 0x 650 */
|
||||
124, 8, 3,166,186, 65, 0, 40,125,129,129, 32, 56, 33, 0, 96, /* 0x 660 */
|
||||
78,128, 0, 32,124, 8, 2,166,148, 33,255,192, 56,132,255,232, /* 0x 670 */
|
||||
191, 97, 0, 44,144,129, 0, 8,124,191, 43,120,144, 1, 0, 68, /* 0x 680 */
|
||||
56, 3, 0, 24,144, 1, 0, 12,124,229, 59,120,128, 3, 0, 24, /* 0x 690 */
|
||||
56,192, 0, 0,200, 1, 0, 8, 56, 97, 0, 8, 56,129, 0, 16, /* 0x 6a0 */
|
||||
59,223, 0, 52,125, 61, 75,120,124,251, 59,120,144, 1, 0, 16, /* 0x 6b0 */
|
||||
125, 28, 67,120,216, 1, 0, 24,147,225, 0, 20, 75,255,251, 61, /* 0x 6c0 */
|
||||
128,190, 0, 8,127,163,235,120, 56,128, 0, 3, 56,165, 0, 52, /* 0x 6d0 */
|
||||
75,255,252,165,160,191, 0, 44,127,163,235,120, 56,128, 0, 5, /* 0x 6e0 */
|
||||
75,255,252,149,128,191, 0, 24,127,163,235,120, 56,128, 0, 9, /* 0x 6f0 */
|
||||
75,255,252,133,127,103,219,120,127,136,227,120,127,227,251,120, /* 0x 700 */
|
||||
127,166,235,120, 56,129, 0, 24, 56,160, 0, 0, 59, 96, 0, 0, /* 0x 710 */
|
||||
75,255,252,169,160, 31, 0, 44,124,124, 27,120,127,155, 0, 0, /* 0x 720 */
|
||||
64,156, 0,124,128, 30, 0, 0, 59,123, 0, 1, 56,128, 0, 0, /* 0x 730 */
|
||||
56,160, 0, 0, 47,128, 0, 3, 64,190, 0, 88,128,126, 0, 8, /* 0x 740 */
|
||||
75,255,250, 37,127,228,251,120,124,125, 27,121, 56,160, 2, 0, /* 0x 750 */
|
||||
65,128, 0, 40, 75,255,250, 9, 56,128, 0, 0, 47,131, 2, 0, /* 0x 760 */
|
||||
127,165,235,120,127,227,251,120, 56,192, 0, 0, 56,224, 0, 0, /* 0x 770 */
|
||||
57, 0, 0, 0, 65,190, 0, 12, 56, 96, 0,127, 75,255,249,217, /* 0x 780 */
|
||||
75,255,252, 57,124,124, 27,120,127,163,235,120, 75,255,249,225, /* 0x 790 */
|
||||
160, 31, 0, 44, 59,222, 0, 32, 75,255,255,132,128, 1, 0, 68, /* 0x 7a0 */
|
||||
127,131,227,120,187, 97, 0, 44, 56, 33, 0, 64,124, 8, 3,166, /* 0x 7b0 */
|
||||
78,128, 0, 32, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46, /* 0x 7c0 */
|
||||
116,101,120,116, 0, 46, 98,115,115, 0, 46,115,100, 97,116, 97, /* 0x 7d0 */
|
||||
0, 46,115,100, 97,116, 97, 50, 0, 46,110,111,116,101, 46, 71, /* 0x 7e0 */
|
||||
78, 85, 45,115,116, 97, 99,107, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 800 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 810 */
|
||||
0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 1, 0, 0, 0, 6, /* 0x 820 */
|
||||
0, 16, 0,128, 0, 0, 0,128, 0, 0, 7, 68, 0, 0, 0, 0, /* 0x 830 */
|
||||
0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, /* 0x 840 */
|
||||
0, 0, 0, 8, 0, 0, 0, 3, 0, 16, 7,196, 0, 0, 7,196, /* 0x 850 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 860 */
|
||||
0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 3, /* 0x 870 */
|
||||
0, 16, 7,196, 0, 0, 7,196, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 880 */
|
||||
0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 29, /* 0x 890 */
|
||||
0, 0, 0, 1, 0, 0, 0, 2, 0, 16, 7,196, 0, 0, 7,196, /* 0x 8a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 8b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 7, 0, 0, 0, 0, /* 0x 8c0 */
|
||||
0, 0, 0, 0, 0, 0, 7,196, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 8e0 */
|
||||
0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,196, /* 0x 8f0 */
|
||||
0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 900 */
|
||||
0, 0, 0, 0 /* 0x 910 */
|
||||
78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255, /* 0x 360 */
|
||||
125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, /* 0x 370 */
|
||||
33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, /* 0x 380 */
|
||||
65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, /* 0x 390 */
|
||||
56, 99, 0, 8, 75,255,255,208,124, 8, 2,166,148, 33,255,160, /* 0x 3a0 */
|
||||
125,128, 0, 38,190, 65, 0, 40,124,121, 27,120,124,151, 35,120, /* 0x 3b0 */
|
||||
144, 1, 0,100,124,178, 43,120,161, 67, 0, 44,124,211, 51,120, /* 0x 3c0 */
|
||||
160, 3, 0, 16,124,244, 59,120, 53, 74,255,255,129, 35, 0, 28, /* 0x 3d0 */
|
||||
104, 0, 0, 3,145,129, 0, 36,124, 0, 0,208,127,163, 74, 20, /* 0x 3e0 */
|
||||
84, 3, 46,246,125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, /* 0x 3f0 */
|
||||
59,224,255,255, 59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1, /* 0x 400 */
|
||||
125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40, /* 0x 410 */
|
||||
129, 43, 0, 8,127,137,248, 64, 64,156, 0, 8,125, 63, 75,120, /* 0x 420 */
|
||||
128, 11, 0, 20,124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8, /* 0x 430 */
|
||||
124, 30, 3,120, 57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38, /* 0x 440 */
|
||||
124,102, 27,120,125, 63,240, 80,127,227,251,120, 57, 41, 15,255, /* 0x 450 */
|
||||
56,160, 0, 0, 85, 62, 0, 38, 56,224,255,255,127,196,243,120, /* 0x 460 */
|
||||
57, 0, 0, 0, 75,255,252,221,160, 25, 0, 44, 58,192, 0, 0, /* 0x 470 */
|
||||
127, 31, 24, 80,127,150, 0, 0,124, 3,242, 20,144, 1, 0, 8, /* 0x 480 */
|
||||
64,156, 1,128, 46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, /* 0x 490 */
|
||||
47,128, 0, 6, 64,190, 0, 28,128,189, 0, 8,126, 99,155,120, /* 0x 4a0 */
|
||||
56,128, 0, 3,124,165,194, 20, 75,255,254,173, 72, 0, 1, 64, /* 0x 4b0 */
|
||||
128, 29, 0, 0, 47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24, /* 0x 4c0 */
|
||||
61, 32,115, 81,129, 93, 0, 8, 97, 41, 98, 64, 84, 0, 22,250, /* 0x 4d0 */
|
||||
129,125, 0, 20,125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255, /* 0x 4e0 */
|
||||
124,160,185, 16,128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, /* 0x 4f0 */
|
||||
84,165, 8, 60,127,254, 80, 80,144, 1, 0, 16,127,128,242, 20, /* 0x 500 */
|
||||
145, 65, 0, 20,127,255,194, 20,127,123,194, 20,124,165,211,120, /* 0x 510 */
|
||||
65,146, 0, 12, 56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, /* 0x 520 */
|
||||
64,146, 0, 12,126, 71,147,120, 72, 0, 0, 8, 56,224,255,255, /* 0x 530 */
|
||||
129, 29, 0, 4,127,227,251,120,127,132,227,120,125, 30, 64, 80, /* 0x 540 */
|
||||
75,255,252, 1,127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24, /* 0x 550 */
|
||||
126,227,187,120, 56,129, 0, 16,126,133,163,120,126,166,171,120, /* 0x 560 */
|
||||
75,255,252,153,115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, /* 0x 570 */
|
||||
65,130, 0, 36, 47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24, /* 0x 580 */
|
||||
127,201, 3,166, 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, /* 0x 590 */
|
||||
66, 0,255,248, 65,178, 0, 36,127,227,251,120,127,132,227,120, /* 0x 5a0 */
|
||||
127, 69,211,120, 75,255,251,209, 47,131, 0, 0, 65,190, 0, 12, /* 0x 5b0 */
|
||||
56, 96, 0,127, 75,255,251,161,124, 28,242, 20,127,255, 2, 20, /* 0x 5c0 */
|
||||
127,159,216, 64, 64,188, 0, 40,124,159,216, 80,127, 69,211,120, /* 0x 5d0 */
|
||||
127,227,251,120, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, /* 0x 5e0 */
|
||||
75,255,251, 97,127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, /* 0x 5f0 */
|
||||
58,214, 0, 1, 59,189, 0, 32,127,150, 0, 0, 75,255,254,132, /* 0x 600 */
|
||||
128,121, 0, 24,128, 1, 0,100,129,129, 0, 36,124, 99,194, 20, /* 0x 610 */
|
||||
124, 8, 3,166,186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, /* 0x 620 */
|
||||
78,128, 0, 32,124, 8, 2,166,148, 33,255,192, 56,132,255,232, /* 0x 630 */
|
||||
191, 97, 0, 44,144,129, 0, 8,124,191, 43,120,144, 1, 0, 68, /* 0x 640 */
|
||||
56, 3, 0, 24,144, 1, 0, 12,124,229, 59,120,128, 3, 0, 24, /* 0x 650 */
|
||||
56,192, 0, 0,200, 1, 0, 8, 56, 97, 0, 8, 56,129, 0, 16, /* 0x 660 */
|
||||
59,223, 0, 52,125, 61, 75,120,124,251, 59,120,144, 1, 0, 16, /* 0x 670 */
|
||||
125, 28, 67,120,216, 1, 0, 24,147,225, 0, 20, 75,255,251,125, /* 0x 680 */
|
||||
128,190, 0, 8,127,163,235,120, 56,128, 0, 3, 56,165, 0, 52, /* 0x 690 */
|
||||
75,255,252,197,160,191, 0, 44,127,163,235,120, 56,128, 0, 5, /* 0x 6a0 */
|
||||
75,255,252,181,128,191, 0, 24,127,163,235,120, 56,128, 0, 9, /* 0x 6b0 */
|
||||
75,255,252,165,127,103,219,120,127,136,227,120,127,227,251,120, /* 0x 6c0 */
|
||||
127,166,235,120, 56,129, 0, 24, 56,160, 0, 0, 59, 96, 0, 0, /* 0x 6d0 */
|
||||
75,255,252,201,160, 31, 0, 44,124,124, 27,120,127,155, 0, 0, /* 0x 6e0 */
|
||||
64,156, 0,124,128, 30, 0, 0, 59,123, 0, 1, 56,128, 0, 0, /* 0x 6f0 */
|
||||
56,160, 0, 0, 47,128, 0, 3, 64,190, 0, 88,128,126, 0, 8, /* 0x 700 */
|
||||
75,255,250,101,127,228,251,120,124,125, 27,121, 56,160, 2, 0, /* 0x 710 */
|
||||
65,128, 0, 40, 75,255,250, 73, 56,128, 0, 0, 47,131, 2, 0, /* 0x 720 */
|
||||
127,165,235,120,127,227,251,120, 56,192, 0, 0, 56,224, 0, 0, /* 0x 730 */
|
||||
57, 0, 0, 0, 65,190, 0, 12, 56, 96, 0,127, 75,255,250, 25, /* 0x 740 */
|
||||
75,255,252, 89,124,124, 27,120,127,163,235,120, 75,255,250, 33, /* 0x 750 */
|
||||
160, 31, 0, 44, 59,222, 0, 32, 75,255,255,132,128, 1, 0, 68, /* 0x 760 */
|
||||
127,131,227,120,187, 97, 0, 44, 56, 33, 0, 64,124, 8, 3,166, /* 0x 770 */
|
||||
78,128, 0, 32, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46, /* 0x 780 */
|
||||
116,101,120,116, 0, 46, 98,115,115, 0, 46,115,100, 97,116, 97, /* 0x 790 */
|
||||
0, 46,115,100, 97,116, 97, 50, 0, 46,110,111,116,101, 46, 71, /* 0x 7a0 */
|
||||
78, 85, 45,115,116, 97, 99,107, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7c0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 1, 0, 0, 0, 6, /* 0x 7e0 */
|
||||
0, 16, 0,128, 0, 0, 0,128, 0, 0, 7, 4, 0, 0, 0, 0, /* 0x 7f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, /* 0x 800 */
|
||||
0, 0, 0, 8, 0, 0, 0, 3, 0, 16, 7,132, 0, 0, 7,132, /* 0x 810 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 820 */
|
||||
0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 3, /* 0x 830 */
|
||||
0, 16, 7,132, 0, 0, 7,132, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 840 */
|
||||
0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 29, /* 0x 850 */
|
||||
0, 0, 0, 1, 0, 0, 0, 2, 0, 16, 7,132, 0, 0, 7,132, /* 0x 860 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 870 */
|
||||
0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 7, 0, 0, 0, 0, /* 0x 880 */
|
||||
0, 0, 0, 0, 0, 0, 7,132, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 890 */
|
||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 8a0 */
|
||||
0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,132, /* 0x 8b0 */
|
||||
0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 8c0 */
|
||||
0, 0, 0, 0 /* 0x 8d0 */
|
||||
};
|
||||
|
||||
@@ -50,11 +50,11 @@ fold_begin: ; enter: %ebx= &Elf32_Ehdr of this program
|
||||
pop eax ; Pop the argument count
|
||||
mov ecx, esp ; argv starts just at the current stack top
|
||||
lea edx, [esp+eax*4+4] ; envp = &argv[argc + 1]
|
||||
mov esi, [e_entry + ebx]
|
||||
add ebx, szElf32_Ehdr + szElf32_Phdr + szl_info
|
||||
sub esi, ebx ; length
|
||||
lea edi, [2 + ebp] ; f_unfilter, maybe
|
||||
pusha ; (f_unf, cprLen, f_decpr, xx, cprSrc, envp, argv, argc)
|
||||
mov edi, [ebx + e_entry]
|
||||
lea esi, [ebx + szElf32_Ehdr + szElf32_Phdr + szl_info]
|
||||
sub edi, esi ; length
|
||||
lea ebx, [2 + ebp] ; f_unfilter, maybe
|
||||
pusha ; (cprLen, cprSrc, f_decpr, xx, f_unf, envp, argv, argc)
|
||||
EXTERN upx_main
|
||||
call upx_main ; Call the UPX main function
|
||||
hlt ; Crash if somehow upx_main does return
|
||||
|
||||
+53
-56
@@ -1,4 +1,4 @@
|
||||
/* fold_exec86.h -- created from fold_exec86.bin, 947 (0x3b3) bytes
|
||||
/* fold_exec86.h -- created from fold_exec86.bin, 899 (0x383) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,69 +27,66 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386EXEC_FOLD_SIZE 947
|
||||
#define LINUX_I386EXEC_FOLD_ADLER32 0x14ec8f58
|
||||
#define LINUX_I386EXEC_FOLD_CRC32 0x81e80623
|
||||
#define LINUX_I386EXEC_FOLD_SIZE 899
|
||||
#define LINUX_I386EXEC_FOLD_ADLER32 0xcf9c7496
|
||||
#define LINUX_I386EXEC_FOLD_CRC32 0xab6154cb
|
||||
|
||||
unsigned char linux_i386exec_fold[947] = {
|
||||
unsigned char linux_i386exec_fold[899] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 1, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 64, 0, /* 0x 30 */
|
||||
0, 16, 64, 0,179, 3, 0, 0,180, 3, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 64, 0,131, 3, 0, 0,132, 3, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
88, 88, 88,137,225,141, 84,132, 4,139,115, 24,131,195, 96, 41, /* 0x 60 */
|
||||
222,141,125, 2, 96,232,197, 0, 0, 0,244, 83,141, 92, 36, 8, /* 0x 70 */
|
||||
88, 88, 88,137,225,141, 84,132, 4,139,123, 24,141,115, 96, 41, /* 0x 60 */
|
||||
247,141, 93, 2, 96,232,197, 0, 0, 0,244, 83,141, 92, 36, 8, /* 0x 70 */
|
||||
106, 90, 88,205,128, 91,195, 0, 83,137,195,139, 76, 36, 8,136, /* 0x 80 */
|
||||
208,131,224, 31, 60, 25,118, 3,131,232, 43,131,192, 65, 75,136, /* 0x 90 */
|
||||
3,137,208,193,232, 5,137,194,226,229, 91,195, 85, 49,201,137, /* 0x a0 */
|
||||
229, 87, 86,137,202, 83,131,236, 32,139, 93, 8,106, 5, 88,205, /* 0x b0 */
|
||||
128,133,192,137,199,120,108,199, 69,212, 47,112,114,111,199, 69, /* 0x c0 */
|
||||
216, 99, 47, 0, 0,106, 20, 88,205,128,141, 85,218,141,117,212, /* 0x d0 */
|
||||
232,171, 2, 0, 0,141, 80, 4,137,243,199, 0, 47,102,100, 47, /* 0x e0 */
|
||||
137,248,232,153, 2, 0, 0,186, 1, 0, 0, 0,106, 33, 88,106, /* 0x f0 */
|
||||
229, 87, 86,137,202, 83,131,236, 44,139, 93, 8,106, 5, 88,205, /* 0x b0 */
|
||||
128,133,192,137,198,120,108,199, 69,212, 47,112,114,111,199, 69, /* 0x c0 */
|
||||
216, 99, 47, 0, 0,106, 20, 88,205,128,141, 85,218,141,125,212, /* 0x d0 */
|
||||
232,123, 2, 0, 0,141, 80, 4,137,251,199, 0, 47,102,100, 47, /* 0x e0 */
|
||||
137,240,232,105, 2, 0, 0,186, 1, 0, 0, 0,106, 33, 88,106, /* 0x f0 */
|
||||
5, 89,205,128, 61, 85, 80, 88, 50,117, 33,139, 93, 8,106, 10, /* 0x 100 */
|
||||
88,205,128,185, 2, 0, 0, 0,137,251,106, 55, 88,205,128,137, /* 0x 110 */
|
||||
243,139, 77, 12,139, 85, 16,106, 11, 88,205,128,137,251,106, 6, /* 0x 120 */
|
||||
88,205,128,131,196, 32,137,248, 91, 94, 95,201,194, 12, 0, 85, /* 0x 130 */
|
||||
137,229, 87, 86, 83,131,236,112,141,125,228,139, 77, 24,139, 69, /* 0x 140 */
|
||||
16,139, 85, 12,137,203,129,227, 0,240,255,255,137, 69,156,137, /* 0x 150 */
|
||||
85,148,137,206,137, 77,152,137, 93,144,165,165,165,131,109,148, /* 0x 160 */
|
||||
12,129,125,228, 85, 80, 88, 51,137,117,152, 15,133,100, 1, 0, /* 0x 170 */
|
||||
0,199, 69,196, 47,116,109,112,199, 69,200, 47,117,112,120,141, /* 0x 180 */
|
||||
77,215,106, 20, 88,205,128,137,194,106, 4,137,200,141,117,211, /* 0x 190 */
|
||||
232,227,254,255,255,141, 93,172,137,199,198, 69,215, 0, 51,125, /* 0x 1a0 */
|
||||
228, 49,201,106, 78, 88,205,128, 51,125,172,139, 85,176,137,240, /* 0x 1b0 */
|
||||
199, 4, 36, 7, 0, 0, 0,193,226, 12,141, 93,196, 49,250,232, /* 0x 1c0 */
|
||||
180,254,255,255, 88,106, 10, 88,205,128,131,248,254,116, 8,133, /* 0x 1d0 */
|
||||
192, 15,133,254, 0, 0, 0,185,194, 0, 0, 0,186,192, 1, 0, /* 0x 1e0 */
|
||||
0,141, 93,196,106, 5, 88,205,128,137, 69,136,139, 77,232,137, /* 0x 1f0 */
|
||||
195,106, 93, 88,205,128,133,192, 15,133,207, 0, 0, 0,106, 0, /* 0x 200 */
|
||||
83,106, 1,106, 3, 81,106, 0,232, 94,254,255,255,131,196, 24, /* 0x 210 */
|
||||
61, 0,240,255,255,137, 69,132, 15,135,175, 0, 0, 0,139, 69, /* 0x 220 */
|
||||
232,106, 0,106, 0, 5,255, 15, 0, 0,106, 50, 37, 0,240,255, /* 0x 230 */
|
||||
255,106, 3, 3, 69,132,104, 0, 16, 0, 0, 80,232, 42,254,255, /* 0x 240 */
|
||||
255,131,196, 24,141,125,180,139,117,152,165,165,165,139, 77,180, /* 0x 250 */
|
||||
131,109,148, 12,133,201,137,117,152,139, 85,184,117, 20,129,250, /* 0x 260 */
|
||||
85, 80, 88, 33,117,103,131,125,232, 0, 15,132,141, 0, 0, 0, /* 0x 270 */
|
||||
235, 91, 57,202,119, 87, 59, 85,236,119, 82, 57,202,115, 36, 15, /* 0x 280 */
|
||||
182, 69,188, 80,141, 69,168, 80,255,117,132, 82,255,117,152,255, /* 0x 290 */
|
||||
85,156,131,196, 20,133,192,117, 52,139, 69,180, 57, 69,168,117, /* 0x 2a0 */
|
||||
44,235, 8,139,125,132,139,117,152,243,164,139, 77,180,139, 93, /* 0x 2b0 */
|
||||
132,106, 91, 88,205,128,139, 69,184, 1,203, 41, 69,148, 41, 77, /* 0x 2c0 */
|
||||
232, 1, 69,152,131,125,148, 0,137, 93,132,121, 18,141, 93,196, /* 0x 2d0 */
|
||||
106, 10, 88,205,128,106,127, 91,106, 1, 88,205,128,235,254,139, /* 0x 2e0 */
|
||||
77,152,139, 93,144,129,225, 0,240,255,255, 43, 77,144,106, 91, /* 0x 2f0 */
|
||||
88,205,128, 1,203,137, 93,144,233, 71,255,255,255,139, 93,136, /* 0x 300 */
|
||||
106, 6, 88,205,128,133,192,117,196,255,117, 28,255,117, 32,141, /* 0x 310 */
|
||||
117,196, 86,232,132,253,255,255,133,192,120,177,106, 2, 88,205, /* 0x 320 */
|
||||
128,133,192,117, 51,106, 2, 88,205,128,133,192,137,193,117, 31, /* 0x 330 */
|
||||
199, 69,160, 85, 80, 88, 52,184,162, 0, 0, 0,141, 93,160,199, /* 0x 340 */
|
||||
69,164, 0, 0, 0, 0,205,128,137,243,106, 10, 88,205,128, 49, /* 0x 350 */
|
||||
219,106, 1, 88,205,128,235,254, 49,201,131,203,255,137,202,106, /* 0x 360 */
|
||||
7, 88,205,128,141, 93,196,139, 77, 32,139, 85, 28,106, 11, 88, /* 0x 370 */
|
||||
205,128,233, 86,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 380 */
|
||||
87,137,215,106, 10,252, 89,232, 5, 0, 0, 0,136, 39,151, 95, /* 0x 390 */
|
||||
195,153,247,241, 82,133,192,116, 5,232,243,255,255,255, 88, 4, /* 0x 3a0 */
|
||||
48,170,195 /* 0x 3b0 */
|
||||
88,205,128,185, 2, 0, 0, 0,137,243,106, 55, 88,205,128,137, /* 0x 110 */
|
||||
251,139, 77, 12,139, 85, 16,106, 11, 88,205,128,137,243,106, 6, /* 0x 120 */
|
||||
88,205,128,131,196, 44,137,240, 91, 94, 95,201,194, 12, 0, 85, /* 0x 130 */
|
||||
137,229, 87, 86, 83,131,236,124,141,125,228,139, 69, 16,139,117, /* 0x 140 */
|
||||
12,137, 69,156,165,165,165,131,109, 8, 12,129,125,228, 85, 80, /* 0x 150 */
|
||||
88, 51,137,117, 12, 15,133,111, 1, 0, 0,199, 69,196, 47,116, /* 0x 160 */
|
||||
109,112,199, 69,200, 47,117,112,120,141, 77,215,106, 20, 88,205, /* 0x 170 */
|
||||
128,137,194,106, 4,137,200,141,125,211,232,249,254,255,255,139, /* 0x 180 */
|
||||
85,228,198, 69,215, 0, 49,201, 49,208,141, 93,172,137, 69,132, /* 0x 190 */
|
||||
106, 78, 88,205,128,139, 85,172,137,248, 49, 85,132,139, 85,176, /* 0x 1a0 */
|
||||
199, 4, 36, 7, 0, 0, 0,141, 93,196,193,226, 12, 51, 85,132, /* 0x 1b0 */
|
||||
232,195,254,255,255, 88,106, 10, 88,205,128,131,248,254,116, 8, /* 0x 1c0 */
|
||||
133,192, 15,133, 2, 1, 0, 0,185,194, 0, 0, 0,186,192, 1, /* 0x 1d0 */
|
||||
0, 0,141, 93,196,106, 5, 88,205,128,139, 85,232,137, 69,148, /* 0x 1e0 */
|
||||
137,195,137,209,106, 93, 88,205,128,133,192, 15,133,209, 0, 0, /* 0x 1f0 */
|
||||
0,106, 0,255,117,148,106, 1,106, 3, 82,106, 0,232,105,254, /* 0x 200 */
|
||||
255,255,131,196, 24, 61, 0,240,255,255,137, 69,136, 15,135,175, /* 0x 210 */
|
||||
0, 0, 0,139, 69,232,106, 0,106, 0, 5,255, 15, 0, 0,106, /* 0x 220 */
|
||||
50, 37, 0,240,255,255,106, 3, 3, 69,136,104, 0, 16, 0, 0, /* 0x 230 */
|
||||
80,232, 53,254,255,255,131,196, 24,141,125,180,139,117, 12,165, /* 0x 240 */
|
||||
165,165,139, 77,180,131,109, 8, 12,133,201,137,117, 12,139, 85, /* 0x 250 */
|
||||
184,117, 16,129,250, 85, 80, 88, 33,117,103,131,125,232, 0,116, /* 0x 260 */
|
||||
115,235, 95, 57,202,119, 91, 59, 85,236,119, 86, 57,202,115, 36, /* 0x 270 */
|
||||
15,182, 69,188, 80,141, 69,168, 80,255,117,136, 82,255,117, 12, /* 0x 280 */
|
||||
255, 85,156,131,196, 20,133,192,117, 56,139, 69,180, 57, 69,168, /* 0x 290 */
|
||||
117, 48,235, 8,139,125,136,139,117, 12,243,164,139, 85,180,139, /* 0x 2a0 */
|
||||
93,136,137,209,106, 91, 88,205,128,139, 69,184, 41, 69, 8, 1, /* 0x 2b0 */
|
||||
85,136, 41, 85,232, 1, 69, 12,131,125, 8, 0, 15,137,119,255, /* 0x 2c0 */
|
||||
255,255,141, 93,196,106, 10, 88,205,128,106,127, 91,106, 1, 88, /* 0x 2d0 */
|
||||
205,128,235,254,139, 93,148,106, 6, 88,205,128,133,192,117,226, /* 0x 2e0 */
|
||||
255,117, 28,255,117, 32,141,117,196, 86,232,173,253,255,255,133, /* 0x 2f0 */
|
||||
192,120,207,106, 2, 88,205,128,133,192,117, 51,106, 2, 88,205, /* 0x 300 */
|
||||
128,133,192,137,193,117, 31,199, 69,160, 85, 80, 88, 52,184,162, /* 0x 310 */
|
||||
0, 0, 0,141, 93,160,199, 69,164, 0, 0, 0, 0,205,128,137, /* 0x 320 */
|
||||
243,106, 10, 88,205,128, 49,219,106, 1, 88,205,128,235,254, 49, /* 0x 330 */
|
||||
201,131,203,255,137,202,106, 7, 88,205,128,141, 93,196,139, 77, /* 0x 340 */
|
||||
32,139, 85, 28,106, 11, 88,205,128,233,116,255,255,255, 0, 0, /* 0x 350 */
|
||||
87,137,215,106, 10,252, 89,232, 5, 0, 0, 0,136, 39,151, 95, /* 0x 360 */
|
||||
195,153,247,241, 82,133,192,116, 5,232,243,255,255,255, 88, 4, /* 0x 370 */
|
||||
48,170,195 /* 0x 380 */
|
||||
};
|
||||
|
||||
+70
-71
@@ -1,4 +1,4 @@
|
||||
/* fold_pti86.h -- created from fold_pti86.bin, 1537 (0x601) bytes
|
||||
/* fold_pti86.h -- created from fold_pti86.bin, 1531 (0x5fb) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,23 +27,23 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386PTI_FOLD_SIZE 1537
|
||||
#define LINUX_I386PTI_FOLD_ADLER32 0xf6d697b8
|
||||
#define LINUX_I386PTI_FOLD_CRC32 0xcce6fcb1
|
||||
#define LINUX_I386PTI_FOLD_SIZE 1531
|
||||
#define LINUX_I386PTI_FOLD_ADLER32 0x90e59978
|
||||
#define LINUX_I386PTI_FOLD_CRC32 0xdd8fa001
|
||||
|
||||
unsigned char linux_i386pti_fold[1537] = {
|
||||
unsigned char linux_i386pti_fold[1531] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,128, 0, 1, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x 30 */
|
||||
0, 0, 1, 0, 1, 6, 0, 0, 4, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0, 4, 6, 1, 0, /* 0x 50 */
|
||||
4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 0, 1, 0,251, 5, 0, 0,252, 5, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,251, 5, 0, 0,252, 5, 1, 0, /* 0x 50 */
|
||||
252, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
93, 89, 88,141,124,132, 4, 80, 41,192,175,117,253,175,137,254, /* 0x 80 */
|
||||
139, 6,131,248, 3,116, 8,131,198, 8,131,248, 0,117,241,139, /* 0x 90 */
|
||||
94, 4, 83,129,236, 0, 10, 0, 0,137,226, 81,141, 67, 88,139, /* 0x a0 */
|
||||
115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, 96,232, 71, 4, /* 0x b0 */
|
||||
115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, 96,232, 62, 4, /* 0x b0 */
|
||||
0, 0,129,196, 36, 10, 0, 0, 91, 80,139, 75, 20,139, 91, 8, /* 0x c0 */
|
||||
184, 91, 0, 0, 0,205,128, 41,192, 41,201, 41,210, 41,219, 41, /* 0x d0 */
|
||||
237, 41,246, 41,255,195, 83,141, 92, 36, 8,106, 90, 88,205,128, /* 0x e0 */
|
||||
@@ -67,66 +67,65 @@ unsigned char linux_i386pti_fold[1537] = {
|
||||
6,198, 0, 0, 64,226,250,195,133,192, 83,137,211,116, 29,168, /* 0x 200 */
|
||||
1,117, 25,139, 16, 57,218,116, 7, 74,117, 11,133,219,116, 7, /* 0x 210 */
|
||||
137, 24,137, 72, 4,235, 5,131,192, 8,235,231, 91,195, 85,137, /* 0x 220 */
|
||||
229, 87, 86, 83,131,236, 80,137, 69,228,139, 69, 8,137, 85,224, /* 0x 230 */
|
||||
139, 77, 16,199, 69,200, 0, 0, 0, 0,137, 69,220, 3, 64, 28, /* 0x 240 */
|
||||
139, 93,220,137, 77,212,139, 85, 12,137, 69,208, 49,192,102,131, /* 0x 250 */
|
||||
123, 16, 3,137, 85,216, 15,183, 75, 44,139, 85,208, 15,149,192, /* 0x 260 */
|
||||
131,206,255,193,224, 4,137,207,131,192, 34, 49,219, 79,137, 69, /* 0x 270 */
|
||||
184,120, 34,131, 58, 1,117, 24,139, 66, 8, 57,240,115, 8,139, /* 0x 280 */
|
||||
122, 16,137,198,137,125,200, 3, 66, 20, 57,195,115, 2,137,195, /* 0x 290 */
|
||||
131,194, 32,226,222,137,247,106, 0,129,231, 0,240,255,255,106, /* 0x 2a0 */
|
||||
0, 41,251,255,117,184,129,195,255, 15, 0, 0,106, 7,129,227, /* 0x 2b0 */
|
||||
0,240,255,255,139, 85,200, 83,137,240, 37,255, 15, 0, 0, 87, /* 0x 2c0 */
|
||||
137, 93,172,141,180, 2,255, 15, 0, 0,232, 7,254,255,255,137, /* 0x 2d0 */
|
||||
194,131,196, 24, 1,218,129,230, 0,240,255,255,137, 85,240,137, /* 0x 2e0 */
|
||||
194, 41,243, 1,242,137,217,137, 69,176,137,211,106, 91, 88,205, /* 0x 2f0 */
|
||||
128,139, 69,176,199, 69,192, 0, 0, 0, 0,139, 85,220, 41,248, /* 0x 300 */
|
||||
102,131,122, 44, 0,137, 69,204, 15,132,177, 1, 0, 0,139, 77, /* 0x 310 */
|
||||
208,139, 1,131,248, 6,117, 27,139, 93,208,186, 3, 0, 0, 0, /* 0x 320 */
|
||||
139, 77,204, 3, 75, 8,139, 69,212,232,202,254,255,255,233,117, /* 0x 330 */
|
||||
1, 0, 0, 72, 15,133,110, 1, 0, 0,139,125,208,199, 69,188, /* 0x 340 */
|
||||
64, 98, 81,115,139, 79, 24,139, 71, 8,131,225, 7,139, 87, 16, /* 0x 350 */
|
||||
193,225, 2,137, 69,236,211,109,188,137,193, 3, 79, 20,137,199, /* 0x 360 */
|
||||
129,231,255, 15, 0, 0,137, 85,232,141, 52, 58,139, 85,204, 41, /* 0x 370 */
|
||||
248,131,101,188, 7, 1,209,141, 28, 16,137, 77,180,139, 77,208, /* 0x 380 */
|
||||
139, 65, 4, 41,248,131,125,216, 1, 80,255,117,228, 25,192,131, /* 0x 390 */
|
||||
224,224,131,192, 50,131,125,216, 0, 80,137,240,106, 3,116, 3, /* 0x 3a0 */
|
||||
141, 70, 3, 80, 83,232, 44,253,255,255,131,196, 24, 57,195, 15, /* 0x 3b0 */
|
||||
133,168, 0, 0, 0,131,125,216, 0,116, 19,255,117,224,255,117, /* 0x 3c0 */
|
||||
228,141, 85,232,139, 69,216,232, 69,253,255,255, 88, 90,137,250, /* 0x 3d0 */
|
||||
137,247,137,216,247,223,232, 16,254,255,255,129,231,255, 15, 0, /* 0x 3e0 */
|
||||
0,141, 4, 51,137,250,232, 0,254,255,255,131,125,216, 0,116, /* 0x 3f0 */
|
||||
94,139, 69,208,131, 56, 1,117, 86,246, 64, 24, 1,116, 80,139, /* 0x 400 */
|
||||
80, 20,139, 72, 8,137, 77,164,137,209, 3, 77,164, 59, 80, 16, /* 0x 410 */
|
||||
117, 14,137,200,247,216, 37,255, 15, 0, 0,131,248, 3,119, 15, /* 0x 420 */
|
||||
139, 77,164,139, 69,208,131,193, 12,131,120, 4, 0,117, 15,139, /* 0x 430 */
|
||||
1, 61,205,128, 97,195,116, 6,199, 1,205,128, 97,195,133,201, /* 0x 440 */
|
||||
116, 13,139, 69,212, 49,210,131,224,254,232,169,253,255,255,137, /* 0x 450 */
|
||||
241,139, 85,188,106,125, 88,205,128,133,192,116, 10,106,127, 91, /* 0x 460 */
|
||||
106, 1, 88,205,128,235,254,141, 4, 62, 1,195, 59, 93,180,115, /* 0x 470 */
|
||||
30,106, 0,106, 0,106, 50,255,117,188, 41, 93,180,255,117,180, /* 0x 480 */
|
||||
83,232, 80,252,255,255,131,196, 24, 57,195,116, 27,235,206,131, /* 0x 490 */
|
||||
125,216, 0,116, 19,141, 78, 3,129,225,255, 15, 0, 0,131,249, /* 0x 4a0 */
|
||||
3,119, 5,106, 91, 88,205,128,139, 93,220,255, 69,192, 15,183, /* 0x 4b0 */
|
||||
67, 44,131, 69,208, 32, 57, 69,192, 15,140, 79,254,255,255,131, /* 0x 4c0 */
|
||||
125,216, 0,117, 14,139, 93,228,106, 6, 88,205,128,133,192,116, /* 0x 4d0 */
|
||||
20,235,138,139,125,220,102,131,127, 16, 3,116, 8,139, 93,240, /* 0x 4e0 */
|
||||
106, 45, 88,205,128,139, 69,220,139, 64, 24, 1, 69,204,139, 69, /* 0x 4f0 */
|
||||
204,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83, 81, /* 0x 500 */
|
||||
139,125, 20,141, 85, 24,255,117, 40,141, 71, 52,139, 93, 8,255, /* 0x 510 */
|
||||
117, 16,137, 69,240,139,117, 32,141, 69, 32,232,241,251,255,255, /* 0x 520 */
|
||||
139, 85,240,139, 69, 12,139, 74, 8,186, 3, 0, 0, 0,137, 69, /* 0x 530 */
|
||||
32,137,216,131,193, 52, 41,117, 36,232,186,252,255,255, 15,183, /* 0x 540 */
|
||||
79, 42,137,216,186, 4, 0, 0, 0,232,170,252,255,255, 15,183, /* 0x 550 */
|
||||
79, 44,137,216,186, 5, 0, 0, 0,232,154,252,255,255,139, 79, /* 0x 560 */
|
||||
24,137,216,186, 9, 0, 0, 0,232,139,252,255,255,141, 69, 32, /* 0x 570 */
|
||||
83,139, 85, 40, 80,139, 69, 16, 87,232,160,252,255,255,102,139, /* 0x 580 */
|
||||
79, 44,131,196, 20, 49,210,102,133,201,137,195,116, 89,139, 69, /* 0x 590 */
|
||||
240,131, 56, 3,117, 69, 49,201,139, 88, 8,137,202,106, 5, 88, /* 0x 5a0 */
|
||||
205,128,133,192,137,198,120, 20,102,186, 0, 2,137,195,137,249, /* 0x 5b0 */
|
||||
106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91,106, /* 0x 5c0 */
|
||||
1, 88,205,128,235,254,106, 0, 49,210,106, 0,137,240, 87,232, /* 0x 5d0 */
|
||||
74,252,255,255,131,196, 12,137,195,235, 12, 66, 15,183,193,131, /* 0x 5e0 */
|
||||
69,240, 32, 57,194,124,167,141,101,244,137,216, 91, 94, 95,201, /* 0x 5f0 */
|
||||
195 /* 0x 600 */
|
||||
229, 87, 86, 83,131,236, 84,137, 69,228,139, 69, 8,137, 85,224, /* 0x 230 */
|
||||
139, 77, 16,137, 69,220, 3, 64, 28,139, 93,220,137, 77,212,139, /* 0x 240 */
|
||||
85, 12,137, 69,208, 49,192,102,131,123, 16, 3,137, 85,216, 15, /* 0x 250 */
|
||||
183, 75, 44,139, 85,208, 15,149,192,131,206,255,193,224, 4,131, /* 0x 260 */
|
||||
192, 34, 49,219,137, 69,184,137,200, 49,255, 72,120, 31,131, 58, /* 0x 270 */
|
||||
1,117, 21,139, 66, 8, 57,240,115, 5,137,198,139,122, 16, 3, /* 0x 280 */
|
||||
66, 20, 57,195,115, 2,137,195,131,194, 32,226,225,137,240,129, /* 0x 290 */
|
||||
230, 0,240,255,255,106, 0, 41,243,106, 0, 37,255, 15, 0, 0, /* 0x 2a0 */
|
||||
137,117,188,141,179,255, 15, 0, 0,255,117,184,129,230, 0,240, /* 0x 2b0 */
|
||||
255,255,106, 7, 86,255,117,188,141,188, 7,255, 15, 0, 0,232, /* 0x 2c0 */
|
||||
18,254,255,255,129,231, 0,240,255,255,137,194,137,195, 1,242, /* 0x 2d0 */
|
||||
41,254,131,196, 24,137, 69,172,137, 85,240, 1,251,137,241,106, /* 0x 2e0 */
|
||||
91, 88,205,128,139, 69,220,199, 69,196, 0, 0, 0, 0,139, 93, /* 0x 2f0 */
|
||||
172, 43, 93,188,102,131,120, 44, 0,137, 93,204, 15,132,180, 1, /* 0x 300 */
|
||||
0, 0,139, 85,208,139, 2,131,248, 6,117, 24,139, 77,204, 3, /* 0x 310 */
|
||||
74, 8,186, 3, 0, 0, 0,139, 69,212,232,217,254,255,255,233, /* 0x 320 */
|
||||
123, 1, 0, 0, 72, 15,133,116, 1, 0, 0,139, 93,208,199, 69, /* 0x 330 */
|
||||
192, 64, 98, 81,115,139, 75, 24,139, 67, 8,131,225, 7,139, 83, /* 0x 340 */
|
||||
16,193,225, 2,137, 69,236,211,109,192,137,193, 3, 75, 20,137, /* 0x 350 */
|
||||
195,129,227,255, 15, 0, 0,137, 85,232,141, 60, 26,139, 85,204, /* 0x 360 */
|
||||
41,216,131,101,192, 7, 1,209,141, 52, 16,137, 77,176,139, 77, /* 0x 370 */
|
||||
208,139, 65, 4, 41,216,131,125,216, 1, 80,255,117,228, 25,192, /* 0x 380 */
|
||||
131,224,224,131,192, 50,131,125,216, 0, 80,137,248,106, 3,116, /* 0x 390 */
|
||||
3,141, 71, 3, 80, 86,232, 59,253,255,255,131,196, 24, 57,198, /* 0x 3a0 */
|
||||
15,133,170, 0, 0, 0,131,125,216, 0,116, 19,255,117,224,255, /* 0x 3b0 */
|
||||
117,228,141, 85,232,139, 69,216,232, 84,253,255,255, 88, 90,137, /* 0x 3c0 */
|
||||
218,137,251,137,240,247,219,232, 31,254,255,255,129,227,255, 15, /* 0x 3d0 */
|
||||
0, 0,141, 4, 62,137,218,137, 93,180,232, 12,254,255,255,131, /* 0x 3e0 */
|
||||
125,216, 0,116, 91,139, 69,208,131, 56, 1,117, 83,246, 64, 24, /* 0x 3f0 */
|
||||
1,116, 77,139, 93,208,137,194,139, 64, 20, 59, 67, 16,139, 82, /* 0x 400 */
|
||||
8,141, 12, 16,117, 14,137,200,247,216, 37,255, 15, 0, 0,131, /* 0x 410 */
|
||||
248, 3,119, 12,139, 69,208,141, 74, 12,131,120, 4, 0,117, 15, /* 0x 420 */
|
||||
139, 1, 61,205,128, 97,195,116, 6,199, 1,205,128, 97,195,133, /* 0x 430 */
|
||||
201,116, 13,139, 69,212, 49,210,131,224,254,232,184,253,255,255, /* 0x 440 */
|
||||
137,243,137,249,139, 85,192,106,125, 88,205,128,133,192,116, 10, /* 0x 450 */
|
||||
106,127, 91,106, 1, 88,205,128,235,254,139, 85,180,141, 4, 23, /* 0x 460 */
|
||||
141, 28, 6, 59, 93,176,115, 30,106, 0,106, 0,106, 50,255,117, /* 0x 470 */
|
||||
192, 41, 93,176,255,117,176, 83,232, 89,252,255,255,131,196, 24, /* 0x 480 */
|
||||
57,195,116, 27,235,202,131,125,216, 0,116, 19,141, 79, 3,129, /* 0x 490 */
|
||||
225,255, 15, 0, 0,131,249, 3,119, 5,106, 91, 88,205,128,139, /* 0x 4a0 */
|
||||
77,220,255, 69,196, 15,183, 65, 44,131, 69,208, 32, 57, 69,196, /* 0x 4b0 */
|
||||
15,140, 76,254,255,255,131,125,216, 0,117, 14,139, 93,228,106, /* 0x 4c0 */
|
||||
6, 88,205,128,133,192,116, 20,235,134,139, 69,220,102,131,120, /* 0x 4d0 */
|
||||
16, 3,116, 8,139, 93,240,106, 45, 88,205,128,139, 85,220,139, /* 0x 4e0 */
|
||||
82, 24, 1, 85,204,139, 69,204,141,101,244, 91, 94, 95,201,195, /* 0x 4f0 */
|
||||
85,137,229, 87, 86, 83,131,236, 16,141, 85, 24,139,125, 20,255, /* 0x 500 */
|
||||
117, 40,141, 71, 52,139, 93, 8,255,117, 16,137, 69,240,139,117, /* 0x 510 */
|
||||
32,141, 69, 32,232,248,251,255,255,139, 85,240,139, 69, 12,139, /* 0x 520 */
|
||||
74, 8,186, 3, 0, 0, 0,137, 69, 32,137,216,131,193, 52, 41, /* 0x 530 */
|
||||
117, 36,232,193,252,255,255, 15,183, 79, 42,137,216,186, 4, 0, /* 0x 540 */
|
||||
0, 0,232,177,252,255,255, 15,183, 79, 44,137,216,186, 5, 0, /* 0x 550 */
|
||||
0, 0,232,161,252,255,255,139, 79, 24,137,216,186, 9, 0, 0, /* 0x 560 */
|
||||
0,232,146,252,255,255,141, 69, 32, 83,139, 85, 40, 80,139, 69, /* 0x 570 */
|
||||
16, 87,232,167,252,255,255,102,139, 79, 44,131,196, 20, 49,210, /* 0x 580 */
|
||||
102,133,201,137,195,116, 90,139, 69,240,131, 56, 3,117, 70, 49, /* 0x 590 */
|
||||
201,139, 88, 8,137,202,106, 5, 88,205,128,133,192,137,198,120, /* 0x 5a0 */
|
||||
21,186, 0, 2, 0, 0,137,195,137,249,106, 3, 88,205,128, 61, /* 0x 5b0 */
|
||||
0, 2, 0, 0,116, 10,106,127, 91,106, 1, 88,205,128,235,254, /* 0x 5c0 */
|
||||
106, 0, 49,210,106, 0,137,240, 87,232, 80,252,255,255,131,196, /* 0x 5d0 */
|
||||
12,137,195,235, 12, 66, 15,183,193,131, 69,240, 32, 57,194,124, /* 0x 5e0 */
|
||||
166,141,101,244,137,216, 91, 94, 95,201,195 /* 0x 5f0 */
|
||||
};
|
||||
|
||||
+58
-58
@@ -1,4 +1,4 @@
|
||||
/* fold_sh86.h -- created from fold_sh86.bin, 1190 (0x4a6) bytes
|
||||
/* fold_sh86.h -- created from fold_sh86.bin, 1193 (0x4a9) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,16 +27,16 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386SH_FOLD_SIZE 1190
|
||||
#define LINUX_I386SH_FOLD_ADLER32 0x93daf2db
|
||||
#define LINUX_I386SH_FOLD_CRC32 0x4e35857e
|
||||
#define LINUX_I386SH_FOLD_SIZE 1193
|
||||
#define LINUX_I386SH_FOLD_ADLER32 0xef79f39d
|
||||
#define LINUX_I386SH_FOLD_CRC32 0xde5583f6
|
||||
|
||||
unsigned char linux_i386sh_fold[1190] = {
|
||||
unsigned char linux_i386sh_fold[1193] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 1, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, /* 0x 30 */
|
||||
0, 0, 64, 1,166, 4, 0, 0,168, 4, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 0, 64, 1,169, 4, 0, 0,172, 4, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
@@ -44,7 +44,7 @@ unsigned char linux_i386sh_fold[1190] = {
|
||||
117,250,173,171,133,192,117,250, 87, 64,106, 54, 89,243,171, 72, /* 0x 90 */
|
||||
171,171, 95,173,133,192,145,173,116, 10,137, 76,207,248,137, 68, /* 0x a0 */
|
||||
207,252,235,239,129,236, 0, 10, 0, 0,147,141, 82, 24,139, 10, /* 0x b0 */
|
||||
139, 90, 4,137,198, 96,232,120, 2, 0, 0, 89, 80, 97,129,196, /* 0x c0 */
|
||||
139, 90, 4,137,198, 96,232,123, 2, 0, 0, 89, 80, 97,129,196, /* 0x c0 */
|
||||
0, 10, 0, 0, 89, 90, 82, 65, 86,131,238, 3,102,199, 6, 45, /* 0x d0 */
|
||||
99, 65, 86, 65, 82, 81, 87,141,188, 36, 0,245,255,255, 96,137, /* 0x e0 */
|
||||
227,137,252,185,192, 2, 0, 0, 49,192,243,171,137,220, 97,195, /* 0x f0 */
|
||||
@@ -53,58 +53,58 @@ unsigned char linux_i386sh_fold[1190] = {
|
||||
1, 88,205,128,235,254,133,255,116, 10,137,249,138, 6, 70,136, /* 0x 120 */
|
||||
2, 66,226,248, 1,123, 4, 41, 59, 91, 94, 95,195,133,210,137, /* 0x 130 */
|
||||
209,116, 6,198, 0, 0, 64,226,250,195, 85, 49,201,137,229, 87, /* 0x 140 */
|
||||
86, 83,137,195,131,236, 40,137, 85,240,139, 69, 8,137,202,137, /* 0x 150 */
|
||||
86, 83,137,195,131,236, 52,137, 85,240,139, 69, 8,137,202,137, /* 0x 150 */
|
||||
69,236,106, 5, 88,205,128,133,192,137, 69,232,121, 10,106,127, /* 0x 160 */
|
||||
91,106, 1, 88,205,128,235,254,186, 0, 2, 0, 0,139, 93,232, /* 0x 170 */
|
||||
139, 77,240,106, 3, 88,205,128, 61, 0, 2, 0, 0,117,223,139, /* 0x 180 */
|
||||
69,240, 3, 73, 28,102,131,120, 16, 3,139, 93,240,137, 77,228, /* 0x 190 */
|
||||
137,202, 15,149,192, 15,183, 75, 44, 15,182,192,131,207,255,193, /* 0x 1a0 */
|
||||
224, 4,131,192, 34, 49,246,137, 69,212,137,200, 72,120, 30,131, /* 0x 1b0 */
|
||||
58, 1,117, 20,139, 66, 8, 57,248,115, 2,137,199,139, 90, 20, /* 0x 1c0 */
|
||||
1,195, 57,222,115, 2,137,222,131,194, 32,226,226,246, 69,212, /* 0x 1d0 */
|
||||
16,116, 7,137,243,106, 45, 88,205,128,137,251,106, 0,129,227, /* 0x 1e0 */
|
||||
0,240,255,255,106, 0, 41,222,255,117,212,141,134,255, 15, 0, /* 0x 1f0 */
|
||||
0,106, 7, 37, 0,240,255,255, 80, 83,232,241,254,255,255,131, /* 0x 200 */
|
||||
196, 24, 41,216,199, 69,220, 0, 0, 0, 0,137, 69,224,139, 69, /* 0x 210 */
|
||||
240,102,131,120, 44, 0, 15,132,247, 0, 0, 0,139, 85,228,139, /* 0x 220 */
|
||||
2,131,248, 6,117, 14,139, 66, 8,139, 77,236,137, 65, 20,233, /* 0x 230 */
|
||||
200, 0, 0, 0, 72, 15,133,193, 0, 0, 0,139, 93,228,199, 69, /* 0x 240 */
|
||||
216, 64, 98, 81,115,139, 75, 24,139, 67, 8,131,225, 7,193,225, /* 0x 250 */
|
||||
2,137,194,211,109,216,139, 77,228, 3, 83, 20,137,195,139,121, /* 0x 260 */
|
||||
16,129,227,255, 15, 0, 0,139, 77,224, 41,216, 1,223,131,101, /* 0x 270 */
|
||||
216, 7, 1,202,141, 52, 8,137, 85,208,139, 85,228,139, 66, 4, /* 0x 280 */
|
||||
41,216, 80,255,117,232,106, 18,106, 3, 87, 86,232, 95,254,255, /* 0x 290 */
|
||||
255,131,196, 24, 57,198,117, 48,137,218,137,240,232,140,254,255, /* 0x 2a0 */
|
||||
255,137,249,247,217,141, 4, 62,129,225,255, 15, 0, 0,137,243, /* 0x 2b0 */
|
||||
137,202,137, 77,204,232,115,254,255,255,137,249,139, 85,216,106, /* 0x 2c0 */
|
||||
125, 88,205,128,133,192,116, 10,106,127, 91,106, 1, 88,205,128, /* 0x 2d0 */
|
||||
235,254,139, 85,204,141, 4, 23,141, 28, 6, 59, 93,208,115, 28, /* 0x 2e0 */
|
||||
106, 0,106, 0,106, 50,255,117,216, 41, 93,208,255,117,208, 83, /* 0x 2f0 */
|
||||
232,251,253,255,255,131,196, 24, 57,195,117,204,139, 77,240,255, /* 0x 300 */
|
||||
69,220, 15,183, 65, 44,131, 69,228, 32, 57, 69,220, 15,140, 9, /* 0x 310 */
|
||||
255,255,255,139, 93,232,106, 6, 88,205,128,133,192,117,169,139, /* 0x 320 */
|
||||
69,240,139, 64, 24, 1, 69,224,139, 69,224,141,101,244, 91, 94, /* 0x 330 */
|
||||
95,201,195, 85,137,229, 87, 86, 83,131,236, 36,141,117, 32,139, /* 0x 340 */
|
||||
69, 16,141, 93, 24,139, 85, 20,137, 69,212,139, 69, 36,139,125, /* 0x 350 */
|
||||
8,137, 85,208, 5, 85, 80, 88, 50,137, 69,240,139, 69,240, 5, /* 0x 360 */
|
||||
85, 80, 88, 51,131,125, 32, 0,137, 69,236, 15,132,139, 0, 0, /* 0x 370 */
|
||||
0,141, 85,220,137,216,106, 12,232,127,253,255,255, 88,139, 69, /* 0x 380 */
|
||||
220,139, 77,224,133,192,117, 15,129,249, 85, 80, 88, 33,117, 11, /* 0x 390 */
|
||||
131, 59, 0,116,103,235, 4,133,201,117, 10,106,127, 91,106, 1, /* 0x 3a0 */
|
||||
88,205,128,235,254, 57,193,119,242, 59, 6,119,238, 57,193,115, /* 0x 3b0 */
|
||||
44, 15,182, 69,228, 80,141, 69,216, 80,255,118, 4, 81,255,115, /* 0x 3c0 */
|
||||
4,255, 85,212,131,196, 20,133,192,117,208,139, 69,220, 57, 69, /* 0x 3d0 */
|
||||
216,117,200,139, 69,224, 1, 67, 4, 41, 3,235, 12,139, 86, 4, /* 0x 3e0 */
|
||||
137,216, 81,232, 20,253,255,255, 88,139, 85,220,139, 6, 1, 86, /* 0x 3f0 */
|
||||
4, 41,208,133,192,137, 6,233,111,255,255,255,139, 69,236,139, /* 0x 400 */
|
||||
85,208,138, 24,139, 69,236,198, 0, 0,139, 69,240, 87,232, 39, /* 0x 410 */
|
||||
253,255,255,139, 85,208,137,198,139, 69,236,136, 24, 15,183, 66, /* 0x 420 */
|
||||
42,199, 71, 16, 3, 0, 0, 0,199, 71, 24, 4, 0, 0, 0,199, /* 0x 430 */
|
||||
71, 32, 5, 0, 0, 0,137, 71, 28, 15,183, 66, 44,199, 71, 44, /* 0x 440 */
|
||||
0, 16, 0, 0,137,119, 68,131,194, 52,199, 71, 40, 6, 0, 0, /* 0x 450 */
|
||||
0,137, 71, 36,139, 69,208,199, 71, 64, 9, 0, 0, 0,102,139, /* 0x 460 */
|
||||
88, 44, 89, 49,201,102,133,219,116, 34,131, 58, 3,117, 18,139, /* 0x 470 */
|
||||
66, 8,106, 0,139, 85,208,232,190,252,255,255,137,198, 88,235, /* 0x 480 */
|
||||
11, 65, 15,183,195,131,194, 32, 57,193,124,222,141,101,244,137, /* 0x 490 */
|
||||
240, 91, 94, 95,201,195 /* 0x 4a0 */
|
||||
69,240,139, 85,240, 3, 64, 28, 15,183, 90, 44,137, 69,228, 49, /* 0x 190 */
|
||||
192,102,131,122, 16, 3,139, 77,228, 15,149,192,131,207,255,193, /* 0x 1a0 */
|
||||
224, 4,131,192, 34, 49,210,137, 69,212,137,216, 72,120, 33,137, /* 0x 1b0 */
|
||||
222,131, 57, 1,117, 20,139, 65, 8, 57,248,115, 2,137,199,139, /* 0x 1c0 */
|
||||
89, 20, 1,195, 57,218,115, 2,137,218,131,193, 32, 78,117,225, /* 0x 1d0 */
|
||||
246, 69,212, 16,116, 7,137,211,106, 45, 88,205,128,137,251,106, /* 0x 1e0 */
|
||||
0,129,227, 0,240,255,255,106, 0, 41,218,255,117,212,141,130, /* 0x 1f0 */
|
||||
255, 15, 0, 0,106, 7, 37, 0,240,255,255, 80, 83,232,238,254, /* 0x 200 */
|
||||
255,255,131,196, 24, 41,216,199, 69,220, 0, 0, 0, 0,137, 69, /* 0x 210 */
|
||||
224,139, 69,240,102,131,120, 44, 0, 15,132,247, 0, 0, 0,139, /* 0x 220 */
|
||||
85,228,139, 2,131,248, 6,117, 14,139, 66, 8,139, 77,236,137, /* 0x 230 */
|
||||
65, 20,233,200, 0, 0, 0, 72, 15,133,193, 0, 0, 0,139, 93, /* 0x 240 */
|
||||
228,199, 69,216, 64, 98, 81,115,139, 75, 24,139, 67, 8,131,225, /* 0x 250 */
|
||||
7,193,225, 2,137,194,211,109,216,139, 77,228, 3, 83, 20,137, /* 0x 260 */
|
||||
195,139,121, 16,129,227,255, 15, 0, 0,139, 77,224, 41,216, 1, /* 0x 270 */
|
||||
223,131,101,216, 7, 1,202,141, 52, 8,137, 85,204,139, 85,228, /* 0x 280 */
|
||||
139, 66, 4, 41,216, 80,255,117,232,106, 18,106, 3, 87, 86,232, /* 0x 290 */
|
||||
92,254,255,255,131,196, 24, 57,198,117, 48,137,218,137,240,232, /* 0x 2a0 */
|
||||
137,254,255,255,137,249,247,217,141, 4, 62,129,225,255, 15, 0, /* 0x 2b0 */
|
||||
0,137,243,137,202,137, 77,208,232,112,254,255,255,137,249,139, /* 0x 2c0 */
|
||||
85,216,106,125, 88,205,128,133,192,116, 10,106,127, 91,106, 1, /* 0x 2d0 */
|
||||
88,205,128,235,254,139, 85,208,141, 4, 23,141, 28, 6, 59, 93, /* 0x 2e0 */
|
||||
204,115, 28,106, 0,106, 0,106, 50,255,117,216, 41, 93,204,255, /* 0x 2f0 */
|
||||
117,204, 83,232,248,253,255,255,131,196, 24, 57,195,117,204,139, /* 0x 300 */
|
||||
77,240,255, 69,220, 15,183, 65, 44,131, 69,228, 32, 57, 69,220, /* 0x 310 */
|
||||
15,140, 9,255,255,255,139, 93,232,106, 6, 88,205,128,133,192, /* 0x 320 */
|
||||
117,169,139, 69,240,139, 64, 24, 1, 69,224,139, 69,224,141,101, /* 0x 330 */
|
||||
244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, 36,141, /* 0x 340 */
|
||||
117, 32,139, 69, 16,141, 93, 24,139, 85, 20,137, 69,212,139, 69, /* 0x 350 */
|
||||
36,139,125, 8,137, 85,208, 5, 85, 80, 88, 50,137, 69,240,139, /* 0x 360 */
|
||||
69,240, 5, 85, 80, 88, 51,131,125, 32, 0,137, 69,236, 15,132, /* 0x 370 */
|
||||
139, 0, 0, 0,141, 85,220,137,216,106, 12,232,124,253,255,255, /* 0x 380 */
|
||||
88,139, 69,220,139, 77,224,133,192,117, 15,129,249, 85, 80, 88, /* 0x 390 */
|
||||
33,117, 11,131, 59, 0,116,103,235, 4,133,201,117, 10,106,127, /* 0x 3a0 */
|
||||
91,106, 1, 88,205,128,235,254, 57,193,119,242, 59, 6,119,238, /* 0x 3b0 */
|
||||
57,193,115, 44, 15,182, 69,228, 80,141, 69,216, 80,255,118, 4, /* 0x 3c0 */
|
||||
81,255,115, 4,255, 85,212,131,196, 20,133,192,117,208,139, 69, /* 0x 3d0 */
|
||||
220, 57, 69,216,117,200,139, 69,224, 1, 67, 4, 41, 3,235, 12, /* 0x 3e0 */
|
||||
139, 86, 4,137,216, 81,232, 17,253,255,255, 88,139, 85,220,139, /* 0x 3f0 */
|
||||
6, 1, 86, 4, 41,208,133,192,137, 6,233,111,255,255,255,139, /* 0x 400 */
|
||||
69,236,139, 85,208,138, 24,139, 69,236,198, 0, 0,139, 69,240, /* 0x 410 */
|
||||
87,232, 36,253,255,255,139, 85,208,137,198,139, 69,236,136, 24, /* 0x 420 */
|
||||
15,183, 66, 42,199, 71, 16, 3, 0, 0, 0,199, 71, 24, 4, 0, /* 0x 430 */
|
||||
0, 0,199, 71, 32, 5, 0, 0, 0,137, 71, 28, 15,183, 66, 44, /* 0x 440 */
|
||||
199, 71, 44, 0, 16, 0, 0,137,119, 68,131,194, 52,199, 71, 40, /* 0x 450 */
|
||||
6, 0, 0, 0,137, 71, 36,139, 69,208,199, 71, 64, 9, 0, 0, /* 0x 460 */
|
||||
0,102,139, 88, 44, 89, 49,201,102,133,219,116, 34,131, 58, 3, /* 0x 470 */
|
||||
117, 18,139, 66, 8,106, 0,139, 85,208,232,187,252,255,255,137, /* 0x 480 */
|
||||
198, 88,235, 11, 65, 15,183,195,131,194, 32, 57,193,124,222,141, /* 0x 490 */
|
||||
101,244,137,240, 91, 94, 95,201,195 /* 0x 4a0 */
|
||||
};
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
|
||||
.text
|
||||
.align 0
|
||||
.balign 0
|
||||
.globl upx_main
|
||||
.globl _start
|
||||
|
||||
@@ -447,7 +447,7 @@ filename:
|
||||
@@@@@@@@@@@@@@@@ paramater area for UPX
|
||||
|
||||
.code 32
|
||||
.align 2
|
||||
.p2align 2
|
||||
SRC0: .ascii "SRC0" @ start of compressed data
|
||||
SRCL: .ascii "SRCL" @ compressed length
|
||||
DST0: .ascii "DST0" @ start of uncompressed data
|
||||
|
||||
@@ -0,0 +1,283 @@
|
||||
/* l_armpea.S -- ARM/PE decompressor assembly startup (arm mode)
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2006 Laszlo Molnar
|
||||
Copyright (C) 2000-2006 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
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
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
// magic for the UPX linker
|
||||
#define SECT(n) .text 1; .asciz #n; .long n - _start; .text 0; n
|
||||
|
||||
#define BL(t) \
|
||||
.text 1; .long 0, bl##t - _start; .asciz #t; .long 0; \
|
||||
.text 0; .byte 0, 0, 0; bl##t: .byte 0xeb
|
||||
|
||||
#define DEBUG 0
|
||||
|
||||
.text
|
||||
.balign 0
|
||||
.globl _start
|
||||
.arm
|
||||
_start:
|
||||
|
||||
dst0 .req r9 @ global register
|
||||
|
||||
SECT(DllStart):
|
||||
cmp r1, #1
|
||||
bne .Lstart_orig
|
||||
|
||||
SECT(ExeStart):
|
||||
stmfd sp!, {r0 - r9, lr}
|
||||
adr r3, SRC0
|
||||
ldmia r3!, {r0, r1, r2} @ r0=src0, r1=slen, r2=dst0, r3=addr dstl
|
||||
mov dst0, r2
|
||||
|
||||
bl ProcessAll
|
||||
mov r0, #4
|
||||
bl CacheSync
|
||||
ldmia sp!, {r0 - r9, lr}
|
||||
.Lstart_orig:
|
||||
ldr pc, ENTR
|
||||
|
||||
CacheSync:
|
||||
ldr r3, CSYN
|
||||
ldr pc, [r3]
|
||||
|
||||
SRC0: .ascii "SRC0" @ start of compressed data
|
||||
SRCL: .ascii "SRCL" @ compressed length
|
||||
DST0: .ascii "DST0" @ start of uncompressed data
|
||||
DSTL: .ascii "DSTL" @ uncompressed length
|
||||
ENTR: .ascii "ENTR" @ original entry point
|
||||
CSYN: .ascii "CSYN" @ pointer to CacheSync
|
||||
|
||||
ProcessAll:
|
||||
stmfd sp!, {lr}
|
||||
|
||||
@@ uncompress/unfilter/imports/relocs are copied here by the upx linker
|
||||
|
||||
SECT(ProcessEnd):
|
||||
ldmia sp!, {pc}
|
||||
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(Unfilter_0x50):
|
||||
buffer .req r0
|
||||
addval .req r2
|
||||
bufend .req ip
|
||||
|
||||
ldr buffer, FIBS
|
||||
mov addval, #0
|
||||
ldr bufend, FIBE
|
||||
.Luf50_0:
|
||||
cmp buffer, bufend
|
||||
beq .Luf_end
|
||||
|
||||
ldrb r3, [buffer, #3]
|
||||
and r3, r3, #0x0f
|
||||
cmp r3, #0x0b
|
||||
bne .Luf50_1
|
||||
ldr r3, [buffer]
|
||||
and r1, r3, #0xff000000
|
||||
sub r3, r3, addval
|
||||
and r3, r3, #0x00ffffff
|
||||
orr r3, r3, r1
|
||||
str r3, [buffer]
|
||||
|
||||
.Luf50_1:
|
||||
add buffer, buffer, #4
|
||||
add addval, addval, #1
|
||||
b .Luf50_0
|
||||
|
||||
.unreq buffer
|
||||
.unreq addval
|
||||
.unreq bufend
|
||||
|
||||
FIBS: .ascii "FIBS" @ buffer start for filter
|
||||
FIBE: .ascii "FIBE" @ buffer end for filter
|
||||
|
||||
.Luf_end:
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(Relocs):
|
||||
dest .req r0
|
||||
buffer .req r1
|
||||
addval .req dst0
|
||||
|
||||
ldr buffer, BREL
|
||||
sub dest, addval, #4
|
||||
|
||||
.Lreloc_loop:
|
||||
ldrb r3, [buffer], #1
|
||||
cmp r3, #0
|
||||
beq .Lreloc_end
|
||||
cmp r3, #0xf0
|
||||
|
||||
bichs ip, r3, #0xf0
|
||||
ldrhsb r3, [buffer, #1] @ get_le16
|
||||
addhs ip, r3, ip, lsl #8
|
||||
ldrhsb r3, [buffer], #2
|
||||
addhs r3, r3, ip, lsl #8
|
||||
|
||||
add dest, dest, r3
|
||||
ldrb r3, [dest] @ get_be32
|
||||
add ip, r3, ip, lsl #8
|
||||
ldrb r3, [dest, #1]
|
||||
add ip, r3, ip, lsl #8
|
||||
ldrb r3, [dest, #2]
|
||||
add ip, r3, ip, lsl #8
|
||||
ldrb r3, [dest, #3]
|
||||
add ip, r3, ip, lsl #8
|
||||
add ip, ip, addval
|
||||
str ip, [dest]
|
||||
b .Lreloc_loop
|
||||
|
||||
BREL: .ascii "BREL" @ start of reloc info
|
||||
|
||||
.unreq buffer
|
||||
.unreq addval
|
||||
.unreq dest
|
||||
|
||||
.Lreloc_end:
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(Imports):
|
||||
imp .req r4
|
||||
iat .req r5
|
||||
dll .req r6
|
||||
.equ bufsize, 2048
|
||||
|
||||
sub sp, sp, #bufsize
|
||||
ldr imp, BIMP
|
||||
.Lhi_loop1:
|
||||
mov r0, imp
|
||||
bl get_le32
|
||||
beq .Lhi_end
|
||||
|
||||
ldr r1, ONAM
|
||||
add r0, r0, r1
|
||||
mov r1, sp
|
||||
.Lhi_copyname:
|
||||
ldrb r2, [r0], #1
|
||||
strh r2, [r1], #2
|
||||
cmp r2, #0
|
||||
bne .Lhi_copyname
|
||||
|
||||
mov r0, sp
|
||||
bl LoadLibraryW
|
||||
|
||||
mov dll, r0
|
||||
add r0, imp, #4
|
||||
bl get_le32
|
||||
add iat, dst0, r0
|
||||
add imp, imp, #8
|
||||
|
||||
.Lhi_gpa_loop:
|
||||
ldrb r0, [imp], #1
|
||||
cmp r0, #1
|
||||
bmi .Lhi_loop1
|
||||
bne .Lhi_by_ord
|
||||
|
||||
mov r1, imp
|
||||
.Lhi_by_name:
|
||||
ldrb r0, [imp], #1
|
||||
cmp r0, #0
|
||||
bne .Lhi_by_name
|
||||
b .Lhi_call_gpa
|
||||
|
||||
.Lhi_by_ord:
|
||||
ldrb r0, [imp], #1
|
||||
ldrb r1, [imp], #1
|
||||
add r1, r0, r1, lsl #8
|
||||
|
||||
.Lhi_call_gpa:
|
||||
mov r0, dll
|
||||
bl GetProcAddressA
|
||||
str r0, [iat], #4
|
||||
b .Lhi_gpa_loop
|
||||
|
||||
.unreq iat
|
||||
.unreq imp
|
||||
.unreq dll
|
||||
|
||||
get_le32: @ optimized for size
|
||||
mov r2, #3
|
||||
.Lg0:
|
||||
ldrb r3, [r0, r2]
|
||||
subs r2, r2, #1
|
||||
add r1, r3, r1, asl #8
|
||||
bpl .Lg0
|
||||
movs r0, r1 @ set the Z flag if zero
|
||||
mov pc, lr
|
||||
|
||||
LoadLibraryW:
|
||||
ldr r3, LLIB
|
||||
ldr pc, [r3]
|
||||
|
||||
GetProcAddressA:
|
||||
ldr r3, GETP
|
||||
ldr pc, [r3]
|
||||
|
||||
BIMP: .ascii "BIMP" @ start of import data
|
||||
ONAM: .ascii "ONAM" @ start of dll names
|
||||
GETP: .ascii "GETP" @ pointer to GetProcAddressA
|
||||
LLIB: .ascii "LOAD" @ pointer to LoadLibraryW
|
||||
|
||||
.Lhi_end:
|
||||
add sp, sp, #bufsize
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(ucl_nrv2e_decompress_8):
|
||||
|
||||
#include "armv4_n2e_d8.S"
|
||||
|
||||
SECT(Call2E):
|
||||
BL (ucl_nrv2e_decompress_8)
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(UPX1HEAD):
|
||||
.byte 85,80,88,33 @ 0 UPX_MAGIC_LE32
|
||||
.byte 161,216,208,213 @ 4 UPX_MAGIC2_LE32
|
||||
.long 0 @ 8 uncompressed adler32
|
||||
.long 0 @ 12 compressed adler32
|
||||
.long 0 @ 16 uncompressed len
|
||||
.long 0 @ 20 compressed len
|
||||
.long 0 @ 24 original file size
|
||||
.byte 0 @ 28 filter id
|
||||
.byte 0 @ 29 filter cto
|
||||
.byte 0 @ unused
|
||||
.byte 45 @ 31 header checksum
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(eof):
|
||||
.text 1
|
||||
.long -1; .short eof - _start
|
||||
@@ -0,0 +1,352 @@
|
||||
/* l_armpet.S -- ARM/PE decompressor assembly startup (thumb mode)
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2006 Laszlo Molnar
|
||||
Copyright (C) 2000-2006 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
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
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
// magic for the UPX linker
|
||||
#define SECT(n) .text 1; .asciz #n; .long n - _start; .text 0; n
|
||||
|
||||
#define BL(t) \
|
||||
.text 1; .long 0, bl##t - _start; .asciz #t; .long 0; \
|
||||
.text 0; .byte 0, 0, 0; bl##t: .byte 0xf8
|
||||
|
||||
#define DEBUG 0
|
||||
|
||||
.text
|
||||
.balign 0
|
||||
.globl _start
|
||||
.arm
|
||||
_start:
|
||||
|
||||
dst0 .req r9 @ global register
|
||||
|
||||
SECT(DllStart):
|
||||
cmp r1, #1
|
||||
bne .Lstart_orig
|
||||
|
||||
SECT(ExeStart):
|
||||
stmfd sp!, {r0 - r9, lr}
|
||||
|
||||
@ touch all pages in ARM mode - this seems to be required
|
||||
@ otherwise the THUMB mode stuff fails
|
||||
|
||||
adr r3, SRC0
|
||||
ldmia r3, {r5, r6, r7} @ r5=src0, r6=slen, r7=dst0, r3=addr src0
|
||||
add r5, r5, r6
|
||||
.L01:
|
||||
ldr r6, [r7]
|
||||
add r7, r7, #4096
|
||||
cmp r7, r5
|
||||
bls .L01
|
||||
|
||||
adr ip, ProcessAll + 1
|
||||
mov lr, pc
|
||||
bx ip
|
||||
|
||||
ldmfd sp!, {r0 - r9, lr}
|
||||
.Lstart_orig:
|
||||
ldr ip, ENTR
|
||||
bx ip
|
||||
|
||||
SRC0: .ascii "SRC0" @ start of compressed data
|
||||
SRCL: .ascii "SRCL" @ compressed length
|
||||
DST0: .ascii "DST0" @ start of uncompressed data
|
||||
DSTL: .ascii "DSTL" @ uncompressed length
|
||||
ENTR: .ascii "ENTR" @ original entry point
|
||||
CSYN: .ascii "CSYN" @ pointer to CacheSync
|
||||
|
||||
.thumb
|
||||
|
||||
ProcessAll:
|
||||
ldmia r3!, {r0, r1, r2, r5, r6, r7} @ r0=src0, r1=slen, r2=dst0, r7=csyn
|
||||
sub r3, #12
|
||||
mov dst0, r2
|
||||
ldr r7, [r7]
|
||||
mov r6, #4 @ parameter of CacheSync
|
||||
push {r6, r7, lr}
|
||||
.align 2
|
||||
|
||||
@@ uncompress/unfilter/imports/relocs are copied here by the upx linker
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(Unfilter_0x50):
|
||||
.align 2
|
||||
buffer .req r0
|
||||
addval .req r2
|
||||
bufend .req r4
|
||||
|
||||
ldr buffer, FIBS
|
||||
mov addval, #0
|
||||
ldr bufend, FIBE
|
||||
mov r5, #0x0f
|
||||
mov r6, #0xff
|
||||
lsl r6, #24
|
||||
mvn r7, r6
|
||||
.Luf50_0:
|
||||
cmp buffer, bufend
|
||||
beq .Luf50_ret
|
||||
|
||||
ldrb r3, [buffer, #3]
|
||||
and r3, r5
|
||||
cmp r3, #0x0b
|
||||
bne .Luf50_1
|
||||
ldr r3, [buffer]
|
||||
mov r1, r3
|
||||
and r1, r6
|
||||
sub r3, addval
|
||||
and r3, r7
|
||||
orr r3, r1
|
||||
str r3, [buffer]
|
||||
|
||||
.Luf50_1:
|
||||
add buffer, #4
|
||||
add addval, #1
|
||||
b .Luf50_0
|
||||
|
||||
.unreq buffer
|
||||
.unreq addval
|
||||
.unreq bufend
|
||||
|
||||
.align 2
|
||||
FIBS: .ascii "FIBS" @ buffer start for filter
|
||||
FIBE: .ascii "FIBE" @ buffer end for filter
|
||||
|
||||
.Luf50_ret:
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(Relocs):
|
||||
.align 2
|
||||
buffer .req r0
|
||||
dest .req r1
|
||||
addval .req r2
|
||||
|
||||
ldr buffer, BREL
|
||||
mov addval, dst0
|
||||
sub dest, addval, #4
|
||||
|
||||
.Lreloc_loop:
|
||||
ldrb r3, [buffer]
|
||||
add buffer, #1
|
||||
cmp r3, #0
|
||||
beq .Lreloc_end
|
||||
cmp r3, #0xf0
|
||||
blo .Lreloc_add
|
||||
|
||||
mov r4, #0x0f
|
||||
and r4, r3
|
||||
ldrb r3, [buffer, #1] @ get_le16
|
||||
lsl r4, #8
|
||||
add r4, r3
|
||||
ldrb r3, [buffer]
|
||||
add buffer, #2
|
||||
lsl r4, #8
|
||||
add r3, r4
|
||||
|
||||
.Lreloc_add:
|
||||
add dest, r3
|
||||
mov r5, #0
|
||||
|
||||
.Lread_be32:
|
||||
ldrb r3, [dest, r5]
|
||||
lsl r4, #8
|
||||
add r4, r3
|
||||
add r5, #1
|
||||
cmp r5, #4
|
||||
bne .Lread_be32
|
||||
|
||||
add r4, addval
|
||||
str r4, [dest]
|
||||
b .Lreloc_loop
|
||||
|
||||
.align 2
|
||||
BREL: .ascii "BREL" @ start of reloc info
|
||||
|
||||
.Lreloc_end:
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(Imports):
|
||||
.align 2
|
||||
imp .req r4
|
||||
iat .req r5
|
||||
dll .req r6
|
||||
|
||||
mov r7, sp
|
||||
sub sp, #508
|
||||
sub sp, #508
|
||||
sub sp, #508
|
||||
sub sp, #508
|
||||
ldr imp, BIMP
|
||||
.Lhi_loop1:
|
||||
mov r0, imp
|
||||
bl get_le32
|
||||
beq .Lhi_end
|
||||
|
||||
ldr r1, ONAM
|
||||
add r0, r1
|
||||
mov r1, sp
|
||||
.Lhi_copyname:
|
||||
ldrb r2, [r0]
|
||||
add r0, #1
|
||||
strh r2, [r1]
|
||||
add r1, #2
|
||||
cmp r2, #0
|
||||
bne .Lhi_copyname
|
||||
|
||||
mov r0, sp
|
||||
bl LoadLibraryW
|
||||
|
||||
mov dll, r0
|
||||
add r0, imp, #4
|
||||
bl get_le32
|
||||
mov iat, dst0
|
||||
add iat, r0
|
||||
add imp, #8
|
||||
|
||||
.Lhi_gpa_loop:
|
||||
ldrb r0, [imp]
|
||||
add imp, #1
|
||||
cmp r0, #1
|
||||
bmi .Lhi_loop1
|
||||
bne .Lhi_by_ord
|
||||
|
||||
mov r1, imp
|
||||
.Lhi_by_name:
|
||||
ldrb r0, [imp]
|
||||
add imp, #1
|
||||
cmp r0, #0
|
||||
bne .Lhi_by_name
|
||||
b .Lhi_call_gpa
|
||||
|
||||
.Lhi_by_ord:
|
||||
ldrb r0, [imp]
|
||||
ldrb r1, [imp, #1]
|
||||
add imp, #2
|
||||
lsl r1, #8
|
||||
add r1, r0
|
||||
|
||||
.Lhi_call_gpa:
|
||||
mov r0, dll
|
||||
bl GetProcAddressA
|
||||
str r0, [iat]
|
||||
add iat, #4
|
||||
b .Lhi_gpa_loop
|
||||
|
||||
.unreq iat
|
||||
.unreq imp
|
||||
.unreq dll
|
||||
|
||||
get_le32: @ optimized for size
|
||||
mov r1, #3
|
||||
.Lg0:
|
||||
ldrb r3, [r0, r1]
|
||||
lsl r2, r2, #8
|
||||
add r2, r2, r3
|
||||
sub r1, #1
|
||||
bpl .Lg0
|
||||
mov r0, r2 @ sets the Z flag if zero
|
||||
bx lr
|
||||
|
||||
GetProcAddressA:
|
||||
ldr r3, GETP
|
||||
.Lcallr3:
|
||||
ldr r3, [r3]
|
||||
bx r3
|
||||
|
||||
LoadLibraryW:
|
||||
ldr r3, LLIB
|
||||
b .Lcallr3
|
||||
|
||||
.align 2
|
||||
BIMP: .ascii "BIMP" @ start of import data
|
||||
ONAM: .ascii "ONAM" @ start of dll names
|
||||
GETP: .ascii "GETP" @ pointer to GetProcAddressA
|
||||
LLIB: .ascii "LOAD" @ pointer to LoadLibraryW
|
||||
|
||||
.Lhi_end:
|
||||
mov sp, r7
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(ProcessEnd):
|
||||
pop {r0, r1, r2} @ r0=4, r1=csyn, r2=lr
|
||||
mov lr, r2
|
||||
bx r1 @ jump to CacheSync
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
#define XSECT(n) .text 1; .asciz #n; .long n - _start; .text 0
|
||||
|
||||
SECT(dummy0):
|
||||
.align 2
|
||||
.arm
|
||||
#include "arm_nrv2b_d8.S"
|
||||
|
||||
XSECT (go_thumb_n2b)
|
||||
|
||||
SECT(Call2B):
|
||||
BL (go_thumb_n2b)
|
||||
|
||||
#undef wrnk
|
||||
#undef GETBIT
|
||||
|
||||
SECT(dummy1):
|
||||
.align 2
|
||||
.arm
|
||||
#include "arm_nrv2e_d8.S"
|
||||
|
||||
XSECT (thumb_nrv2e_d8)
|
||||
|
||||
SECT(Call2E):
|
||||
BL (thumb_nrv2e_d8)
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
SECT(UPX1HEAD):
|
||||
.byte 85,80,88,33 @ 0 UPX_MAGIC_LE32
|
||||
.byte 161,216,208,213 @ 4 UPX_MAGIC2_LE32
|
||||
.long 0 @ 8 uncompressed adler32
|
||||
.long 0 @ 12 compressed adler32
|
||||
.long 0 @ 16 uncompressed len
|
||||
.long 0 @ 20 compressed len
|
||||
.long 0 @ 24 original file size
|
||||
.byte 0 @ 28 filter id
|
||||
.byte 0 @ 29 filter cto
|
||||
.byte 0 @ unused
|
||||
.byte 45 @ 31 header checksum
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
.arm
|
||||
SECT(eof):
|
||||
.text 1
|
||||
.long -1; .short eof - _start
|
||||
|
||||
+16
-12
@@ -268,10 +268,9 @@ xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum,
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
|
||||
addr = mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC,
|
||||
mflags, 0, 0 );
|
||||
addr = mmap((void *)lo, hi, PROT_NONE, mflags, -1, 0);
|
||||
*p_brk = hi + addr; // the logical value of brk(0)
|
||||
munmap(szlo + addr, hi - szlo); // desirable if PT_LOAD non-contiguous
|
||||
//mprotect(szlo + addr, hi - szlo, PROT_NONE); // no access, but keep the frames!
|
||||
return (unsigned long)addr - lo;
|
||||
}
|
||||
|
||||
@@ -300,33 +299,38 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, struct Extent *const xi,
|
||||
addr -= frag;
|
||||
|
||||
// Decompressor can overrun the destination by 3 bytes.
|
||||
if (addr != mmap(addr, mlen + (xi ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen + (xi ? 3 : 0), prot | (xi ? PROT_WRITE : 0),
|
||||
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
(xi ? -1 : fdi), phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
}
|
||||
if (xi) {
|
||||
unpackExtent(xi, &xo, (f_expand *)fdi,
|
||||
((phdr->p_flags & PF_X) ? (f_unfilter *)(2+ fdi) : 0));
|
||||
((PROT_EXEC & prot) ? (f_unfilter *)(2+ fdi) : 0));
|
||||
}
|
||||
bzero(addr, frag); // fragment at lo end
|
||||
// Linux does not fixup the low end, so neither do we.
|
||||
//if (PROT_WRITE & prot) {
|
||||
// bzero(addr, frag); // fragment at lo end
|
||||
//}
|
||||
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
if (PROT_WRITE & prot) { // note: read-only .bss not supported here
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
}
|
||||
if (xi) {
|
||||
void *const hatch = make_hatch(phdr, reloc);
|
||||
if (0!=hatch) {
|
||||
/* always update AT_NULL, especially for compressed PT_INTERP */
|
||||
auxv_up((Elf32_auxv_t *)(~1 & (int)av), AT_NULL, (unsigned)hatch);
|
||||
}
|
||||
}
|
||||
if (0!=mprotect(addr, mlen, prot)) {
|
||||
err_exit(10);
|
||||
if (0!=mprotect(addr, mlen, prot)) {
|
||||
err_exit(10);
|
||||
ERR_LAB
|
||||
}
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != mmap(addr, haddr - addr, prot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,6 @@ PAGE_SIZE= -PAGE_MASK
|
||||
M_NRV2B_LE32=2 # ../conf.h
|
||||
M_NRV2E_LE32=8
|
||||
|
||||
#define ALIGN(n) .align n
|
||||
|
||||
/*__LEXEC000__*/
|
||||
_start: .globl _start
|
||||
@@ -127,7 +126,7 @@ ra_setup:
|
||||
#define getnextbp(reg) call *%r11; adcl reg,reg
|
||||
#define getnextb(reg) getnextbp(reg)
|
||||
|
||||
ALIGN(1<<3)
|
||||
.p2align 3
|
||||
getbit:
|
||||
addl bits,bits; jz refill # Carry= next bit
|
||||
rep; ret
|
||||
@@ -169,6 +168,29 @@ eof:
|
||||
pop %rbx; pop %rbp
|
||||
ret
|
||||
|
||||
/* Temporary until we get the buildLoader stuff working ... */
|
||||
.ascii "\n$Id: UPX (C) 1996-2006 the UPX Team. "
|
||||
.asciz "All Rights Reserved. http://upx.sf.net $\n"
|
||||
|
||||
/* These from /usr/include/asm-x86_64/unistd.h */
|
||||
__NR_write = 1
|
||||
__NR_exit = 60
|
||||
|
||||
msg_SELinux:
|
||||
push $ L71 - L70; pop %arg3 # length
|
||||
call L71
|
||||
L70:
|
||||
.asciz "SELinux denied execmem.\n"
|
||||
L71:
|
||||
pop %arg2 # message text
|
||||
push $2; pop %arg1 # fd stderr
|
||||
push $ __NR_write; pop %rax
|
||||
syscall
|
||||
die:
|
||||
push $127; pop %arg1
|
||||
push $ __NR_exit; pop %rax
|
||||
syscall
|
||||
|
||||
/* Decompress the rest of this loader, and jump to it.
|
||||
Map a page to hold the decompressed bytes. Logically this could
|
||||
be done by setting .p_memsz for our first PT_LOAD. But as of 2005-11-09,
|
||||
@@ -195,7 +217,7 @@ unfold:
|
||||
subl %arg5l,%arg5l #; subl %arg6l,%arg6l # MAP_ANON ==> ignore offset
|
||||
push $ SYS_mmap; pop %rax
|
||||
syscall # %rax= result; trashes %rcx,%r11 only
|
||||
cmpl %eax,%edi; je 0f; hlt; 0: # XXX: 4GB
|
||||
cmpl %eax,%edi; jne msg_SELinux # XXX: 4GB
|
||||
|
||||
/* Load the addresses and lengths that ::pack3() patched in.
|
||||
XXX: 2GB Note that PUSH $imm32 sign-extends to 64 bits.
|
||||
@@ -226,11 +248,14 @@ unfold:
|
||||
movl %ebx,%esi # %arg2l= &b_info (relocated)
|
||||
push %rax # ret_addr after decompression
|
||||
xchgl %eax,%arg3l # %arg3= dst for unfolding XXX: 4GB
|
||||
lodsl; movl %esi,%arg4l # &len_dst ==> &do_not_care XXX: 4GB
|
||||
lodsl; push %rax # allocate slot on stack
|
||||
movq %rsp,%arg4 # &len_dst ==> &do_not_care
|
||||
lodsl; xchgl %eax,%arg1l # sz_cpr XXX: 4GB
|
||||
lodsl; movzbl %al,%arg5l # b_method
|
||||
xchg %arg1l,%arg2l # XXX: 4GB
|
||||
jmp *%rbp # goto decompress; return to unfolded loader
|
||||
call *%rbp # decompress
|
||||
pop %rcx # discard len_dst
|
||||
ret
|
||||
|
||||
main:
|
||||
# int3 # uncomment for debugging
|
||||
|
||||
+22
-13
@@ -1,4 +1,4 @@
|
||||
/* l_lx_elf64amd.h -- created from l_lx_elf64amd.bin, 560 (0x230) bytes
|
||||
/* l_lx_elf64amd.h -- created from l_lx_elf64amd.bin, 696 (0x2b8) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,12 +27,12 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELF64AMD_LOADER_SIZE 560
|
||||
#define LINUX_ELF64AMD_LOADER_ADLER32 0xdfe11659
|
||||
#define LINUX_ELF64AMD_LOADER_CRC32 0x1c0a6afb
|
||||
#define LINUX_ELF64AMD_LOADER_SIZE 696
|
||||
#define LINUX_ELF64AMD_LOADER_ADLER32 0x5f8e3dec
|
||||
#define LINUX_ELF64AMD_LOADER_CRC32 0x2f447d28
|
||||
|
||||
unsigned char linux_elf64amd_loader[560] = {
|
||||
232, 37, 2, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 72,137,254, /* 0x 0 */
|
||||
unsigned char linux_elf64amd_loader[696] = {
|
||||
232,173, 2, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 72,137,254, /* 0x 0 */
|
||||
72,137,215, 49,219, 49,201, 72,131,205,255,232,129, 1, 0, 0, /* 0x 10 */
|
||||
1,219,116, 2,243,195,139, 30, 72,131,238,252, 17,219,138, 22, /* 0x 20 */
|
||||
243,195, 72,141, 4, 47,131,249, 5,138, 16,118, 33, 72,131,253, /* 0x 30 */
|
||||
@@ -60,11 +60,20 @@ unsigned char linux_elf64amd_loader[560] = {
|
||||
237, 72,129,253, 0,243,255,255, 17,193,232,147,254,255,255,235, /* 0x 190 */
|
||||
135,252, 65, 91, 65,131,248, 8, 15,132,202,254,255,255, 65,131, /* 0x 1a0 */
|
||||
248, 2, 15,132,112,255,255,255, 89, 72,137,240, 72, 41,200, 90, /* 0x 1b0 */
|
||||
72, 41,215, 89,137, 57, 91, 93,195, 91,191, 65, 68, 82, 77,106, /* 0x 1c0 */
|
||||
7, 90,190, 76, 69, 78, 77,106, 50, 65, 90, 69, 41,192,106, 9, /* 0x 1d0 */
|
||||
88, 15, 5, 57,199,116, 1,244,104, 74, 77, 80, 85,104, 65, 68, /* 0x 1e0 */
|
||||
82, 85,190, 65, 68, 82, 67,104, 76, 69, 78, 85,185, 67, 78, 84, /* 0x 1f0 */
|
||||
67,104, 65, 68, 82, 88,104, 76, 69, 78, 88,137,250, 41,242, 1, /* 0x 200 */
|
||||
213, 1,211,252,243, 72,165,151,137,222, 80,146,173,137,241,173, /* 0x 210 */
|
||||
151,173, 68, 15,182,192,135,254,255,229, 93,232,153,255,255,255 /* 0x 220 */
|
||||
72, 41,215, 89,137, 57, 91, 93,195, 10, 36, 73,100, 58, 32, 85, /* 0x 1c0 */
|
||||
80, 88, 32, 40, 67, 41, 32, 49, 57, 57, 54, 45, 50, 48, 48, 54, /* 0x 1d0 */
|
||||
32,116,104,101, 32, 85, 80, 88, 32, 84,101, 97,109, 46, 32, 65, /* 0x 1e0 */
|
||||
108,108, 32, 82,105,103,104,116,115, 32, 82,101,115,101,114,118, /* 0x 1f0 */
|
||||
101,100, 46, 32,104,116,116,112, 58, 47, 47,117,112,120, 46,115, /* 0x 200 */
|
||||
102, 46,110,101,116, 32, 36, 10, 0,104, 25, 0, 0, 0, 90,232, /* 0x 210 */
|
||||
25, 0, 0, 0, 83, 69, 76,105,110,117,120, 32,100,101,110,105, /* 0x 220 */
|
||||
101,100, 32,101,120,101, 99,109,101,109, 46, 10, 0, 94,106, 2, /* 0x 230 */
|
||||
95,106, 1, 88, 15, 5,106,127, 95,106, 60, 88, 15, 5, 91,191, /* 0x 240 */
|
||||
65, 68, 82, 77,106, 7, 90,190, 76, 69, 78, 77,106, 50, 65, 90, /* 0x 250 */
|
||||
69, 41,192,106, 9, 88, 15, 5, 57,199,117,173,104, 74, 77, 80, /* 0x 260 */
|
||||
85,104, 65, 68, 82, 85,190, 65, 68, 82, 67,104, 76, 69, 78, 85, /* 0x 270 */
|
||||
185, 67, 78, 84, 67,104, 65, 68, 82, 88,104, 76, 69, 78, 88,137, /* 0x 280 */
|
||||
250, 41,242, 1,213, 1,211,252,243, 72,165,151,137,222, 80,146, /* 0x 290 */
|
||||
173, 80, 72,137,225,173,151,173, 68, 15,182,192,135,254,255,213, /* 0x 2a0 */
|
||||
89,195, 93,232,150,255,255,255 /* 0x 2b0 */
|
||||
};
|
||||
|
||||
@@ -33,7 +33,7 @@ OUTPUT_ARCH(i386:x86-64)
|
||||
/*ENTRY(_start)*/
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
text PT_LOAD FILEHDR PHDRS FLAGS ( 5 ) ; /* r-x (no -w-) */
|
||||
data PT_LOAD ; /* for setting brk(0) */
|
||||
}
|
||||
SECTIONS
|
||||
|
||||
+26
-2
@@ -136,6 +136,28 @@ decompress:
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define p_memsz 5*4
|
||||
|
||||
%define __NR_write 4
|
||||
%define __NR_exit 1
|
||||
|
||||
msg_SELinux:
|
||||
push byte L71 - L70
|
||||
pop edx ; length
|
||||
call L71
|
||||
L70:
|
||||
db "SELinux denied execmem.",10
|
||||
L71:
|
||||
pop ecx ; message text
|
||||
push byte 2 ; fd stderr
|
||||
pop ebx
|
||||
push byte __NR_write
|
||||
pop eax
|
||||
int 0x80
|
||||
die:
|
||||
mov bl, byte 127 ; only low 7 bits matter!
|
||||
push byte __NR_exit
|
||||
pop eax ; write to stderr could fail, leaving eax as -EBADF etc.
|
||||
int 0x80
|
||||
|
||||
; Decompress the rest of this loader, and jump to it
|
||||
unfold:
|
||||
pop esi ; &{ b_info:{sz_unc, sz_cpr, 4{byte}}, compressed_data...}
|
||||
@@ -150,7 +172,7 @@ unfold:
|
||||
xor ecx, ecx ; %ecx= 0
|
||||
; MAP_ANONYMOUS ==>offset is ignored, so do not push!
|
||||
; push ecx ; offset
|
||||
push ecx ; fd must be in valid range, but then ignored
|
||||
push byte -1 ; *BSD demands -1==fd for mmap(,,,MAP_ANON,,)
|
||||
push byte MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS
|
||||
mov ch, PAGE_SIZE >> 8 ; %ecx= PAGE_SIZE
|
||||
push byte PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
@@ -160,6 +182,8 @@ unfold:
|
||||
push byte __NR_mmap
|
||||
pop eax
|
||||
int 0x80 ; changes only %eax; %edx is live
|
||||
test eax,eax
|
||||
js msg_SELinux
|
||||
xchg eax, edx ; %edx= page after .text; %eax= &Elf32_Ehdr of this program
|
||||
xchg eax, ebx ; %ebx= &Elf32_Ehdr of this program
|
||||
|
||||
@@ -178,7 +202,7 @@ unfold:
|
||||
main:
|
||||
pop ebp ; &decompress
|
||||
call unfold
|
||||
|
||||
; compressed fold_elf86 follows
|
||||
eof:
|
||||
; __XTHEENDX__
|
||||
section .data
|
||||
|
||||
+261
-258
@@ -1,4 +1,4 @@
|
||||
/* l_lx_elf86.h -- created from l_lx_elf86.bin, 5285 (0x14a5) bytes
|
||||
/* l_lx_elf86.h -- created from l_lx_elf86.bin, 5341 (0x14dd) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386ELF_LOADER_SIZE 5285
|
||||
#define LINUX_I386ELF_LOADER_ADLER32 0xe35db8a7
|
||||
#define LINUX_I386ELF_LOADER_CRC32 0x6f1175f8
|
||||
#define LINUX_I386ELF_LOADER_SIZE 5341
|
||||
#define LINUX_I386ELF_LOADER_ADLER32 0x1c76cd81
|
||||
#define LINUX_I386ELF_LOADER_CRC32 0x1aa8519f
|
||||
|
||||
unsigned char linux_i386elf_loader[5285] = {
|
||||
unsigned char linux_i386elf_loader[5341] = {
|
||||
232, 0, 0, 0, 0, 96,106, 63,139,116, 36, 40,139,124, 36, 48, /* 0x 0 */
|
||||
131,205,255,235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219, /* 0x 10 */
|
||||
117, 7,139, 30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7, /* 0x 20 */
|
||||
@@ -110,257 +110,260 @@ unsigned char linux_i386elf_loader[5285] = {
|
||||
119, 6,128,127,254, 15,116, 0, 44,232, 60, 1,119, 0, 56, 23, /* 0x 4b0 */
|
||||
117, 0,139, 7,102,193,232, 8,193,192, 16,134,196, 41,248, 1, /* 0x 4c0 */
|
||||
240,137, 7,131,199, 4,131,233, 4,138, 7,131,199, 1,226, 0, /* 0x 4d0 */
|
||||
131,233, 1,127, 0, 97,195, 94,141, 69,247, 43, 0,137,194, 3, /* 0x 4e0 */
|
||||
64, 72, 80, 49,201, 81,106, 50,181, 16,106, 7, 81, 80,137,227, /* 0x 4f0 */
|
||||
106, 90, 88,205,128,146,147,252,173, 80, 84, 82,173, 80,173, 86, /* 0x 500 */
|
||||
255,213,131,196, 40,195, 93,232,203,255,255,255, 76, 69, 88, 69, /* 0x 510 */
|
||||
67, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, /* 0x 520 */
|
||||
0, 76, 69, 88, 69, 67, 48, 50, 48, 0, 47, 0, 0, 0, 76, 69, /* 0x 530 */
|
||||
88, 69, 67, 48, 48, 57, 0, 5, 0, 0, 0, 76, 69, 88, 69, 67, /* 0x 540 */
|
||||
48, 49, 48, 0, 5, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, /* 0x 550 */
|
||||
0, 19, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 78, 50, 66, /* 0x 560 */
|
||||
68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 570 */
|
||||
49, 48, 0, 22, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 78, /* 0x 580 */
|
||||
50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, /* 0x 590 */
|
||||
65, 83, 49, 49, 0, 24, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 5a0 */
|
||||
48, 0, 30, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0, 41, /* 0x 5b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 5c0 */
|
||||
65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, /* 0x 5d0 */
|
||||
0, 46, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 78, 50, 66, /* 0x 5e0 */
|
||||
70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 5f0 */
|
||||
50, 48, 0, 55, 0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0, /* 0x 600 */
|
||||
68, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 78, 50, 66, 68, /* 0x 610 */
|
||||
69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, /* 0x 620 */
|
||||
48, 0, 81, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 78, 50, /* 0x 630 */
|
||||
66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, /* 0x 640 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, /* 0x 650 */
|
||||
78, 50, 66, 68, 69, 67, 51, 48, 0, 96, 0, 0, 0, 0, 0, 0, /* 0x 660 */
|
||||
0,114, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, /* 0x 670 */
|
||||
0, 0, 0, 0, 0, 0,144, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 680 */
|
||||
53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0, /* 0x 690 */
|
||||
158, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 78, 50, 66, 68, /* 0x 6a0 */
|
||||
69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, /* 0x 6b0 */
|
||||
48, 0,171, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 78, 50, /* 0x 6c0 */
|
||||
66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0,186, /* 0x 6d0 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, /* 0x 6e0 */
|
||||
78, 50, 66, 68, 85, 77, 77, 49, 0,186, 0, 0, 0, 78, 50, 66, /* 0x 6f0 */
|
||||
83, 77, 65, 53, 48, 0,186, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 700 */
|
||||
53, 48, 0,188, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, /* 0x 710 */
|
||||
191, 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0,200, 0, 0, /* 0x 720 */
|
||||
0, 0, 0, 0, 0,212, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 730 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0,212, /* 0x 740 */
|
||||
0, 0, 0, 0, 0, 0, 0,223, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 750 */
|
||||
83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,237, 0, 0, 0, /* 0x 760 */
|
||||
78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 770 */
|
||||
70, 65, 83, 54, 49, 0,237, 0, 0, 0, 0, 0, 0, 0, 3, 1, /* 0x 780 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 790 */
|
||||
50, 66, 68, 69, 67, 54, 48, 0, 3, 1, 0, 0, 78, 82, 86, 50, /* 0x 7a0 */
|
||||
66, 69, 78, 68, 0, 3, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, /* 0x 7b0 */
|
||||
48, 0, 3, 1, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 78, 50, /* 0x 7c0 */
|
||||
68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 7d0 */
|
||||
83, 49, 48, 0, 6, 1, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, /* 0x 7e0 */
|
||||
78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, /* 0x 7f0 */
|
||||
70, 65, 83, 49, 49, 0, 8, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 800 */
|
||||
49, 48, 0, 14, 1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0, /* 0x 810 */
|
||||
25, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 78, 50, 68, 83, /* 0x 820 */
|
||||
77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, /* 0x 830 */
|
||||
48, 0, 30, 1, 0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 78, 50, /* 0x 840 */
|
||||
68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, /* 0x 850 */
|
||||
67, 50, 48, 0, 39, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, /* 0x 860 */
|
||||
0, 52, 1, 0, 0, 0, 0, 0, 0, 65, 1, 0, 0, 78, 50, 68, /* 0x 870 */
|
||||
68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x 880 */
|
||||
51, 48, 0, 65, 1, 0, 0, 0, 0, 0, 0, 71, 1, 0, 0, 78, /* 0x 890 */
|
||||
50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0, /* 0x 8a0 */
|
||||
80, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, /* 0x 8b0 */
|
||||
0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 80, 1, 0, 0, 0, 0, /* 0x 8c0 */
|
||||
0, 0, 96, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, /* 0x 8d0 */
|
||||
0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 78, 50, 68, 68, 69, /* 0x 8e0 */
|
||||
67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, /* 0x 8f0 */
|
||||
78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x 900 */
|
||||
83, 77, 65, 52, 48, 0,162, 1, 0, 0, 0, 0, 0, 0,175, 1, /* 0x 910 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, /* 0x 920 */
|
||||
50, 68, 70, 65, 83, 52, 48, 0,175, 1, 0, 0, 0, 0, 0, 0, /* 0x 930 */
|
||||
179, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, /* 0x 940 */
|
||||
0, 0, 0, 0, 0,190, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 950 */
|
||||
48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0,190, /* 0x 960 */
|
||||
1, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,190, 1, 0, 0, /* 0x 970 */
|
||||
78, 50, 68, 70, 65, 83, 53, 48, 0,192, 1, 0, 0, 78, 50, 68, /* 0x 980 */
|
||||
68, 69, 67, 53, 48, 0,195, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 990 */
|
||||
54, 48, 0,204, 1, 0, 0, 0, 0, 0, 0,216, 1, 0, 0, 78, /* 0x 9a0 */
|
||||
50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, /* 0x 9b0 */
|
||||
65, 83, 54, 48, 0,216, 1, 0, 0, 0, 0, 0, 0,227, 1, 0, /* 0x 9c0 */
|
||||
0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, /* 0x 9d0 */
|
||||
0, 0,241, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, /* 0x 9e0 */
|
||||
0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0,241, 1, 0, 0, /* 0x 9f0 */
|
||||
0, 0, 0, 0, 7, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x a00 */
|
||||
0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 7, 2, /* 0x a10 */
|
||||
0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 7, 2, 0, 0, 78, /* 0x a20 */
|
||||
50, 69, 83, 77, 65, 49, 48, 0, 7, 2, 0, 0, 0, 0, 0, 0, /* 0x a30 */
|
||||
9, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, /* 0x a40 */
|
||||
0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 10, 2, 0, 0, 0, 0, /* 0x a50 */
|
||||
0, 0, 12, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, /* 0x a60 */
|
||||
0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 12, 2, 0, 0, /* 0x a70 */
|
||||
78, 50, 69, 68, 69, 67, 49, 48, 0, 18, 2, 0, 0, 78, 50, 69, /* 0x a80 */
|
||||
83, 77, 65, 50, 48, 0, 29, 2, 0, 0, 0, 0, 0, 0, 31, 2, /* 0x a90 */
|
||||
0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, /* 0x aa0 */
|
||||
50, 69, 70, 65, 83, 50, 48, 0, 34, 2, 0, 0, 0, 0, 0, 0, /* 0x ab0 */
|
||||
38, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, /* 0x ac0 */
|
||||
0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 43, 2, 0, 0, 78, 50, /* 0x ad0 */
|
||||
69, 83, 77, 65, 51, 48, 0, 56, 2, 0, 0, 0, 0, 0, 0, 69, /* 0x ae0 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, /* 0x af0 */
|
||||
78, 50, 69, 70, 65, 83, 51, 48, 0, 69, 2, 0, 0, 0, 0, 0, /* 0x b00 */
|
||||
0, 75, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, /* 0x b10 */
|
||||
0, 0, 0, 0, 0, 0, 84, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x b20 */
|
||||
51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x b30 */
|
||||
84, 2, 0, 0, 0, 0, 0, 0,100, 2, 0, 0, 78, 50, 69, 68, /* 0x b40 */
|
||||
69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 2, 0, /* 0x b50 */
|
||||
0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x b60 */
|
||||
0, 0,133, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, /* 0x b70 */
|
||||
0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,179, 2, 0, 0, /* 0x b80 */
|
||||
0, 0, 0, 0,192, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x b90 */
|
||||
0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, 0,192, 2, /* 0x ba0 */
|
||||
0, 0, 0, 0, 0, 0,196, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x bb0 */
|
||||
51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,207, 2, 0, 0, 78, /* 0x bc0 */
|
||||
50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, /* 0x bd0 */
|
||||
85, 77, 77, 49, 0,207, 2, 0, 0, 78, 50, 69, 83, 77, 65, 53, /* 0x be0 */
|
||||
48, 0,207, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0,209, /* 0x bf0 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,212, 2, 0, 0, /* 0x c00 */
|
||||
78, 50, 69, 83, 77, 65, 54, 48, 0,221, 2, 0, 0, 0, 0, 0, /* 0x c10 */
|
||||
0,233, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x c20 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0,233, 2, 0, 0, 0, /* 0x c30 */
|
||||
0, 0, 0,244, 2, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, /* 0x c40 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 78, 50, 69, 68, /* 0x c50 */
|
||||
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, /* 0x c60 */
|
||||
49, 0, 2, 3, 0, 0, 0, 0, 0, 0, 24, 3, 0, 0, 78, 50, /* 0x c70 */
|
||||
69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, /* 0x c80 */
|
||||
67, 54, 48, 0, 24, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, /* 0x c90 */
|
||||
0, 24, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 24, 3, /* 0x ca0 */
|
||||
0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 38, 3, 0, 0, 0, /* 0x cb0 */
|
||||
0, 0, 0, 43, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, /* 0x cc0 */
|
||||
5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, 43, 3, 0, /* 0x cd0 */
|
||||
0, 67, 84, 68, 85, 77, 77, 89, 49, 0, 48, 3, 0, 0, 67, 84, /* 0x ce0 */
|
||||
66, 83, 72, 82, 48, 49, 0, 48, 3, 0, 0, 67, 84, 66, 82, 79, /* 0x cf0 */
|
||||
82, 48, 49, 0, 52, 3, 0, 0, 67, 84, 66, 83, 87, 65, 48, 49, /* 0x d00 */
|
||||
0, 54, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, 0, 59, 3, /* 0x d10 */
|
||||
0, 0, 0, 0, 0, 0, 73, 3, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x d20 */
|
||||
48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0, /* 0x d30 */
|
||||
73, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, 78, 3, 0, /* 0x d40 */
|
||||
0, 67, 65, 76, 76, 84, 82, 69, 57, 0, 80, 3, 0, 0, 67, 65, /* 0x d50 */
|
||||
76, 76, 84, 82, 49, 49, 0, 82, 3, 0, 0, 0, 0, 0, 0, 86, /* 0x d60 */
|
||||
3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 5, 0, 0, 0, /* 0x d70 */
|
||||
67, 84, 67, 76, 69, 86, 69, 50, 0, 86, 3, 0, 0, 0, 0, 0, /* 0x d80 */
|
||||
0, 91, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 0, 0, /* 0x d90 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0, 91, 3, 0, 0, 67, /* 0x da0 */
|
||||
84, 68, 85, 77, 77, 89, 50, 0, 93, 3, 0, 0, 67, 84, 66, 83, /* 0x db0 */
|
||||
72, 82, 49, 49, 0, 93, 3, 0, 0, 67, 84, 66, 82, 79, 82, 49, /* 0x dc0 */
|
||||
49, 0, 97, 3, 0, 0, 67, 84, 66, 83, 87, 65, 49, 49, 0, 99, /* 0x dd0 */
|
||||
3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,104, 3, 0, 0, /* 0x de0 */
|
||||
0, 0, 0, 0,109, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, /* 0x df0 */
|
||||
0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, 0,109, 3, /* 0x e00 */
|
||||
0, 0, 76, 69, 88, 69, 67, 48, 49, 53, 0,109, 3, 0, 0, 76, /* 0x e10 */
|
||||
88, 85, 78, 70, 48, 48, 48, 0,139, 3, 0, 0, 0, 0, 0, 0, /* 0x e20 */
|
||||
141, 3, 0, 0, 76, 88, 85, 78, 70, 48, 49, 48, 0, 5, 0, 0, /* 0x e30 */
|
||||
0, 76, 88, 85, 78, 70, 48, 48, 50, 0,141, 3, 0, 0, 77, 82, /* 0x e40 */
|
||||
85, 66, 89, 84, 69, 48, 0,146, 3, 0, 0, 76, 88, 77, 82, 85, /* 0x e50 */
|
||||
48, 48, 53, 0,148, 3, 0, 0, 76, 88, 77, 82, 85, 48, 48, 54, /* 0x e60 */
|
||||
0,153, 3, 0, 0, 76, 88, 77, 82, 85, 48, 48, 55, 0,160, 3, /* 0x e70 */
|
||||
0, 0, 76, 88, 85, 78, 70, 48, 48, 56, 0,167, 3, 0, 0, 76, /* 0x e80 */
|
||||
88, 85, 78, 70, 48, 49, 48, 0,171, 3, 0, 0, 0, 0, 0, 0, /* 0x e90 */
|
||||
176, 3, 0, 0, 76, 88, 85, 78, 70, 48, 52, 50, 0, 0, 0, 0, /* 0x ea0 */
|
||||
0, 76, 88, 74, 67, 67, 48, 49, 48, 0,176, 3, 0, 0, 76, 88, /* 0x eb0 */
|
||||
77, 82, 85, 48, 52, 53, 0,179, 3, 0, 0, 76, 88, 77, 82, 85, /* 0x ec0 */
|
||||
48, 52, 54, 0,182, 3, 0, 0, 76, 88, 74, 67, 67, 48, 50, 48, /* 0x ed0 */
|
||||
0,184, 3, 0, 0, 0, 0, 0, 0,186, 3, 0, 0, 76, 88, 85, /* 0x ee0 */
|
||||
78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, 74, 67, 67, 48, /* 0x ef0 */
|
||||
50, 49, 0,186, 3, 0, 0, 0, 0, 0, 0,191, 3, 0, 0, 76, /* 0x f00 */
|
||||
88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, 74, 67, /* 0x f10 */
|
||||
67, 48, 50, 51, 0,191, 3, 0, 0, 76, 88, 85, 78, 70, 48, 51, /* 0x f20 */
|
||||
55, 0,198, 3, 0, 0, 76, 88, 85, 78, 70, 51, 56, 54, 0,200, /* 0x f30 */
|
||||
3, 0, 0, 76, 88, 85, 78, 70, 51, 56, 55, 0,201, 3, 0, 0, /* 0x f40 */
|
||||
76, 88, 85, 78, 70, 51, 56, 56, 0,210, 3, 0, 0, 0, 0, 0, /* 0x f50 */
|
||||
0,213, 3, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 0, 0, /* 0x f60 */
|
||||
0, 0, 76, 88, 85, 78, 70, 52, 56, 54, 0,213, 3, 0, 0, 76, /* 0x f70 */
|
||||
88, 85, 78, 70, 52, 56, 55, 0,217, 3, 0, 0, 0, 0, 0, 0, /* 0x f80 */
|
||||
219, 3, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 0, 0, 0, /* 0x f90 */
|
||||
0, 76, 88, 77, 82, 85, 48, 54, 53, 0,219, 3, 0, 0, 0, 0, /* 0x fa0 */
|
||||
0, 0,223, 3, 0, 0, 76, 88, 77, 82, 85, 48, 55, 48, 0, 5, /* 0x fb0 */
|
||||
0, 0, 0, 77, 82, 85, 66, 89, 84, 69, 51, 0,223, 3, 0, 0, /* 0x fc0 */
|
||||
77, 82, 85, 65, 82, 66, 51, 48, 0,225, 3, 0, 0, 77, 82, 85, /* 0x fd0 */
|
||||
66, 73, 84, 83, 51, 0,226, 3, 0, 0, 77, 82, 85, 65, 82, 66, /* 0x fe0 */
|
||||
52, 48, 0,228, 3, 0, 0, 76, 88, 77, 82, 85, 48, 55, 48, 0, /* 0x ff0 */
|
||||
232, 3, 0, 0, 0, 0, 0, 0,237, 3, 0, 0, 76, 88, 85, 78, /* 0x1000 */
|
||||
70, 48, 52, 48, 0, 0, 0, 0, 0, 77, 82, 85, 66, 89, 84, 69, /* 0x1010 */
|
||||
52, 0,240, 3, 0, 0, 77, 82, 85, 66, 73, 84, 83, 52, 0,243, /* 0x1020 */
|
||||
3, 0, 0, 77, 82, 85, 65, 82, 66, 53, 48, 0,245, 3, 0, 0, /* 0x1030 */
|
||||
76, 88, 77, 82, 85, 48, 56, 48, 0,251, 3, 0, 0, 77, 82, 85, /* 0x1040 */
|
||||
66, 89, 84, 69, 53, 0,254, 3, 0, 0, 77, 82, 85, 65, 82, 66, /* 0x1050 */
|
||||
54, 48, 0, 0, 4, 0, 0, 77, 82, 85, 66, 73, 84, 83, 53, 0, /* 0x1060 */
|
||||
1, 4, 0, 0, 77, 82, 85, 65, 82, 66, 55, 48, 0, 3, 4, 0, /* 0x1070 */
|
||||
0, 76, 88, 77, 82, 85, 48, 57, 48, 0, 7, 4, 0, 0, 0, 0, /* 0x1080 */
|
||||
0, 0, 14, 4, 0, 0, 76, 88, 77, 82, 85, 49, 48, 48, 0, 10, /* 0x1090 */
|
||||
0, 0, 0, 77, 82, 85, 66, 89, 84, 69, 54, 0, 18, 4, 0, 0, /* 0x10a0 */
|
||||
77, 82, 85, 65, 82, 66, 56, 48, 0, 20, 4, 0, 0, 77, 82, 85, /* 0x10b0 */
|
||||
66, 73, 84, 83, 54, 0, 21, 4, 0, 0, 77, 82, 85, 65, 82, 66, /* 0x10c0 */
|
||||
57, 48, 0, 23, 4, 0, 0, 76, 88, 77, 82, 85, 49, 48, 48, 0, /* 0x10d0 */
|
||||
27, 4, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 43, 4, 0, /* 0x10e0 */
|
||||
0, 76, 88, 77, 82, 85, 49, 49, 48, 0, 48, 4, 0, 0, 76, 88, /* 0x10f0 */
|
||||
77, 82, 85, 49, 49, 49, 0, 51, 4, 0, 0, 76, 88, 85, 78, 70, /* 0x1100 */
|
||||
48, 52, 49, 0, 53, 4, 0, 0, 0, 0, 0, 0, 60, 4, 0, 0, /* 0x1110 */
|
||||
76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, 85, /* 0x1120 */
|
||||
78, 70, 48, 52, 50, 0, 60, 4, 0, 0, 76, 69, 88, 69, 67, 48, /* 0x1130 */
|
||||
49, 54, 0, 60, 4, 0, 0, 0, 0, 0, 0, 62, 4, 0, 0, 76, /* 0x1140 */
|
||||
88, 85, 78, 70, 48, 52, 50, 0, 0, 0, 0, 0, 76, 88, 77, 82, /* 0x1150 */
|
||||
85, 48, 49, 48, 0, 62, 4, 0, 0, 76, 88, 74, 77, 80, 65, 48, /* 0x1160 */
|
||||
48, 0, 63, 4, 0, 0, 76, 88, 67, 65, 76, 76, 66, 48, 0, 65, /* 0x1170 */
|
||||
4, 0, 0, 76, 88, 85, 78, 70, 48, 50, 49, 0, 67, 4, 0, 0, /* 0x1180 */
|
||||
76, 88, 77, 82, 85, 48, 50, 50, 0, 73, 4, 0, 0, 76, 88, 74, /* 0x1190 */
|
||||
77, 80, 65, 48, 49, 0, 76, 4, 0, 0, 76, 88, 67, 65, 76, 76, /* 0x11a0 */
|
||||
66, 49, 0, 78, 4, 0, 0, 77, 82, 85, 66, 73, 84, 83, 49, 0, /* 0x11b0 */
|
||||
80, 4, 0, 0, 76, 88, 77, 82, 85, 48, 51, 48, 0, 81, 4, 0, /* 0x11c0 */
|
||||
0, 77, 82, 85, 66, 89, 84, 69, 49, 0, 83, 4, 0, 0, 77, 82, /* 0x11d0 */
|
||||
85, 65, 82, 66, 49, 48, 0, 85, 4, 0, 0, 76, 88, 77, 82, 85, /* 0x11e0 */
|
||||
48, 52, 48, 0, 86, 4, 0, 0, 0, 0, 0, 0, 88, 4, 0, 0, /* 0x11f0 */
|
||||
76, 88, 77, 82, 85, 48, 51, 48, 0, 0, 0, 0, 0, 76, 88, 85, /* 0x1200 */
|
||||
78, 70, 48, 51, 48, 0, 88, 4, 0, 0, 76, 88, 74, 67, 67, 48, /* 0x1210 */
|
||||
48, 48, 0, 94, 4, 0, 0, 0, 0, 0, 0,102, 4, 0, 0, 76, /* 0x1220 */
|
||||
88, 74, 67, 67, 48, 49, 48, 0, 0, 0, 0, 0, 76, 88, 67, 74, /* 0x1230 */
|
||||
48, 77, 82, 85, 0,102, 4, 0, 0, 76, 88, 67, 74, 49, 77, 82, /* 0x1240 */
|
||||
85, 0,104, 4, 0, 0, 76, 88, 67, 65, 76, 74, 77, 80, 0,107, /* 0x1250 */
|
||||
4, 0, 0, 76, 88, 67, 65, 76, 76, 48, 48, 0,110, 4, 0, 0, /* 0x1260 */
|
||||
0, 0, 0, 0,112, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 55, /* 0x1270 */
|
||||
0, 0, 0, 0, 0, 76, 88, 67, 65, 76, 76, 48, 49, 0,112, 4, /* 0x1280 */
|
||||
0, 0, 76, 88, 67, 74, 50, 77, 82, 85, 0,115, 4, 0, 0, 0, /* 0x1290 */
|
||||
0, 0, 0,117, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 55, 0, /* 0x12a0 */
|
||||
0, 0, 0, 0, 76, 88, 67, 74, 52, 77, 82, 85, 0,117, 4, 0, /* 0x12b0 */
|
||||
0, 0, 0, 0, 0,119, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, /* 0x12c0 */
|
||||
52, 0, 0, 0, 0, 0, 76, 88, 67, 74, 54, 77, 82, 85, 0,119, /* 0x12d0 */
|
||||
4, 0, 0, 0, 0, 0, 0,121, 4, 0, 0, 76, 88, 67, 74, 56, /* 0x12e0 */
|
||||
77, 82, 85, 0, 1, 0, 0, 0, 76, 88, 67, 74, 55, 77, 82, 85, /* 0x12f0 */
|
||||
0,121, 4, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 76, 88, 67, /* 0x1300 */
|
||||
74, 56, 77, 82, 85, 0, 1, 0, 0, 0, 76, 88, 67, 74, 56, 77, /* 0x1310 */
|
||||
82, 85, 0,123, 4, 0, 0, 0, 0, 0, 0,126, 4, 0, 0, 76, /* 0x1320 */
|
||||
88, 85, 78, 70, 48, 51, 55, 0, 0, 0, 0, 0, 76, 88, 85, 78, /* 0x1330 */
|
||||
70, 48, 51, 52, 0,126, 4, 0, 0, 0, 0, 0, 0,131, 4, 0, /* 0x1340 */
|
||||
0, 76, 88, 85, 78, 70, 48, 51, 48, 0, 0, 0, 0, 0, 76, 88, /* 0x1350 */
|
||||
77, 82, 85, 48, 53, 53, 0,131, 4, 0, 0, 77, 82, 85, 66, 89, /* 0x1360 */
|
||||
84, 69, 50, 0,133, 4, 0, 0, 77, 82, 85, 66, 73, 84, 83, 50, /* 0x1370 */
|
||||
0,138, 4, 0, 0, 77, 82, 85, 65, 82, 66, 50, 48, 0,143, 4, /* 0x1380 */
|
||||
0, 0, 76, 88, 77, 82, 85, 48, 53, 55, 0,148, 4, 0, 0, 76, /* 0x1390 */
|
||||
88, 77, 82, 85, 48, 53, 56, 0,154, 4, 0, 0, 76, 88, 85, 78, /* 0x13a0 */
|
||||
70, 48, 51, 53, 0,155, 4, 0, 0, 67, 75, 76, 76, 84, 82, 48, /* 0x13b0 */
|
||||
48, 0,161, 4, 0, 0, 0, 0, 0, 0,165, 4, 0, 0, 67, 75, /* 0x13c0 */
|
||||
76, 76, 84, 82, 50, 48, 0, 30, 0, 0, 0, 67, 75, 76, 76, 84, /* 0x13d0 */
|
||||
82, 49, 48, 0,170, 4, 0, 0, 0, 0, 0, 0,184, 4, 0, 0, /* 0x13e0 */
|
||||
67, 75, 76, 76, 84, 82, 50, 48, 0, 6, 0, 0, 0, 67, 75, 76, /* 0x13f0 */
|
||||
76, 84, 82, 50, 48, 0,184, 4, 0, 0, 0, 0, 0, 0,190, 4, /* 0x1400 */
|
||||
0, 0, 67, 75, 76, 76, 84, 82, 52, 48, 0, 0, 0, 0, 0, 0, /* 0x1410 */
|
||||
0, 0, 0,194, 4, 0, 0, 67, 75, 76, 76, 84, 82, 52, 48, 0, /* 0x1420 */
|
||||
0, 0, 0, 0, 67, 75, 76, 76, 84, 82, 51, 48, 0,217, 4, 0, /* 0x1430 */
|
||||
0, 0, 0, 0, 0,224, 4, 0, 0, 67, 75, 76, 76, 84, 82, 49, /* 0x1440 */
|
||||
48, 0, 14, 0, 0, 0, 67, 75, 76, 76, 84, 82, 52, 48, 0,224, /* 0x1450 */
|
||||
4, 0, 0, 0, 0, 0, 0,229, 4, 0, 0, 67, 75, 76, 76, 84, /* 0x1460 */
|
||||
82, 48, 48, 0, 4, 0, 0, 0, 76, 69, 88, 69, 67, 48, 49, 55, /* 0x1470 */
|
||||
0,229, 4, 0, 0, 76, 69, 88, 69, 67, 48, 50, 48, 0,231, 4, /* 0x1480 */
|
||||
0, 0, 88, 84, 72, 69, 69, 78, 68, 88, 0, 28, 5, 0, 0,255, /* 0x1490 */
|
||||
255,255,255, 28, 5 /* 0x14a0 */
|
||||
131,233, 1,127, 0, 97,195,106, 24, 90,232, 24, 0, 0, 0, 83, /* 0x 4e0 */
|
||||
69, 76,105,110,117,120, 32,100,101,110,105,101,100, 32,101,120, /* 0x 4f0 */
|
||||
101, 99,109,101,109, 46, 10, 89,106, 2, 91,106, 4, 88,205,128, /* 0x 500 */
|
||||
179,127,106, 1, 88,205,128, 94,141, 69,247, 43, 0,137,194, 3, /* 0x 510 */
|
||||
64, 72, 80, 49,201,106,255,106, 50,181, 16,106, 7, 81, 80,137, /* 0x 520 */
|
||||
227,106, 90, 88,205,128,133,192,120,173,146,147,252,173, 80, 84, /* 0x 530 */
|
||||
82,173, 80,173, 86,255,213,131,196, 40,195, 93,232,198,255,255, /* 0x 540 */
|
||||
255, 0, 0, 0, 76, 69, 88, 69, 67, 48, 48, 48, 0, 0, 0, 0, /* 0x 550 */
|
||||
0, 0, 0, 0, 0, 5, 0, 0, 0, 76, 69, 88, 69, 67, 48, 50, /* 0x 560 */
|
||||
48, 0,100, 0, 0, 0, 76, 69, 88, 69, 67, 48, 48, 57, 0, 5, /* 0x 570 */
|
||||
0, 0, 0, 76, 69, 88, 69, 67, 48, 49, 48, 0, 5, 0, 0, 0, /* 0x 580 */
|
||||
78, 50, 66, 83, 77, 65, 49, 48, 0, 19, 0, 0, 0, 0, 0, 0, /* 0x 590 */
|
||||
0, 21, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, /* 0x 5a0 */
|
||||
0, 0, 78, 50, 66, 70, 65, 83, 49, 48, 0, 22, 0, 0, 0, 0, /* 0x 5b0 */
|
||||
0, 0, 0, 24, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, /* 0x 5c0 */
|
||||
4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, 0, 24, 0, 0, /* 0x 5d0 */
|
||||
0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 30, 0, 0, 0, 78, 50, /* 0x 5e0 */
|
||||
66, 83, 77, 65, 50, 48, 0, 41, 0, 0, 0, 0, 0, 0, 0, 43, /* 0x 5f0 */
|
||||
0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, /* 0x 600 */
|
||||
78, 50, 66, 70, 65, 83, 50, 48, 0, 46, 0, 0, 0, 0, 0, 0, /* 0x 610 */
|
||||
0, 50, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, 0, 0, 0, /* 0x 620 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 55, 0, 0, 0, 78, /* 0x 630 */
|
||||
50, 66, 83, 77, 65, 51, 48, 0, 68, 0, 0, 0, 0, 0, 0, 0, /* 0x 640 */
|
||||
81, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, /* 0x 650 */
|
||||
0, 78, 50, 66, 70, 65, 83, 51, 48, 0, 81, 0, 0, 0, 0, 0, /* 0x 660 */
|
||||
0, 0, 85, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, /* 0x 670 */
|
||||
0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 680 */
|
||||
67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, /* 0x 690 */
|
||||
0, 96, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 78, 50, 66, /* 0x 6a0 */
|
||||
68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, /* 0x 6b0 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, /* 0x 6c0 */
|
||||
50, 66, 83, 77, 65, 52, 48, 0,158, 0, 0, 0, 0, 0, 0, 0, /* 0x 6d0 */
|
||||
171, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, /* 0x 6e0 */
|
||||
0, 78, 50, 66, 70, 65, 83, 52, 48, 0,171, 0, 0, 0, 0, 0, /* 0x 6f0 */
|
||||
0, 0,175, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, /* 0x 700 */
|
||||
0, 0, 0, 0, 0, 0, 0,186, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 710 */
|
||||
67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 68, 85, 77, 77, 49, /* 0x 720 */
|
||||
0,186, 0, 0, 0, 78, 50, 66, 83, 77, 65, 53, 48, 0,186, 0, /* 0x 730 */
|
||||
0, 0, 78, 50, 66, 70, 65, 83, 53, 48, 0,188, 0, 0, 0, 78, /* 0x 740 */
|
||||
50, 66, 68, 69, 67, 53, 48, 0,191, 0, 0, 0, 78, 50, 66, 83, /* 0x 750 */
|
||||
77, 65, 54, 48, 0,200, 0, 0, 0, 0, 0, 0, 0,212, 0, 0, /* 0x 760 */
|
||||
0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x 770 */
|
||||
66, 70, 65, 83, 54, 48, 0,212, 0, 0, 0, 0, 0, 0, 0,223, /* 0x 780 */
|
||||
0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, /* 0x 790 */
|
||||
0, 0, 0, 0,237, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x 7a0 */
|
||||
0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0,237, 0, /* 0x 7b0 */
|
||||
0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 7c0 */
|
||||
49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, /* 0x 7d0 */
|
||||
3, 1, 0, 0, 78, 82, 86, 50, 66, 69, 78, 68, 0, 3, 1, 0, /* 0x 7e0 */
|
||||
0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 3, 1, 0, 0, 0, 0, /* 0x 7f0 */
|
||||
0, 0, 5, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, /* 0x 800 */
|
||||
0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 48, 0, 6, 1, 0, 0, /* 0x 810 */
|
||||
0, 0, 0, 0, 8, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x 820 */
|
||||
0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 8, 1, /* 0x 830 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 14, 1, 0, 0, 78, /* 0x 840 */
|
||||
50, 68, 83, 77, 65, 50, 48, 0, 25, 1, 0, 0, 0, 0, 0, 0, /* 0x 850 */
|
||||
27, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 2, 0, 0, /* 0x 860 */
|
||||
0, 78, 50, 68, 70, 65, 83, 50, 48, 0, 30, 1, 0, 0, 0, 0, /* 0x 870 */
|
||||
0, 0, 34, 1, 0, 0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 0, /* 0x 880 */
|
||||
0, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 39, 1, 0, 0, /* 0x 890 */
|
||||
78, 50, 68, 83, 77, 65, 51, 48, 0, 52, 1, 0, 0, 0, 0, 0, /* 0x 8a0 */
|
||||
0, 65, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, /* 0x 8b0 */
|
||||
0, 0, 78, 50, 68, 70, 65, 83, 51, 48, 0, 65, 1, 0, 0, 0, /* 0x 8c0 */
|
||||
0, 0, 0, 71, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 8d0 */
|
||||
16, 0, 0, 0, 0, 0, 0, 0, 80, 1, 0, 0, 78, 50, 68, 68, /* 0x 8e0 */
|
||||
69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 8f0 */
|
||||
48, 0, 80, 1, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0, 78, 50, /* 0x 900 */
|
||||
68, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, /* 0x 910 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, /* 0x 920 */
|
||||
0, 0, 0, 0,148, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, /* 0x 930 */
|
||||
0, 0, 0, 0, 0, 78, 50, 68, 83, 77, 65, 52, 48, 0,162, 1, /* 0x 940 */
|
||||
0, 0, 0, 0, 0, 0,175, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 950 */
|
||||
51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 70, 65, 83, 52, 48, 0, /* 0x 960 */
|
||||
175, 1, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 78, 50, 68, 68, /* 0x 970 */
|
||||
69, 67, 51, 48, 0, 69, 0, 0, 0, 0, 0, 0, 0,190, 1, 0, /* 0x 980 */
|
||||
0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, /* 0x 990 */
|
||||
68, 68, 85, 77, 77, 49, 0,190, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 9a0 */
|
||||
65, 53, 48, 0,190, 1, 0, 0, 78, 50, 68, 70, 65, 83, 53, 48, /* 0x 9b0 */
|
||||
0,192, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, 0,195, 1, /* 0x 9c0 */
|
||||
0, 0, 78, 50, 68, 83, 77, 65, 54, 48, 0,204, 1, 0, 0, 0, /* 0x 9d0 */
|
||||
0, 0, 0,216, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, /* 0x 9e0 */
|
||||
0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 48, 0,216, 1, 0, /* 0x 9f0 */
|
||||
0, 0, 0, 0, 0,227, 1, 0, 0, 78, 50, 68, 70, 65, 83, 54, /* 0x a00 */
|
||||
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 1, 0, 0, 78, 50, /* 0x a10 */
|
||||
68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x a20 */
|
||||
83, 54, 49, 0,241, 1, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, /* 0x a30 */
|
||||
78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x a40 */
|
||||
68, 69, 67, 54, 48, 0, 7, 2, 0, 0, 78, 82, 86, 50, 68, 69, /* 0x a50 */
|
||||
78, 68, 0, 7, 2, 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, /* 0x a60 */
|
||||
7, 2, 0, 0, 0, 0, 0, 0, 9, 2, 0, 0, 78, 50, 69, 68, /* 0x a70 */
|
||||
69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, /* 0x a80 */
|
||||
48, 0, 10, 2, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 78, 50, /* 0x a90 */
|
||||
69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, /* 0x aa0 */
|
||||
83, 49, 49, 0, 12, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x ab0 */
|
||||
0, 18, 2, 0, 0, 78, 50, 69, 83, 77, 65, 50, 48, 0, 29, 2, /* 0x ac0 */
|
||||
0, 0, 0, 0, 0, 0, 31, 2, 0, 0, 78, 50, 69, 83, 77, 65, /* 0x ad0 */
|
||||
49, 48, 0, 2, 0, 0, 0, 78, 50, 69, 70, 65, 83, 50, 48, 0, /* 0x ae0 */
|
||||
34, 2, 0, 0, 0, 0, 0, 0, 38, 2, 0, 0, 78, 50, 69, 70, /* 0x af0 */
|
||||
65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 50, /* 0x b00 */
|
||||
48, 0, 43, 2, 0, 0, 78, 50, 69, 83, 77, 65, 51, 48, 0, 56, /* 0x b10 */
|
||||
2, 0, 0, 0, 0, 0, 0, 69, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x b20 */
|
||||
67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 70, 65, 83, 51, 48, /* 0x b30 */
|
||||
0, 69, 2, 0, 0, 0, 0, 0, 0, 75, 2, 0, 0, 78, 50, 69, /* 0x b40 */
|
||||
68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 0, 0, 0, 0, 84, 2, /* 0x b50 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, /* 0x b60 */
|
||||
50, 69, 68, 69, 67, 51, 48, 0, 84, 2, 0, 0, 0, 0, 0, 0, /* 0x b70 */
|
||||
100, 2, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 0, 0, 0, /* 0x b80 */
|
||||
0, 0, 0, 0, 0,115, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, /* 0x b90 */
|
||||
48, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 78, 50, /* 0x ba0 */
|
||||
69, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 78, 50, 69, 83, 77, /* 0x bb0 */
|
||||
65, 52, 48, 0,179, 2, 0, 0, 0, 0, 0, 0,192, 2, 0, 0, /* 0x bc0 */
|
||||
78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, /* 0x bd0 */
|
||||
70, 65, 83, 52, 48, 0,192, 2, 0, 0, 0, 0, 0, 0,196, 2, /* 0x be0 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 0, /* 0x bf0 */
|
||||
0, 0, 0,207, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x c00 */
|
||||
82, 0, 0, 0, 78, 50, 69, 68, 85, 77, 77, 49, 0,207, 2, 0, /* 0x c10 */
|
||||
0, 78, 50, 69, 83, 77, 65, 53, 48, 0,207, 2, 0, 0, 78, 50, /* 0x c20 */
|
||||
69, 70, 65, 83, 53, 48, 0,209, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x c30 */
|
||||
67, 53, 48, 0,212, 2, 0, 0, 78, 50, 69, 83, 77, 65, 54, 48, /* 0x c40 */
|
||||
0,221, 2, 0, 0, 0, 0, 0, 0,233, 2, 0, 0, 78, 50, 69, /* 0x c50 */
|
||||
68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, /* 0x c60 */
|
||||
54, 48, 0,233, 2, 0, 0, 0, 0, 0, 0,244, 2, 0, 0, 78, /* 0x c70 */
|
||||
50, 69, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */
|
||||
2, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, /* 0x c90 */
|
||||
0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 2, 3, 0, 0, 0, 0, /* 0x ca0 */
|
||||
0, 0, 24, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, /* 0x cb0 */
|
||||
0, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 24, 3, 0, 0, /* 0x cc0 */
|
||||
78, 82, 86, 50, 69, 69, 78, 68, 0, 24, 3, 0, 0, 67, 65, 76, /* 0x cd0 */
|
||||
76, 84, 82, 48, 48, 0, 24, 3, 0, 0, 67, 84, 67, 76, 69, 86, /* 0x ce0 */
|
||||
69, 49, 0, 38, 3, 0, 0, 0, 0, 0, 0, 43, 3, 0, 0, 67, /* 0x cf0 */
|
||||
65, 76, 76, 84, 82, 48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, /* 0x d00 */
|
||||
84, 82, 48, 49, 0, 43, 3, 0, 0, 67, 84, 68, 85, 77, 77, 89, /* 0x d10 */
|
||||
49, 0, 48, 3, 0, 0, 67, 84, 66, 83, 72, 82, 48, 49, 0, 48, /* 0x d20 */
|
||||
3, 0, 0, 67, 84, 66, 82, 79, 82, 48, 49, 0, 52, 3, 0, 0, /* 0x d30 */
|
||||
67, 84, 66, 83, 87, 65, 48, 49, 0, 54, 3, 0, 0, 67, 65, 76, /* 0x d40 */
|
||||
76, 84, 82, 48, 50, 0, 59, 3, 0, 0, 0, 0, 0, 0, 73, 3, /* 0x d50 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, /* 0x d60 */
|
||||
65, 76, 76, 84, 82, 49, 48, 0, 73, 3, 0, 0, 67, 65, 76, 76, /* 0x d70 */
|
||||
84, 82, 69, 56, 0, 78, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, /* 0x d80 */
|
||||
57, 0, 80, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 82, /* 0x d90 */
|
||||
3, 0, 0, 0, 0, 0, 0, 86, 3, 0, 0, 67, 65, 76, 76, 84, /* 0x da0 */
|
||||
82, 49, 51, 0, 5, 0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, /* 0x db0 */
|
||||
0, 86, 3, 0, 0, 0, 0, 0, 0, 91, 3, 0, 0, 67, 65, 76, /* 0x dc0 */
|
||||
76, 84, 82, 49, 49, 0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x dd0 */
|
||||
49, 50, 0, 91, 3, 0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0, /* 0x de0 */
|
||||
93, 3, 0, 0, 67, 84, 66, 83, 72, 82, 49, 49, 0, 93, 3, 0, /* 0x df0 */
|
||||
0, 67, 84, 66, 82, 79, 82, 49, 49, 0, 97, 3, 0, 0, 67, 84, /* 0x e00 */
|
||||
66, 83, 87, 65, 49, 49, 0, 99, 3, 0, 0, 67, 65, 76, 76, 84, /* 0x e10 */
|
||||
82, 49, 51, 0,104, 3, 0, 0, 0, 0, 0, 0,109, 3, 0, 0, /* 0x e20 */
|
||||
67, 65, 76, 76, 84, 82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, /* 0x e30 */
|
||||
72, 69, 69, 78, 68, 0,109, 3, 0, 0, 76, 69, 88, 69, 67, 48, /* 0x e40 */
|
||||
49, 53, 0,109, 3, 0, 0, 76, 88, 85, 78, 70, 48, 48, 48, 0, /* 0x e50 */
|
||||
139, 3, 0, 0, 0, 0, 0, 0,141, 3, 0, 0, 76, 88, 85, 78, /* 0x e60 */
|
||||
70, 48, 49, 48, 0, 5, 0, 0, 0, 76, 88, 85, 78, 70, 48, 48, /* 0x e70 */
|
||||
50, 0,141, 3, 0, 0, 77, 82, 85, 66, 89, 84, 69, 48, 0,146, /* 0x e80 */
|
||||
3, 0, 0, 76, 88, 77, 82, 85, 48, 48, 53, 0,148, 3, 0, 0, /* 0x e90 */
|
||||
76, 88, 77, 82, 85, 48, 48, 54, 0,153, 3, 0, 0, 76, 88, 77, /* 0x ea0 */
|
||||
82, 85, 48, 48, 55, 0,160, 3, 0, 0, 76, 88, 85, 78, 70, 48, /* 0x eb0 */
|
||||
48, 56, 0,167, 3, 0, 0, 76, 88, 85, 78, 70, 48, 49, 48, 0, /* 0x ec0 */
|
||||
171, 3, 0, 0, 0, 0, 0, 0,176, 3, 0, 0, 76, 88, 85, 78, /* 0x ed0 */
|
||||
70, 48, 52, 50, 0, 0, 0, 0, 0, 76, 88, 74, 67, 67, 48, 49, /* 0x ee0 */
|
||||
48, 0,176, 3, 0, 0, 76, 88, 77, 82, 85, 48, 52, 53, 0,179, /* 0x ef0 */
|
||||
3, 0, 0, 76, 88, 77, 82, 85, 48, 52, 54, 0,182, 3, 0, 0, /* 0x f00 */
|
||||
76, 88, 74, 67, 67, 48, 50, 48, 0,184, 3, 0, 0, 0, 0, 0, /* 0x f10 */
|
||||
0,186, 3, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, /* 0x f20 */
|
||||
0, 0, 76, 88, 74, 67, 67, 48, 50, 49, 0,186, 3, 0, 0, 0, /* 0x f30 */
|
||||
0, 0, 0,191, 3, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0, /* 0x f40 */
|
||||
0, 0, 0, 0, 76, 88, 74, 67, 67, 48, 50, 51, 0,191, 3, 0, /* 0x f50 */
|
||||
0, 76, 88, 85, 78, 70, 48, 51, 55, 0,198, 3, 0, 0, 76, 88, /* 0x f60 */
|
||||
85, 78, 70, 51, 56, 54, 0,200, 3, 0, 0, 76, 88, 85, 78, 70, /* 0x f70 */
|
||||
51, 56, 55, 0,201, 3, 0, 0, 76, 88, 85, 78, 70, 51, 56, 56, /* 0x f80 */
|
||||
0,210, 3, 0, 0, 0, 0, 0, 0,213, 3, 0, 0, 76, 88, 85, /* 0x f90 */
|
||||
78, 70, 48, 52, 48, 0, 0, 0, 0, 0, 76, 88, 85, 78, 70, 52, /* 0x fa0 */
|
||||
56, 54, 0,213, 3, 0, 0, 76, 88, 85, 78, 70, 52, 56, 55, 0, /* 0x fb0 */
|
||||
217, 3, 0, 0, 0, 0, 0, 0,219, 3, 0, 0, 76, 88, 85, 78, /* 0x fc0 */
|
||||
70, 48, 52, 48, 0, 0, 0, 0, 0, 76, 88, 77, 82, 85, 48, 54, /* 0x fd0 */
|
||||
53, 0,219, 3, 0, 0, 0, 0, 0, 0,223, 3, 0, 0, 76, 88, /* 0x fe0 */
|
||||
77, 82, 85, 48, 55, 48, 0, 5, 0, 0, 0, 77, 82, 85, 66, 89, /* 0x ff0 */
|
||||
84, 69, 51, 0,223, 3, 0, 0, 77, 82, 85, 65, 82, 66, 51, 48, /* 0x1000 */
|
||||
0,225, 3, 0, 0, 77, 82, 85, 66, 73, 84, 83, 51, 0,226, 3, /* 0x1010 */
|
||||
0, 0, 77, 82, 85, 65, 82, 66, 52, 48, 0,228, 3, 0, 0, 76, /* 0x1020 */
|
||||
88, 77, 82, 85, 48, 55, 48, 0,232, 3, 0, 0, 0, 0, 0, 0, /* 0x1030 */
|
||||
237, 3, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 0, 0, 0, /* 0x1040 */
|
||||
0, 77, 82, 85, 66, 89, 84, 69, 52, 0,240, 3, 0, 0, 77, 82, /* 0x1050 */
|
||||
85, 66, 73, 84, 83, 52, 0,243, 3, 0, 0, 77, 82, 85, 65, 82, /* 0x1060 */
|
||||
66, 53, 48, 0,245, 3, 0, 0, 76, 88, 77, 82, 85, 48, 56, 48, /* 0x1070 */
|
||||
0,251, 3, 0, 0, 77, 82, 85, 66, 89, 84, 69, 53, 0,254, 3, /* 0x1080 */
|
||||
0, 0, 77, 82, 85, 65, 82, 66, 54, 48, 0, 0, 4, 0, 0, 77, /* 0x1090 */
|
||||
82, 85, 66, 73, 84, 83, 53, 0, 1, 4, 0, 0, 77, 82, 85, 65, /* 0x10a0 */
|
||||
82, 66, 55, 48, 0, 3, 4, 0, 0, 76, 88, 77, 82, 85, 48, 57, /* 0x10b0 */
|
||||
48, 0, 7, 4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 76, 88, /* 0x10c0 */
|
||||
77, 82, 85, 49, 48, 48, 0, 10, 0, 0, 0, 77, 82, 85, 66, 89, /* 0x10d0 */
|
||||
84, 69, 54, 0, 18, 4, 0, 0, 77, 82, 85, 65, 82, 66, 56, 48, /* 0x10e0 */
|
||||
0, 20, 4, 0, 0, 77, 82, 85, 66, 73, 84, 83, 54, 0, 21, 4, /* 0x10f0 */
|
||||
0, 0, 77, 82, 85, 65, 82, 66, 57, 48, 0, 23, 4, 0, 0, 76, /* 0x1100 */
|
||||
88, 77, 82, 85, 49, 48, 48, 0, 27, 4, 0, 0, 76, 88, 85, 78, /* 0x1110 */
|
||||
70, 48, 52, 48, 0, 43, 4, 0, 0, 76, 88, 77, 82, 85, 49, 49, /* 0x1120 */
|
||||
48, 0, 48, 4, 0, 0, 76, 88, 77, 82, 85, 49, 49, 49, 0, 51, /* 0x1130 */
|
||||
4, 0, 0, 76, 88, 85, 78, 70, 48, 52, 49, 0, 53, 4, 0, 0, /* 0x1140 */
|
||||
0, 0, 0, 0, 60, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, /* 0x1150 */
|
||||
0, 0, 0, 0, 0, 76, 88, 85, 78, 70, 48, 52, 50, 0, 60, 4, /* 0x1160 */
|
||||
0, 0, 76, 69, 88, 69, 67, 48, 49, 54, 0, 60, 4, 0, 0, 0, /* 0x1170 */
|
||||
0, 0, 0, 62, 4, 0, 0, 76, 88, 85, 78, 70, 48, 52, 50, 0, /* 0x1180 */
|
||||
0, 0, 0, 0, 76, 88, 77, 82, 85, 48, 49, 48, 0, 62, 4, 0, /* 0x1190 */
|
||||
0, 76, 88, 74, 77, 80, 65, 48, 48, 0, 63, 4, 0, 0, 76, 88, /* 0x11a0 */
|
||||
67, 65, 76, 76, 66, 48, 0, 65, 4, 0, 0, 76, 88, 85, 78, 70, /* 0x11b0 */
|
||||
48, 50, 49, 0, 67, 4, 0, 0, 76, 88, 77, 82, 85, 48, 50, 50, /* 0x11c0 */
|
||||
0, 73, 4, 0, 0, 76, 88, 74, 77, 80, 65, 48, 49, 0, 76, 4, /* 0x11d0 */
|
||||
0, 0, 76, 88, 67, 65, 76, 76, 66, 49, 0, 78, 4, 0, 0, 77, /* 0x11e0 */
|
||||
82, 85, 66, 73, 84, 83, 49, 0, 80, 4, 0, 0, 76, 88, 77, 82, /* 0x11f0 */
|
||||
85, 48, 51, 48, 0, 81, 4, 0, 0, 77, 82, 85, 66, 89, 84, 69, /* 0x1200 */
|
||||
49, 0, 83, 4, 0, 0, 77, 82, 85, 65, 82, 66, 49, 48, 0, 85, /* 0x1210 */
|
||||
4, 0, 0, 76, 88, 77, 82, 85, 48, 52, 48, 0, 86, 4, 0, 0, /* 0x1220 */
|
||||
0, 0, 0, 0, 88, 4, 0, 0, 76, 88, 77, 82, 85, 48, 51, 48, /* 0x1230 */
|
||||
0, 0, 0, 0, 0, 76, 88, 85, 78, 70, 48, 51, 48, 0, 88, 4, /* 0x1240 */
|
||||
0, 0, 76, 88, 74, 67, 67, 48, 48, 48, 0, 94, 4, 0, 0, 0, /* 0x1250 */
|
||||
0, 0, 0,102, 4, 0, 0, 76, 88, 74, 67, 67, 48, 49, 48, 0, /* 0x1260 */
|
||||
0, 0, 0, 0, 76, 88, 67, 74, 48, 77, 82, 85, 0,102, 4, 0, /* 0x1270 */
|
||||
0, 76, 88, 67, 74, 49, 77, 82, 85, 0,104, 4, 0, 0, 76, 88, /* 0x1280 */
|
||||
67, 65, 76, 74, 77, 80, 0,107, 4, 0, 0, 76, 88, 67, 65, 76, /* 0x1290 */
|
||||
76, 48, 48, 0,110, 4, 0, 0, 0, 0, 0, 0,112, 4, 0, 0, /* 0x12a0 */
|
||||
76, 88, 85, 78, 70, 48, 51, 55, 0, 0, 0, 0, 0, 76, 88, 67, /* 0x12b0 */
|
||||
65, 76, 76, 48, 49, 0,112, 4, 0, 0, 76, 88, 67, 74, 50, 77, /* 0x12c0 */
|
||||
82, 85, 0,115, 4, 0, 0, 0, 0, 0, 0,117, 4, 0, 0, 76, /* 0x12d0 */
|
||||
88, 85, 78, 70, 48, 51, 55, 0, 0, 0, 0, 0, 76, 88, 67, 74, /* 0x12e0 */
|
||||
52, 77, 82, 85, 0,117, 4, 0, 0, 0, 0, 0, 0,119, 4, 0, /* 0x12f0 */
|
||||
0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, /* 0x1300 */
|
||||
67, 74, 54, 77, 82, 85, 0,119, 4, 0, 0, 0, 0, 0, 0,121, /* 0x1310 */
|
||||
4, 0, 0, 76, 88, 67, 74, 56, 77, 82, 85, 0, 1, 0, 0, 0, /* 0x1320 */
|
||||
76, 88, 67, 74, 55, 77, 82, 85, 0,121, 4, 0, 0, 0, 0, 0, /* 0x1330 */
|
||||
0,123, 4, 0, 0, 76, 88, 67, 74, 56, 77, 82, 85, 0, 1, 0, /* 0x1340 */
|
||||
0, 0, 76, 88, 67, 74, 56, 77, 82, 85, 0,123, 4, 0, 0, 0, /* 0x1350 */
|
||||
0, 0, 0,126, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 55, 0, /* 0x1360 */
|
||||
0, 0, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0,126, 4, 0, /* 0x1370 */
|
||||
0, 0, 0, 0, 0,131, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, /* 0x1380 */
|
||||
48, 0, 0, 0, 0, 0, 76, 88, 77, 82, 85, 48, 53, 53, 0,131, /* 0x1390 */
|
||||
4, 0, 0, 77, 82, 85, 66, 89, 84, 69, 50, 0,133, 4, 0, 0, /* 0x13a0 */
|
||||
77, 82, 85, 66, 73, 84, 83, 50, 0,138, 4, 0, 0, 77, 82, 85, /* 0x13b0 */
|
||||
65, 82, 66, 50, 48, 0,143, 4, 0, 0, 76, 88, 77, 82, 85, 48, /* 0x13c0 */
|
||||
53, 55, 0,148, 4, 0, 0, 76, 88, 77, 82, 85, 48, 53, 56, 0, /* 0x13d0 */
|
||||
154, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 53, 0,155, 4, 0, /* 0x13e0 */
|
||||
0, 67, 75, 76, 76, 84, 82, 48, 48, 0,161, 4, 0, 0, 0, 0, /* 0x13f0 */
|
||||
0, 0,165, 4, 0, 0, 67, 75, 76, 76, 84, 82, 50, 48, 0, 30, /* 0x1400 */
|
||||
0, 0, 0, 67, 75, 76, 76, 84, 82, 49, 48, 0,170, 4, 0, 0, /* 0x1410 */
|
||||
0, 0, 0, 0,184, 4, 0, 0, 67, 75, 76, 76, 84, 82, 50, 48, /* 0x1420 */
|
||||
0, 6, 0, 0, 0, 67, 75, 76, 76, 84, 82, 50, 48, 0,184, 4, /* 0x1430 */
|
||||
0, 0, 0, 0, 0, 0,190, 4, 0, 0, 67, 75, 76, 76, 84, 82, /* 0x1440 */
|
||||
52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 4, 0, 0, 67, /* 0x1450 */
|
||||
75, 76, 76, 84, 82, 52, 48, 0, 0, 0, 0, 0, 67, 75, 76, 76, /* 0x1460 */
|
||||
84, 82, 51, 48, 0,217, 4, 0, 0, 0, 0, 0, 0,224, 4, 0, /* 0x1470 */
|
||||
0, 67, 75, 76, 76, 84, 82, 49, 48, 0, 14, 0, 0, 0, 67, 75, /* 0x1480 */
|
||||
76, 76, 84, 82, 52, 48, 0,224, 4, 0, 0, 0, 0, 0, 0,229, /* 0x1490 */
|
||||
4, 0, 0, 67, 75, 76, 76, 84, 82, 48, 48, 0, 4, 0, 0, 0, /* 0x14a0 */
|
||||
76, 69, 88, 69, 67, 48, 49, 55, 0,229, 4, 0, 0, 76, 69, 88, /* 0x14b0 */
|
||||
69, 67, 48, 50, 48, 0,231, 4, 0, 0, 88, 84, 72, 69, 69, 78, /* 0x14c0 */
|
||||
68, 88, 0, 81, 5, 0, 0,255,255,255,255, 81, 5 /* 0x14d0 */
|
||||
};
|
||||
|
||||
@@ -38,8 +38,8 @@ PHDRS
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
/* 0x00c00000: 12MB */
|
||||
. = 0x00c00000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
/* 0x00c01000: 12MB+4KB for Fedora Core 5 vDSO at 0xc00000 */
|
||||
. = 0x00c01000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
||||
@@ -49,27 +49,49 @@ MAP_PRIVATE= 2
|
||||
MAP_FIXED= 0x10
|
||||
MAP_ANONYMOUS= 0x20
|
||||
|
||||
SYS_mmap= 90
|
||||
__NR_mmap= 90
|
||||
|
||||
PAGE_SHIFT= 12
|
||||
PAGE_SIZE = -(~0<<PAGE_SHIFT)
|
||||
|
||||
/* Temporary until we get the buildLoader stuff working ... */
|
||||
.ascii "\n$Id: UPX (C) 1996-2006 the UPX Team. "
|
||||
.asciz "All Rights Reserved. http://upx.sf.net $\n"
|
||||
.p2align 2 # (1<<2)
|
||||
|
||||
/* /usr/include/asm-ppc/unistd.h */
|
||||
__NR_write = 4
|
||||
__NR_exit = 1
|
||||
|
||||
msg_SELinux:
|
||||
call L71
|
||||
L70:
|
||||
.asciz "SELinux denied execmem.\n"
|
||||
.p2align 2 # (1<<2)
|
||||
L71:
|
||||
li a2,L71 - L70 # length
|
||||
mflr a1 # message text
|
||||
li a0,2 # fd stderr
|
||||
li 0,__NR_write; sc
|
||||
die:
|
||||
li a0,127
|
||||
li 0,__NR_exit; sc
|
||||
|
||||
/* Decompress the rest of this loader, and jump to it. */
|
||||
unfold:
|
||||
mflr r30 # &{ b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
|
||||
|
||||
li a5,0 # off_t
|
||||
li a4,0 # fd; ignored, but must be in range?
|
||||
li a4,-1 # fd; cater to *BSD for MAP_ANON
|
||||
lwz a0,sz_cpr(r30)
|
||||
li a3,MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
|
||||
li a2,PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
li a1,PAGE_SIZE
|
||||
add a0,a0,r30
|
||||
li 0,SYS_mmap
|
||||
li 0,__NR_mmap
|
||||
addi a0,a0,sz_b_info+PAGE_SIZE-1
|
||||
rlwinm a0,a0,0,0,31-PAGE_SHIFT # next page boundary after fold
|
||||
sc
|
||||
bns+ 0f; trap # Branch if NoSummary[Overflow] (no failure)
|
||||
sc; bso- msg_SELinux # Branch if SummaryOverflow (failure)
|
||||
0:
|
||||
mtctr r31
|
||||
lbz meth,b_method(r30)
|
||||
|
||||
+22
-13
@@ -1,4 +1,4 @@
|
||||
/* l_lx_elfppc32.h -- created from l_lx_elfppc32.bin, 460 (0x1cc) bytes
|
||||
/* l_lx_elfppc32.h -- created from l_lx_elfppc32.bin, 600 (0x258) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,12 +27,12 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELFPPC32_LOADER_SIZE 460
|
||||
#define LINUX_ELFPPC32_LOADER_ADLER32 0xd58495f3
|
||||
#define LINUX_ELFPPC32_LOADER_CRC32 0x5b115466
|
||||
#define LINUX_ELFPPC32_LOADER_SIZE 600
|
||||
#define LINUX_ELFPPC32_LOADER_ADLER32 0x4d08bce9
|
||||
#define LINUX_ELFPPC32_LOADER_CRC32 0x15fa8f8e
|
||||
|
||||
unsigned char linux_elfppc32_loader[460] = {
|
||||
72, 0, 1,189,124, 0, 41,236,144,166, 0, 0,124,132, 26, 20, /* 0x 0 */
|
||||
unsigned char linux_elfppc32_loader[600] = {
|
||||
72, 0, 2, 73,124, 0, 41,236,144,166, 0, 0,124,132, 26, 20, /* 0x 0 */
|
||||
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 10 */
|
||||
57, 64,255,255,125,168, 2,166, 72, 0, 1, 12, 57, 32, 0, 1, /* 0x 20 */
|
||||
125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, /* 0x 30 */
|
||||
@@ -54,11 +54,20 @@ unsigned char linux_elfppc32_loader[460] = {
|
||||
66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, /* 0x 130 */
|
||||
75,255,255, 16,128, 6, 0, 0,125,168, 3,166, 56,165, 0, 1, /* 0x 140 */
|
||||
56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80,144,166, 0, 0, /* 0x 150 */
|
||||
78,128, 0, 32,127,200, 2,166, 57, 0, 0, 0, 56,224, 0, 0, /* 0x 160 */
|
||||
128,126, 0, 4, 56,192, 0, 50, 56,160, 0, 7, 56,128, 16, 0, /* 0x 170 */
|
||||
124, 99,242, 20, 56, 0, 0, 90, 56, 99, 16, 11, 84, 99, 0, 38, /* 0x 180 */
|
||||
68, 0, 0, 2, 64,163, 0, 8,127,224, 0, 8,127,233, 3,166, /* 0x 190 */
|
||||
136,254, 0, 8, 56,193, 0,124,124,101, 27,120,124,104, 3,166, /* 0x 1a0 */
|
||||
128,158, 0, 4, 56,126, 0, 12, 78,128, 4, 32,148, 33,255,128, /* 0x 1b0 */
|
||||
188, 65, 0, 4,127,232, 2,166, 75,255,255,157 /* 0x 1c0 */
|
||||
78,128, 0, 32, 10, 36, 73,100, 58, 32, 85, 80, 88, 32, 40, 67, /* 0x 160 */
|
||||
41, 32, 49, 57, 57, 54, 45, 50, 48, 48, 54, 32,116,104,101, 32, /* 0x 170 */
|
||||
85, 80, 88, 32, 84,101, 97,109, 46, 32, 65,108,108, 32, 82,105, /* 0x 180 */
|
||||
103,104,116,115, 32, 82,101,115,101,114,118,101,100, 46, 32,104, /* 0x 190 */
|
||||
116,116,112, 58, 47, 47,117,112,120, 46,115,102, 46,110,101,116, /* 0x 1a0 */
|
||||
32, 36, 10, 0, 72, 0, 0, 33, 83, 69, 76,105,110,117,120, 32, /* 0x 1b0 */
|
||||
100,101,110,105,101,100, 32,101,120,101, 99,109,101,109, 46, 10, /* 0x 1c0 */
|
||||
0, 0, 0, 0, 56,160, 0, 28,124,136, 2,166, 56, 96, 0, 2, /* 0x 1d0 */
|
||||
56, 0, 0, 4, 68, 0, 0, 2, 56, 96, 0,127, 56, 0, 0, 1, /* 0x 1e0 */
|
||||
68, 0, 0, 2,127,200, 2,166, 57, 0, 0, 0, 56,224,255,255, /* 0x 1f0 */
|
||||
128,126, 0, 4, 56,192, 0, 50, 56,160, 0, 7, 56,128, 16, 0, /* 0x 200 */
|
||||
124, 99,242, 20, 56, 0, 0, 90, 56, 99, 16, 11, 84, 99, 0, 38, /* 0x 210 */
|
||||
68, 0, 0, 2, 65,163,255,144,127,233, 3,166,136,254, 0, 8, /* 0x 220 */
|
||||
56,193, 0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, /* 0x 230 */
|
||||
56,126, 0, 12, 78,128, 4, 32,148, 33,255,128,188, 65, 0, 4, /* 0x 240 */
|
||||
127,232, 2,166, 75,255,255,161 /* 0x 250 */
|
||||
};
|
||||
|
||||
+5
-18
@@ -217,21 +217,19 @@ typedef int f_expand(
|
||||
**************************************************************************/
|
||||
|
||||
void upx_main(
|
||||
f_unfilter *const f_unf,
|
||||
unsigned cprLen,
|
||||
struct Extent xi,
|
||||
f_expand *const f_decompress,
|
||||
int junk2,
|
||||
char /*const*/ *cprSrc,
|
||||
f_unfilter *const f_unf,
|
||||
char *envp[],
|
||||
char *argv[],
|
||||
int argc
|
||||
) __asm__("upx_main");
|
||||
void upx_main(
|
||||
f_unfilter *const f_unf,
|
||||
unsigned cprLen,
|
||||
struct Extent xi,
|
||||
f_expand *const f_decompress,
|
||||
int junk,
|
||||
char /*const*/ *cprSrc,
|
||||
f_unfilter *const f_unf,
|
||||
char *envp[],
|
||||
char *argv[],
|
||||
int argc
|
||||
@@ -244,10 +242,6 @@ void upx_main(
|
||||
unsigned char *buf;
|
||||
|
||||
char *tmpname;
|
||||
|
||||
struct Extent xi = { cprLen, cprSrc };
|
||||
|
||||
char *next_unmap = (char *)(PAGE_MASK & (unsigned)xi.buf);
|
||||
struct p_info header;
|
||||
|
||||
// temporary file name
|
||||
@@ -380,7 +374,6 @@ void upx_main(
|
||||
for (;;)
|
||||
{
|
||||
struct b_info h;
|
||||
int i;
|
||||
|
||||
// Read and check block sizes.
|
||||
{
|
||||
@@ -412,7 +405,7 @@ void upx_main(
|
||||
|
||||
if (h.sz_cpr < h.sz_unc) { // Decompress block.
|
||||
nrv_uint out_len;
|
||||
i = (*f_decompress)((unsigned char *)xi.buf, h.sz_cpr, buf, &out_len, h.b_method);
|
||||
int i = (*f_decompress)((unsigned char *)xi.buf, h.sz_cpr, buf, &out_len, h.b_method);
|
||||
if (i != 0 || out_len != (nrv_uint)h.sz_unc)
|
||||
goto error;
|
||||
// Right now, unfilter is combined with decompression.
|
||||
@@ -457,14 +450,8 @@ void upx_main(
|
||||
for (;;)
|
||||
(void) exit(127);
|
||||
}
|
||||
|
||||
// We will never touch these pages again.
|
||||
i = (PAGE_MASK & (unsigned)xi.buf) - (unsigned)next_unmap;
|
||||
munmap(next_unmap, i);
|
||||
next_unmap += i;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// ----- Step 5: release resources -----
|
||||
//
|
||||
|
||||
@@ -33,6 +33,11 @@ _start: .globl _start
|
||||
call main # must be exactly 1 instruction; link_register= &decompress
|
||||
#include "ppc_d_nrv2e.S"
|
||||
|
||||
/* Temporary until we get the buildLoader stuff working ... */
|
||||
.ascii "\n$Id: UPX (C) 1996-2006 the UPX Team. "
|
||||
.asciz "All Rights Reserved. http://upx.sf.net $\n"
|
||||
.p2align 2 # (1<<2)
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
|
||||
+16
-11
@@ -1,4 +1,4 @@
|
||||
/* l_mac_ppc32.h -- created from l_mac_ppc32.bin, 428 (0x1ac) bytes
|
||||
/* l_mac_ppc32.h -- created from l_mac_ppc32.bin, 508 (0x1fc) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,12 +27,12 @@
|
||||
*/
|
||||
|
||||
|
||||
#define L_MAC_PPC32_LOADER_SIZE 428
|
||||
#define L_MAC_PPC32_LOADER_ADLER32 0x0c8e93a4
|
||||
#define L_MAC_PPC32_LOADER_CRC32 0xa1fb1065
|
||||
#define L_MAC_PPC32_LOADER_SIZE 508
|
||||
#define L_MAC_PPC32_LOADER_ADLER32 0x2cecab12
|
||||
#define L_MAC_PPC32_LOADER_CRC32 0x8bce10ce
|
||||
|
||||
unsigned char l_mac_ppc32_loader[428] = {
|
||||
72, 0, 1,161,124, 0, 41,236,144,166, 0, 0,124,132, 26, 20, /* 0x 0 */
|
||||
unsigned char l_mac_ppc32_loader[508] = {
|
||||
72, 0, 1,241,124, 0, 41,236,144,166, 0, 0,124,132, 26, 20, /* 0x 0 */
|
||||
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 10 */
|
||||
57, 64,255,255,125,168, 2,166, 72, 0, 1, 12, 57, 32, 0, 1, /* 0x 20 */
|
||||
125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, /* 0x 30 */
|
||||
@@ -54,9 +54,14 @@ unsigned char l_mac_ppc32_loader[428] = {
|
||||
66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, /* 0x 130 */
|
||||
75,255,255, 16,128, 6, 0, 0,125,168, 3,166, 56,165, 0, 1, /* 0x 140 */
|
||||
56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80,144,166, 0, 0, /* 0x 150 */
|
||||
78,128, 0, 32,124, 72, 2,166,128,130, 0, 8,124,137, 3,166, /* 0x 160 */
|
||||
128,194, 0, 4,124,164, 18, 20, 56,165, 0, 16,124,102, 18, 20, /* 0x 170 */
|
||||
56, 99, 0,192,140, 5,255,255,156, 3,255,255, 66, 0,255,248, /* 0x 180 */
|
||||
127,233, 3,166, 56,162, 0,128, 56,193,255,252, 78,128, 4, 32, /* 0x 190 */
|
||||
127,232, 2,166, 75,255,255,193, 72, 0, 0,128 /* 0x 1a0 */
|
||||
78,128, 0, 32, 10, 36, 73,100, 58, 32, 85, 80, 88, 32, 40, 67, /* 0x 160 */
|
||||
41, 32, 49, 57, 57, 54, 45, 50, 48, 48, 54, 32,116,104,101, 32, /* 0x 170 */
|
||||
85, 80, 88, 32, 84,101, 97,109, 46, 32, 65,108,108, 32, 82,105, /* 0x 180 */
|
||||
103,104,116,115, 32, 82,101,115,101,114,118,101,100, 46, 32,104, /* 0x 190 */
|
||||
116,116,112, 58, 47, 47,117,112,120, 46,115,102, 46,110,101,116, /* 0x 1a0 */
|
||||
32, 36, 10, 0,124, 72, 2,166,128,130, 0, 8,124,137, 3,166, /* 0x 1b0 */
|
||||
128,194, 0, 4,124,164, 18, 20, 56,165, 0, 16,124,102, 18, 20, /* 0x 1c0 */
|
||||
56, 99, 0,192,140, 5,255,255,156, 3,255,255, 66, 0,255,248, /* 0x 1d0 */
|
||||
127,233, 3,166, 56,162, 0,128, 56,193,255,252, 78,128, 4, 32, /* 0x 1e0 */
|
||||
127,232, 2,166, 75,255,255,193, 72, 0, 0,128 /* 0x 1f0 */
|
||||
};
|
||||
|
||||
+46
-57
@@ -188,13 +188,13 @@ type name(void) \
|
||||
{ \
|
||||
long __res; \
|
||||
if (Z1(__NR_##name)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name)); \
|
||||
: [sysN] "g" (__NR_##name)); \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "a" (__NR_##name)); \
|
||||
: [sysN] "a" (__NR_##name)); \
|
||||
} \
|
||||
return (type) __res; \
|
||||
}
|
||||
@@ -202,26 +202,26 @@ type name(void) \
|
||||
#define _syscall1(type,name,type1,arg1) \
|
||||
type name(type1 arg1) \
|
||||
{ \
|
||||
long __res; \
|
||||
long __res, junk; \
|
||||
if (Z1(__NR_##name)) { \
|
||||
if (Z0(arg1)) { \
|
||||
__asm__ __volatile__ ("xorl %%ebx,%%ebx; push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("xorl %%ebx,%%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name) \
|
||||
: [sysN] "g" (__NR_##name) \
|
||||
: "ebx"); \
|
||||
} else if (Z1(arg1)) { \
|
||||
__asm__ __volatile__ ("push %2; popl %%ebx; push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("push %[a1]; popl %%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"g" ((long)(arg1)) \
|
||||
: [sysN] "g" (__NR_##name), [a1] "g" ((long)(arg1)) \
|
||||
: "ebx"); \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"b" ((long)(arg1))); \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res), "=b" (junk) \
|
||||
: [sysN] "g" (__NR_##name),"b" ((long)(arg1))); \
|
||||
} \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "=a" (__res), "=b" (junk) \
|
||||
: "a" (__NR_##name),"b" ((long)(arg1))); \
|
||||
} \
|
||||
return (type) __res; \
|
||||
@@ -235,8 +235,8 @@ void __attribute__((__noreturn__)) name(type1 arg1) \
|
||||
__asm__ __volatile__ ("xorl %%ebx,%%ebx; push %0; popl %%eax; int $0x80" \
|
||||
: : "g" (__NR_##name) ); \
|
||||
} else if (Z1(arg1)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %%ebx; push %0; popl %%eax; int $0x80" \
|
||||
: : "g" (__NR_##name),"g" ((long)(arg1)) ); \
|
||||
__asm__ __volatile__ ("push %[a1]; popl %%ebx; push %[sysN]; popl %%eax; int $0x80" \
|
||||
: : [sysN] "g" (__NR_##name), [a1] "g" ((long)(arg1)) ); \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("push %0; popl %%eax; int $0x80" \
|
||||
: : "g" (__NR_##name),"b" ((long)(arg1))); \
|
||||
@@ -248,71 +248,60 @@ void __attribute__((__noreturn__)) name(type1 arg1) \
|
||||
for(;;) ; \
|
||||
}
|
||||
|
||||
// special for mmap; somehow Z0(arg1) and Z1(arg1) do not work
|
||||
#define _syscall1m(type,name,type1,arg1) \
|
||||
type name(type1 arg1) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ __volatile__ ("push %1; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"b" ((long)(arg1))); \
|
||||
return (type) __res; \
|
||||
}
|
||||
|
||||
#define _syscall2(type,name,type1,arg1,type2,arg2) \
|
||||
type name(type1 arg1,type2 arg2) \
|
||||
{ \
|
||||
long __res; \
|
||||
long __res, junkb, junkc; \
|
||||
if (Z1(__NR_##name)) { \
|
||||
if (Z0(arg1) && Z0(arg2)) { \
|
||||
__asm__ __volatile__ ("xorl %%ecx,%%ecx; xorl %%ebx,%%ebx; push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("xorl %%ecx,%%ecx; xorl %%ebx,%%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name) \
|
||||
: [sysN] "g" (__NR_##name) \
|
||||
: "ebx", "ecx"); \
|
||||
} else if (Z0(arg1) && Z1(arg2)) { \
|
||||
__asm__ __volatile__ ("push %2; popl %%ecx; xorl %%ebx,%%ebx; push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("push %[a2]; popl %%ecx; xorl %%ebx,%%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"g" ((long)(arg2)) \
|
||||
: [sysN] "g" (__NR_##name), [a2] "g" ((long)(arg2)) \
|
||||
: "ebx", "ecx"); \
|
||||
} else if (Z1(arg1) && Z0(arg2)) { \
|
||||
__asm__ __volatile__ ("xorl %%ecx,%%ecx; push %2; popl %%ebx; push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("xorl %%ecx,%%ecx; push %[a1]; popl %%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"g" ((long)(arg1)) \
|
||||
: [sysN] "g" (__NR_##name), [a1] "g" ((long)(arg1)) \
|
||||
: "ebx", "ecx"); \
|
||||
} else if (Z1(arg1) && Z1(arg2)) { \
|
||||
__asm__ __volatile__ ("push %3; popl %%ecx; push %2; popl %%ebx; push %1; popl %0; int $0x80" \
|
||||
__asm__ __volatile__ ("push %[a2]; popl %%ecx; push %[a1]; popl %%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"g" ((long)(arg1)),"g" ((long)(arg2)) \
|
||||
: [sysN] "g" (__NR_##name), [a1] "g" ((long)(arg1)), [a2] "g" ((long)(arg2)) \
|
||||
: "ebx", "ecx"); \
|
||||
} else if (Z0(arg1)) { \
|
||||
__asm__ __volatile__ ("xorl %%ebx,%%ebx; push %1; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"c" ((long)(arg2)) \
|
||||
__asm__ __volatile__ ("xorl %%ebx,%%ebx; push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res), "=c" (junkc) \
|
||||
: [sysN] "g" (__NR_##name),"c" ((long)(arg2)) \
|
||||
: "ebx"); \
|
||||
} else if (Z0(arg2)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; xorl %%ecx,%%ecx; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"b" ((long)(arg1)) \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; xorl %%ecx,%%ecx; int $0x80" \
|
||||
: "=a" (__res), "=b" (junkb) \
|
||||
: [sysN] "g" (__NR_##name),"b" ((long)(arg1)) \
|
||||
: "ecx"); \
|
||||
} else if (Z1(arg1)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; push %2; popl %%ebx; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"g" ((long)(arg1)),"c" ((long)(arg2)) \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; push %[a1]; popl %%ebx; int $0x80" \
|
||||
: "=a" (__res), "=c" (junkc) \
|
||||
: [sysN] "g" (__NR_##name), [a1] "g" ((long)(arg1)),"c" ((long)(arg2)) \
|
||||
: "ebx"); \
|
||||
} else if (Z1(arg2)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; push %3; popl %%ecx; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"b" ((long)(arg1)),"g" ((long)(arg2)) \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; push %[a2]; popl %%ecx; int $0x80" \
|
||||
: "=a" (__res), "=b" (junkb) \
|
||||
: [sysN] "g" (__NR_##name),"b" ((long)(arg1)), [a2] "g" ((long)(arg2)) \
|
||||
: "ecx"); \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res), "=b" (junkb), "=c" (junkc) \
|
||||
: [sysN] "g" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
|
||||
} \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "a" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
|
||||
: "=a" (__res), "=b" (junkb), "=c" (junkc) \
|
||||
: [sysN] "a" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
|
||||
} \
|
||||
return (type) __res; \
|
||||
}
|
||||
@@ -320,16 +309,16 @@ type name(type1 arg1,type2 arg2) \
|
||||
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
|
||||
type name(type1 arg1,type2 arg2,type3 arg3) \
|
||||
{ \
|
||||
long __res; \
|
||||
long __res, junkb, junkc, junkd; \
|
||||
if (Z1(__NR_##name)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %0; int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "g" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
__asm__ __volatile__ ("push %[sysN]; popl %0; int $0x80" \
|
||||
: "=a" (__res), "=b" (junkb), "=c" (junkc), "=d" (junkd) \
|
||||
: [sysN] "g" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
"d" ((long)(arg3))); \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "a" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
: "=a" (__res), "=b" (junkb), "=c" (junkc), "=d" (junkd) \
|
||||
: [sysN] "a" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
"d" ((long)(arg3))); \
|
||||
} \
|
||||
return (type) __res; \
|
||||
|
||||
@@ -197,7 +197,7 @@ auxv_up(Elf32_auxv_t *av, unsigned type, unsigned const value)
|
||||
// and mmap that much, to be sure that a kernel using exec-shield-randomize
|
||||
// won't place the first piece in a way that leaves no room for the rest.
|
||||
static unsigned long // returns relocation constant
|
||||
xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum, int fdi,
|
||||
xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum,
|
||||
char **const p_brk
|
||||
)
|
||||
{
|
||||
@@ -217,9 +217,9 @@ xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum, int fdi,
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
|
||||
addr = mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC, mflags, fdi, 0);
|
||||
addr = mmap((void *)lo, hi, PROT_NONE, mflags, -1, 0);
|
||||
*p_brk = hi + addr; // the logical value of brk(0)
|
||||
mprotect(szlo + addr, hi - szlo, PROT_NONE); // but keep the frames!
|
||||
//mprotect(szlo + addr, hi - szlo, PROT_NONE); // but keep the frames!
|
||||
return (unsigned long)addr - lo;
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ do_xmap(
|
||||
(char const *)ehdr);
|
||||
char *v_brk;
|
||||
unsigned long const reloc = xfind_pages(
|
||||
((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, fdi, &v_brk);
|
||||
((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, &v_brk);
|
||||
int j;
|
||||
for (j=0; j < ehdr->e_phnum; ++phdr, ++j)
|
||||
if (xi && PT_PHDR==phdr->p_type) {
|
||||
@@ -257,15 +257,16 @@ do_xmap(
|
||||
|
||||
if (addr != mmap(addr, mlen, prot | (xi ? PROT_WRITE : 0),
|
||||
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
(xi ? -1 : fdi), phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
}
|
||||
if (xi) {
|
||||
unpackExtent(xi, &xo, f_decompress, f_unf);
|
||||
}
|
||||
if (PROT_WRITE & prot) {
|
||||
bzero(addr, frag); // fragment at lo end
|
||||
}
|
||||
// Linux does not fixup the low end, so neither do we.
|
||||
//if (PROT_WRITE & prot) {
|
||||
// bzero(addr, frag); // fragment at lo end
|
||||
//}
|
||||
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
|
||||
if (PROT_WRITE & prot) {
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
@@ -279,7 +280,7 @@ ERR_LAB
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != mmap(addr, haddr - addr, prot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
armpe_tester
|
||||
@@ -0,0 +1 @@
|
||||
armpe_tester
|
||||
@@ -0,0 +1,15 @@
|
||||
# Makefile for armpe_tester
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
all: armpe_tester
|
||||
|
||||
armpe_tester: armpe_tester.c
|
||||
arm-9tdmi-linux-gnu-gcc -Wl,--section-start,.interp=0x1000 -g -Wall -W -o $@ $<
|
||||
|
||||
mostlyclean clean distclean maintainer-clean:
|
||||
rm -f *.d *.o *.obj
|
||||
rm -f armpe_tester
|
||||
|
||||
.PHONY: all mostlyclean clean distclean maintainer-clean
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
/* armpe_tester.c -- ARM/PE loader/tester for arm linux
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2006 Laszlo Molnar
|
||||
Copyright (C) 2000-2006 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
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
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
// arm-9tdmi-linux-gnu-gcc -Wl,--section-start,.interp=0x1000 armpe_tester.c
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef i386
|
||||
# define UPX_MMAP_ADDRESS 0x20000000
|
||||
#else
|
||||
# define UPX_MMAP_ADDRESS 0x10000
|
||||
#endif
|
||||
|
||||
typedef unsigned short LE16;
|
||||
typedef unsigned long LE32;
|
||||
#define __attribute_packed
|
||||
|
||||
struct ddirs_t
|
||||
{
|
||||
LE32 vaddr;
|
||||
LE32 size;
|
||||
}
|
||||
__attribute_packed;
|
||||
|
||||
struct pe_header_t
|
||||
{
|
||||
// 0x0
|
||||
char _[4];
|
||||
LE16 cpu;
|
||||
LE16 objects;
|
||||
char __[12];
|
||||
LE16 opthdrsize;
|
||||
LE16 flags;
|
||||
// optional header
|
||||
char ___[4];
|
||||
LE32 codesize;
|
||||
// 0x20
|
||||
LE32 datasize;
|
||||
LE32 bsssize;
|
||||
LE32 entry;
|
||||
LE32 codebase;
|
||||
// 0x30
|
||||
LE32 database;
|
||||
// nt specific fields
|
||||
LE32 imagebase;
|
||||
LE32 objectalign;
|
||||
LE32 filealign;
|
||||
// 0x40
|
||||
char ____[16];
|
||||
// 0x50
|
||||
LE32 imagesize;
|
||||
LE32 headersize;
|
||||
LE32 chksum;
|
||||
LE16 subsystem;
|
||||
LE16 dllflags;
|
||||
// 0x60
|
||||
char _____[20];
|
||||
// 0x74
|
||||
LE32 ddirsentries;
|
||||
|
||||
struct ddirs_t ddirs[16];
|
||||
}
|
||||
__attribute_packed;
|
||||
|
||||
struct pe_section_t
|
||||
{
|
||||
char name[8];
|
||||
LE32 vsize;
|
||||
LE32 vaddr;
|
||||
LE32 size;
|
||||
LE32 rawdataptr;
|
||||
char _[12];
|
||||
LE32 flags;
|
||||
}
|
||||
__attribute_packed;
|
||||
|
||||
|
||||
struct exe_header_t
|
||||
{
|
||||
LE16 mz;
|
||||
LE16 m512;
|
||||
LE16 p512;
|
||||
char _[18];
|
||||
LE16 relocoffs;
|
||||
char __[34];
|
||||
LE32 nexepos;
|
||||
}
|
||||
__attribute_packed;
|
||||
|
||||
enum {
|
||||
PEDIR_EXPORT = 0,
|
||||
PEDIR_IMPORT = 1,
|
||||
PEDIR_RESOURCE = 2,
|
||||
PEDIR_EXCEPTION = 3,
|
||||
PEDIR_SEC = 4,
|
||||
PEDIR_RELOC = 5,
|
||||
PEDIR_DEBUG = 6,
|
||||
PEDIR_COPYRIGHT = 7,
|
||||
PEDIR_GLOBALPTR = 8,
|
||||
PEDIR_TLS = 9,
|
||||
PEDIR_LOADCONF = 10,
|
||||
PEDIR_BOUNDIM = 11,
|
||||
PEDIR_IAT = 12,
|
||||
PEDIR_DELAYIMP = 13,
|
||||
PEDIR_COMRT = 14
|
||||
};
|
||||
|
||||
#define get_le32(p) (*(unsigned *) (p))
|
||||
#define set_le32(p, v) (*(unsigned *) (p) = (v))
|
||||
#define get_le16(p) (*(unsigned short *) (p))
|
||||
|
||||
static struct pe_header_t ih;
|
||||
static struct pe_section_t isections[3];
|
||||
static FILE *f;
|
||||
static void *vaddr;
|
||||
|
||||
static int load(const char *file)
|
||||
{
|
||||
struct exe_header_t h;
|
||||
int ic;
|
||||
unsigned pe_offset = 0;
|
||||
|
||||
if ((f = fopen(file, "rb")) == NULL)
|
||||
return printf("can not open file: %s\n", file);
|
||||
|
||||
for (ic = 0; ic < 20; ic++)
|
||||
{
|
||||
if (fseek(f, pe_offset, SEEK_SET)
|
||||
|| fread(&h, sizeof(h), 1, f) != 1)
|
||||
return printf("read error at %u\n", pe_offset);
|
||||
|
||||
if (h.mz == 'M' + 'Z'*256) // dos exe
|
||||
{
|
||||
if (h.relocoffs >= 0x40) // new format exe
|
||||
pe_offset += h.nexepos;
|
||||
else
|
||||
pe_offset += h.p512 * 512 + h.m512 - h.m512 ? 512 : 0;
|
||||
}
|
||||
else if (get_le32(&h) == 'P' + 'E'*256)
|
||||
break;
|
||||
else
|
||||
return printf("bad header at %u\n", pe_offset);
|
||||
}
|
||||
if (ic == 20)
|
||||
return printf("pe header not found\n");
|
||||
if (fseek(f, pe_offset, SEEK_SET)
|
||||
|| fread(&ih, sizeof(ih), 1, f) != 1)
|
||||
return printf("can not load pe header\n");
|
||||
|
||||
if (ih.cpu != 0x1c0 && ih.cpu != 0x1c2)
|
||||
return printf("unsupported processor type: %x\n", ih.cpu);
|
||||
|
||||
if (ih.objects != 3 || fread(isections, sizeof(isections), 1, f) != 1)
|
||||
return printf("error reading section descriptors\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int read(void)
|
||||
{
|
||||
unsigned ic;
|
||||
vaddr = mmap((void *) UPX_MMAP_ADDRESS, ih.imagesize,
|
||||
PROT_WRITE | PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
|
||||
if (((int) vaddr) == -1)
|
||||
return printf("mmap() failed: %d\n", errno);
|
||||
|
||||
for (ic = 1; ic <= 2; ic++)
|
||||
if (fseek(f, isections[ic].rawdataptr, SEEK_SET)
|
||||
|| fread(vaddr + isections[ic].vaddr,
|
||||
isections[ic].vsize, 1, f) != 1)
|
||||
return printf("error reading section %u\n", ic);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dump(char n)
|
||||
{
|
||||
char buf[100];
|
||||
snprintf(buf, sizeof(buf), "/tmp/a.dump%c", n);
|
||||
FILE *f2 = fopen(buf, "wb");
|
||||
fwrite(vaddr + 0x1000, ih.imagesize - 0x1000, 1, f2);
|
||||
fclose(f2);
|
||||
}
|
||||
|
||||
static int loadlibraryw(unsigned short *name)
|
||||
{
|
||||
return name[0] + name[1] * 0x100 + name[2] * 0x10000;
|
||||
}
|
||||
|
||||
static int getprocaddressa(unsigned h, const char *proc)
|
||||
{
|
||||
unsigned p = (unsigned) proc;
|
||||
if (p < 0x10000)
|
||||
{
|
||||
printf("getprocaddressa called %c%c%c, ordinal %u\n",
|
||||
h, h >> 8, h >> 16, p);
|
||||
return h + p * 0x10000;
|
||||
}
|
||||
printf("getprocaddressa called %c%c%c, name %s\n",
|
||||
h, h >> 8, h >> 16, proc);
|
||||
return h + proc[0] * 0x10000 + proc[1] * 0x1000000;
|
||||
}
|
||||
|
||||
static void cachesync(unsigned v)
|
||||
{
|
||||
printf("cachesync called %u\n", v);
|
||||
}
|
||||
|
||||
static int import(void)
|
||||
{
|
||||
if (ih.ddirs[PEDIR_IMPORT].vaddr == 0)
|
||||
return printf("no imports?\n");
|
||||
void *imports = vaddr + ih.ddirs[PEDIR_IMPORT].vaddr;
|
||||
void *coredll_imports = vaddr + get_le32(imports);
|
||||
set_le32(coredll_imports, (unsigned) loadlibraryw);
|
||||
set_le32(coredll_imports + 4, (unsigned) getprocaddressa);
|
||||
set_le32(coredll_imports + 8, (unsigned) cachesync);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int reloc(void)
|
||||
{
|
||||
if (ih.ddirs[PEDIR_RELOC].vaddr == 0)
|
||||
return 0;
|
||||
void *relocs = vaddr + ih.ddirs[PEDIR_RELOC].vaddr;
|
||||
void *page = vaddr + get_le32(relocs);
|
||||
unsigned size = get_le32(relocs + 4);
|
||||
if (size != ih.ddirs[PEDIR_RELOC].size)
|
||||
return printf("only 1 page can be relocated\n");
|
||||
unsigned num = (size - 8) / 2;
|
||||
while (num--)
|
||||
{
|
||||
unsigned pos = get_le16(relocs + 8 + num * 2);
|
||||
if (pos == 0)
|
||||
continue;
|
||||
if ((pos & 0xF000) != 0x3000)
|
||||
return printf("unknown relocation type: %x\n", pos);
|
||||
|
||||
void *r = page + (pos & 0xFFF);
|
||||
set_le32(r, get_le32(r) - ih.imagebase + (unsigned) vaddr);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void call(void)
|
||||
{
|
||||
#ifndef i386
|
||||
void (*entry)(unsigned, unsigned) = vaddr + ih.entry;
|
||||
entry(0, 1);
|
||||
dump('c');
|
||||
#endif
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (argc != 2)
|
||||
return printf("usage: %s arm_pe_file\n", argv[0]), 1;
|
||||
if (load(argv[1]))
|
||||
return 2;
|
||||
if (read())
|
||||
return 3;
|
||||
dump('0');
|
||||
if (import())
|
||||
return 4;
|
||||
dump('i');
|
||||
if (reloc())
|
||||
return 5;
|
||||
dump('r');
|
||||
|
||||
call();
|
||||
printf("ok.\n");
|
||||
return 0;
|
||||
}
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
#define UPX_VERSION_HEX 0x019600 /* 01.96.00 */
|
||||
#define UPX_VERSION_STRING "1.96"
|
||||
#define UPX_VERSION_STRING4 "1.96"
|
||||
#define UPX_VERSION_DATE "Apr 13th 2006"
|
||||
#define UPX_VERSION_DATE_ISO "2006-04-13"
|
||||
#define UPX_VERSION_HEX 0x020000 /* 02.00.00 */
|
||||
#define UPX_VERSION_STRING "2.00"
|
||||
#define UPX_VERSION_STRING4 "2.00"
|
||||
#define UPX_VERSION_DATE "Apr 27th 2006"
|
||||
#define UPX_VERSION_DATE_ISO "2006-04-27"
|
||||
#define UPX_VERSION_YEAR "2006"
|
||||
|
||||
Reference in New Issue
Block a user