Compare commits
194 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ace2359e7b | |||
| 617e6510a5 | |||
| 26024770b8 | |||
| d556f58e34 | |||
| b6f302dfc0 | |||
| 8e9b5f14af | |||
| 3635c00143 | |||
| abc71baaa6 | |||
| 959aaebede | |||
| d17f8c5049 | |||
| 42a7201a70 | |||
| 1f1744a49a | |||
| fd7dbe5bd9 | |||
| 984549400d | |||
| cf0c49277e | |||
| 16c3f9fa9c | |||
| 2f2539cf34 | |||
| e66823d017 | |||
| 881c32a3df | |||
| ea0a361c35 | |||
| dc60f8bb7b | |||
| 9e92c9ea12 | |||
| a503a54240 | |||
| 265957712a | |||
| c26962bb71 | |||
| a428eddf93 | |||
| dc4f7eb2f9 | |||
| d54ac1ba91 | |||
| a3d46b18ac | |||
| e81dd05666 | |||
| 29394935e3 | |||
| df8acc4ed7 | |||
| 81928d4ab1 | |||
| 3ebf93e03d | |||
| 59e4032f1f | |||
| 8f15777427 | |||
| 748c4bf780 | |||
| befcf6d2b3 | |||
| 48236ecd3c | |||
| f340f84de7 | |||
| 40e19293f9 | |||
| f252f824a4 | |||
| 1d7e5a8130 | |||
| cb2ff92c2f | |||
| ef373ab54f | |||
| 9141a78c29 | |||
| 10a6370738 | |||
| 573009eeb6 | |||
| c3363712d9 | |||
| faa33d89a2 | |||
| f347458c53 | |||
| 530e6d9196 | |||
| b398e18e12 | |||
| 747e8370e0 | |||
| 2c67875781 | |||
| c96e8a8c19 | |||
| 5f203fc082 | |||
| b943c9b471 | |||
| 1a90a1daa8 | |||
| 72dfc743fd | |||
| 465307655b | |||
| 6ce71e6694 | |||
| 7f01b3b92a | |||
| 76950d56b9 | |||
| c11e0d02b3 | |||
| 4c798c1718 | |||
| 450d7e9ad4 | |||
| b8ab79c83e | |||
| 6934bdd533 | |||
| 84dedb73a5 | |||
| 8964aa5221 | |||
| 3481ae236c | |||
| 46adc5f8a4 | |||
| 5296df5899 | |||
| 13dad4be16 | |||
| b5d0c343b4 | |||
| b00b945264 | |||
| 3bda09e105 | |||
| 32d32c4e4a | |||
| 497441b54e | |||
| 9c564fd4c7 | |||
| 0c2263d0e9 | |||
| 3d4d30766d | |||
| 99d84d44fc | |||
| 41ba7077ad | |||
| 8a929a91c3 | |||
| 0604f06841 | |||
| 229924adf9 | |||
| df988b7c69 | |||
| e8106e2e34 | |||
| c21d3e24f8 | |||
| 2d87aa0753 | |||
| b2ad4dc9a0 | |||
| 370f2ea98f | |||
| a05ca565ff | |||
| 52255637f2 | |||
| 0fcaa3a2f5 | |||
| 0e2fa6eb9d | |||
| 1aac462c83 | |||
| 2a0edfd8f7 | |||
| 1f59a9f846 | |||
| 80c20a90ea | |||
| 56a35649fe | |||
| f07cea0b79 | |||
| 4c1b08a281 | |||
| 117f9eddcd | |||
| 7bbbfce482 | |||
| f37a7811f9 | |||
| 9173c10239 | |||
| 318b31550d | |||
| c18ebc63a6 | |||
| d704694272 | |||
| 1cfec3bdf7 | |||
| fe6ea6bc10 | |||
| d29c8df45e | |||
| 71f996af95 | |||
| d9722ad6b3 | |||
| 398fd8028c | |||
| 1345a3cfd3 | |||
| 7eb0b195b8 | |||
| 009caee82d | |||
| 3bdc805a22 | |||
| ac457792b4 | |||
| 1377b54b9e | |||
| 66418ffc8c | |||
| b4c4b1fb70 | |||
| ffe4a4b047 | |||
| 753ce45310 | |||
| fece0d73e7 | |||
| edce076e68 | |||
| 675d0a009a | |||
| 5d41b5a4db | |||
| fe53b135eb | |||
| 5b1c154ee2 | |||
| 816d882611 | |||
| 12bcb09051 | |||
| c59c69a85f | |||
| bdd0daaf6f | |||
| cfad7c8356 | |||
| b2b8a128d0 | |||
| 1cfad80ca2 | |||
| a5a80e41b8 | |||
| 152f8e92bf | |||
| 0323560b49 | |||
| d3bc84a2f7 | |||
| 8a82c259bd | |||
| 46009c7658 | |||
| 6f760308bd | |||
| c346f8f17d | |||
| af1d059fff | |||
| 5562b21a20 | |||
| 8f68f31877 | |||
| ce7e94030c | |||
| ccf5a1b972 | |||
| 0d5ae77efc | |||
| 1695096d18 | |||
| 6db0b7cf18 | |||
| 575b43b0d4 | |||
| 7b39b05894 | |||
| 8bea9e0a5e | |||
| 2255b32e45 | |||
| b62573ae8f | |||
| 44ed84f5cf | |||
| d008c834be | |||
| 2d3a914aee | |||
| 7324f4c3d1 | |||
| 50c8860a50 | |||
| 6456de7188 | |||
| 23c629f2aa | |||
| 2bf154f74f | |||
| b598ad1bc0 | |||
| ace24ad68e | |||
| 750c1a0f27 | |||
| 52d89bd66b | |||
| 8cfb9d35e9 | |||
| 2f529158a0 | |||
| 6e68ab6d9e | |||
| 7a3c55af35 | |||
| fb39d6304a | |||
| 4cb57d9059 | |||
| 42d69bd0e5 | |||
| f27b399f81 | |||
| a545a3938f | |||
| d1e352c9ee | |||
| 99be1e798b | |||
| 2132a28a17 | |||
| 8b1cc28783 | |||
| 78364ac830 | |||
| 6e5f5732b5 | |||
| 87844254d1 | |||
| 08ef9f69fb | |||
| 5fbd1b78e7 | |||
| 39f5eb753f | |||
| f4cbe3f300 |
@@ -2,11 +2,15 @@ syntax: regexp
|
|||||||
|
|
||||||
^\.bzr
|
^\.bzr
|
||||||
^ChangeLog
|
^ChangeLog
|
||||||
|
^Makevars.global
|
||||||
^build
|
^build
|
||||||
^maint
|
^maint
|
||||||
|
|
||||||
syntax: glob
|
syntax: glob
|
||||||
|
|
||||||
|
.depend
|
||||||
|
Makevars.local
|
||||||
|
|
||||||
*.a
|
*.a
|
||||||
*.dll
|
*.dll
|
||||||
*.lib
|
*.lib
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
2ee65b77f9117651e2e5517b2edede23698d73ca RELEASE_196
|
2ee65b77f9117651e2e5517b2edede23698d73ca RELEASE_196
|
||||||
396983c065fc743cb5b9703e266ca87eeff8a6ee RELEASE_291
|
396983c065fc743cb5b9703e266ca87eeff8a6ee RELEASE_291
|
||||||
70402aeee6e0e4fc2889658ed8cee44461c0b0a8 RELEASE_200
|
70402aeee6e0e4fc2889658ed8cee44461c0b0a8 RELEASE_200
|
||||||
|
a1c61174f54aac714f59ac20fcba839d71e64c5c RELEASE_292
|
||||||
a916a2fe22de45167d25abcb40008315f415221c RELEASE_201
|
a916a2fe22de45167d25abcb40008315f415221c RELEASE_201
|
||||||
a935d577fc7dd9c2c87761c9c702805da6ce1e51 RELEASE_193
|
a935d577fc7dd9c2c87761c9c702805da6ce1e51 RELEASE_193
|
||||||
b0353253b0b3d062eb5adb50d4b665a96620da45 RELEASE_195
|
b0353253b0b3d062eb5adb50d4b665a96620da45 RELEASE_195
|
||||||
@@ -12,3 +13,5 @@ c2e0cd4d621b047f254f2def42132a03683ff52c RELEASE_192
|
|||||||
d276aa09033c24d0981bc3f4fee5628aecc988ad RELEASE_290
|
d276aa09033c24d0981bc3f4fee5628aecc988ad RELEASE_290
|
||||||
eb1ce56dce7dd1835964362470610925963b9043 RELEASE_110
|
eb1ce56dce7dd1835964362470610925963b9043 RELEASE_110
|
||||||
ed96891ef795bceec6b7ff3ca1ca7764431bfb39 RELEASE_191
|
ed96891ef795bceec6b7ff3ca1ca7764431bfb39 RELEASE_191
|
||||||
|
ef9c7f2c9658d73a9b5ab2ed291483d2bbcd8bc7 RELEASE_300
|
||||||
|
efa52753e366300c0e0ebe20631adcb24ed3c15b RELEASE_293
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
#
|
#
|
||||||
# UPX toplevel Makefile - needs GNU make 3.80 or better
|
# UPX toplevel Makefile - needs GNU make 3.81 or better
|
||||||
#
|
#
|
||||||
|
|
||||||
MAKEFLAGS += -rR
|
MAKEFLAGS += -rR
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
export SHELL = /bin/sh
|
export SHELL = /bin/sh
|
||||||
|
|
||||||
|
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.77 3.78 3.78.1 3.79 3.79.1 3.80),)
|
||||||
|
$(error GNU make 3.81 or better is required)
|
||||||
|
endif
|
||||||
|
|
||||||
srcdir = .
|
srcdir = .
|
||||||
top_srcdir = .
|
top_srcdir = .
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
|
|
||||||
|
|
||||||
# info: src/stub needs GNU make 3.81 and special build tools
|
# info: src/stub needs special build tools
|
||||||
BUILD_STUB = 0
|
BUILD_STUB = 0
|
||||||
ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),)
|
ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),)
|
||||||
BUILD_STUB = 1
|
BUILD_STUB = 1
|
||||||
@@ -18,9 +23,6 @@ endif
|
|||||||
ifneq ($(wildcard $(HOME)/bin/bin-upx/.),)
|
ifneq ($(wildcard $(HOME)/bin/bin-upx/.),)
|
||||||
BUILD_STUB = 1
|
BUILD_STUB = 1
|
||||||
endif
|
endif
|
||||||
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.79 3.79.1 3.80),)
|
|
||||||
BUILD_STUB = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -33,15 +35,14 @@ endif
|
|||||||
$(MAKE) -C src $@
|
$(MAKE) -C src $@
|
||||||
$(MAKE) -C doc $@
|
$(MAKE) -C doc $@
|
||||||
|
|
||||||
# automatically generate ChangeLog from Mercurial repo
|
|
||||||
ChangeLog:
|
|
||||||
ifneq ($(wildcard .hg/data/.),)
|
ifneq ($(wildcard .hg/data/.),)
|
||||||
|
# automatically generate ChangeLog from local Mercurial repo
|
||||||
|
ChangeLog:
|
||||||
hg log --style=changelog > $@
|
hg log --style=changelog > $@
|
||||||
else
|
.PHONY: ChangeLog
|
||||||
@echo "UPX info: no hg repo found"
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
.PHONY: default all mostlyclean clean distclean maintainer-clean
|
.PHONY: default all mostlyclean clean distclean maintainer-clean
|
||||||
.PHONY: ChangeLog
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,28 @@
|
|||||||
User visible changes for UPX
|
User visible changes for UPX
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
|
Changes in 3.01 (31 Jul 2007):
|
||||||
|
* new options --no-mode, --no-owner and --no-time to disable preservation
|
||||||
|
of mode (file permissions), file ownership and timestamps.
|
||||||
|
* dos/exe: fixed an incorrect error message caused by a bug in
|
||||||
|
relocation handling
|
||||||
|
* new format linux/mipsel supports ELF on [32-bit] R3000
|
||||||
|
* fix argv[0] on PowerPC with --lzma
|
||||||
|
* bug fixes
|
||||||
|
|
||||||
|
Changes in 3.00 (27 Apr 2007):
|
||||||
|
* watcom/le & tmt/adam: fixed a problem when using certain filters
|
||||||
|
|
||||||
|
Changes in 2.93 beta (08 Mar 2007):
|
||||||
|
* new formats Mach/i386 and Mach/fat support Mac OS X i686 and
|
||||||
|
Universal binaries [i686 and PowerPC only]
|
||||||
|
* dos/exe: LZMA is now also supported for 16-bit dos/exe. Please note that
|
||||||
|
you have to explicitly use '--lzma' even for '--ultra-brute' here
|
||||||
|
because runtime decompression is about 30 times slower than NRV -
|
||||||
|
which is really noticeable on old machines.
|
||||||
|
* dos/exe: fixed a rarely occuring bug in relocation handling
|
||||||
|
* win32/pe & arm/pe: better icon compression handling
|
||||||
|
|
||||||
Changes in 2.92 beta (23 Jan 2007):
|
Changes in 2.92 beta (23 Jan 2007):
|
||||||
* new option '--ultra-brute' which tries even more variants
|
* new option '--ultra-brute' which tries even more variants
|
||||||
* slightly improved compression ratio for some files when
|
* slightly improved compression ratio for some files when
|
||||||
@@ -302,8 +324,8 @@ Changes in 0.80 (03 Aug 1999)
|
|||||||
* win32/pe: even better TLS support
|
* win32/pe: even better TLS support
|
||||||
* win32/pe: versioninfo works on NT
|
* win32/pe: versioninfo works on NT
|
||||||
* win32/pe: import by ordinal from kernel32.dll works
|
* win32/pe: import by ordinal from kernel32.dll works
|
||||||
* win32/pe: other import improvements: importing a nonexistant DLL
|
* win32/pe: other import improvements: importing a nonexistent DLL
|
||||||
results in a usual Windows message, importing a nonexistant function
|
results in a usual Windows message, importing a nonexistent function
|
||||||
results in program exit (instead of crash ;-)
|
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
|
* win32/pe: reduced memory requirement during uncompression, some
|
||||||
@@ -355,7 +377,7 @@ Changes in 0.60 (06 Mar 1999)
|
|||||||
* win32/pe: fixed file corruption when the size of the export data is invalid
|
* win32/pe: fixed file corruption when the size of the export data is invalid
|
||||||
* win32/pe: fixed a problem with empty resource data
|
* win32/pe: fixed a problem with empty resource data
|
||||||
* win32/pe: compressed file alignment set to minimum value
|
* win32/pe: compressed file alignment set to minimum value
|
||||||
* win32/pe: made all compressed sections writeable
|
* win32/pe: made all compressed sections writable
|
||||||
* fixed some other win32/pe bugs
|
* fixed some other win32/pe bugs
|
||||||
* fixed an address optimization problem for some not Watcom LE files
|
* fixed an address optimization problem for some not Watcom LE files
|
||||||
* fixed a bug which could make UPX hang when an exe header contained
|
* fixed a bug which could make UPX hang when an exe header contained
|
||||||
@@ -396,3 +418,5 @@ Changes in 0.20 (05 Jul 1998)
|
|||||||
Changes in 0.05 (26 May 1998)
|
Changes in 0.05 (26 May 1998)
|
||||||
* first public beta release
|
* first public beta release
|
||||||
|
|
||||||
|
|
||||||
|
# vim:set syntax=off tw=0 ts=4 sw=4 et: -*- coding: utf-8 -*-
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ THE FUTURE
|
|||||||
- We will *NOT* add any sort of protection and/or encryption.
|
- We will *NOT* add any sort of protection and/or encryption.
|
||||||
This only gives people a false feeling of security because
|
This only gives people a false feeling of security because
|
||||||
by definition all protectors/compressors can be broken.
|
by definition all protectors/compressors can be broken.
|
||||||
And don't trust any advertisment of authors of other executable
|
And don't trust any advertisement of authors of other executable
|
||||||
compressors about this topic - just do a websearch on "unpackers"...
|
compressors about this topic - just do a websearch on "unpackers"...
|
||||||
|
|
||||||
- Fix all remaining bugs - keep your reports coming ;-)
|
- Fix all remaining bugs - keep your reports coming ;-)
|
||||||
|
|||||||
@@ -12,14 +12,6 @@
|
|||||||
http://upx.sourceforge.net
|
http://upx.sourceforge.net
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WARNING - UNSTABLE BETA VERSION
|
|
||||||
===============================
|
|
||||||
|
|
||||||
The current stable release is 2.02, and the next stable release
|
|
||||||
will be called version 3.00.
|
|
||||||
|
|
||||||
|
|
||||||
MAJOR NEWS IN UPX 3
|
MAJOR NEWS IN UPX 3
|
||||||
===================
|
===================
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@ Subroutine do_xmap() of src/stub/l_lx_elf.c performs the
|
|||||||
"virtual execve()" using the compressed data as source, and stores
|
"virtual execve()" using the compressed data as source, and stores
|
||||||
the decompressed bytes directly into the appropriate virtual addresses.
|
the decompressed bytes directly into the appropriate virtual addresses.
|
||||||
|
|
||||||
Before transfering control to the PT_INTERP "program interpreter",
|
Before transferring control to the PT_INTERP "program interpreter",
|
||||||
minor tricks are required to setup the Elf32_auxv_t entries,
|
minor tricks are required to setup the Elf32_auxv_t entries,
|
||||||
clear the free portion of the stack (to compensate for ld-linux.so.2
|
clear the free portion of the stack (to compensate for ld-linux.so.2
|
||||||
assuming that its automatic stack variables are initialized to zero),
|
assuming that its automatic stack variables are initialized to zero),
|
||||||
|
|||||||
+1
-1
@@ -45,6 +45,6 @@ These symbols can be defined later in C++ using
|
|||||||
|
|
||||||
linker->defineSymbol("xx", yy)
|
linker->defineSymbol("xx", yy)
|
||||||
|
|
||||||
This functionality (we could say it's a simple linker) is achived by
|
This functionality (we could say it's a simple linker) is achieved by
|
||||||
compiling the assembly into an ELF object file which a little C++
|
compiling the assembly into an ELF object file which a little C++
|
||||||
module (src/linker.cpp) can interpret and work with.
|
module (src/linker.cpp) can interpret and work with.
|
||||||
|
|||||||
+27
-20
@@ -139,7 +139,11 @@ B<--help>: prints the help
|
|||||||
B<--version>: print the version of B<UPX>
|
B<--version>: print the version of B<UPX>
|
||||||
|
|
||||||
B<--exact>: when compressing, require to be able to get a byte-identical file
|
B<--exact>: when compressing, require to be able to get a byte-identical file
|
||||||
after decompression with option B<-d>
|
after decompression with option B<-d>. [NOTE: this is work in progress and is
|
||||||
|
not supported for all formats yet. If you do care, as a workaround you can
|
||||||
|
compress and then decompress your program a first time - any further
|
||||||
|
compress-decompress steps should then yield byte-identical results
|
||||||
|
as compared to the first decompressed version.]
|
||||||
|
|
||||||
[ ...to be written... - type `B<upx --help>' for now ]
|
[ ...to be written... - type `B<upx --help>' for now ]
|
||||||
|
|
||||||
@@ -197,7 +201,7 @@ For win32/pe programs there's B<--strip-relocs=0>. See notes below.
|
|||||||
|
|
||||||
=head1 OVERLAY HANDLING OPTIONS
|
=head1 OVERLAY HANDLING OPTIONS
|
||||||
|
|
||||||
Info: An "overlay" means auxillary data atached after the logical end of
|
Info: An "overlay" means auxiliary data attached after the logical end of
|
||||||
an executable, and it often contains application specific data
|
an executable, and it often contains application specific data
|
||||||
(this is a common practice to avoid an extra data file, though
|
(this is a common practice to avoid an extra data file, though
|
||||||
it would be better to use resource sections).
|
it would be better to use resource sections).
|
||||||
@@ -345,7 +349,7 @@ Extra options available for this executable format:
|
|||||||
First of all, it is recommended to use B<UPX> *instead* of B<strip>. strip has
|
First of all, it is recommended to use B<UPX> *instead* of B<strip>. strip has
|
||||||
the very bad habit of replacing your stub with its own (outdated) version.
|
the very bad habit of replacing your stub with its own (outdated) version.
|
||||||
Additionally B<UPX> corrects a bug/feature in strip v2.8.x: it
|
Additionally B<UPX> corrects a bug/feature in strip v2.8.x: it
|
||||||
will fix the 4 KByte aligment of the stub.
|
will fix the 4 KByte alignment of the stub.
|
||||||
|
|
||||||
B<UPX> includes the full functionality of stubify. This means it will
|
B<UPX> includes the full functionality of stubify. This means it will
|
||||||
automatically stubify your COFF files. Use the option B<--coff> to
|
automatically stubify your COFF files. Use the option B<--coff> to
|
||||||
@@ -380,7 +384,7 @@ Extra options available for this executable format:
|
|||||||
Introduction
|
Introduction
|
||||||
|
|
||||||
Linux/386 support in UPX consists of 3 different executable formats,
|
Linux/386 support in UPX consists of 3 different executable formats,
|
||||||
one optimized for ELF excutables ("linux/elf386"), one optimized
|
one optimized for ELF executables ("linux/elf386"), one optimized
|
||||||
for shell scripts ("linux/sh386"), and one generic format
|
for shell scripts ("linux/sh386"), and one generic format
|
||||||
("linux/386").
|
("linux/386").
|
||||||
|
|
||||||
@@ -408,14 +412,14 @@ General user's overview
|
|||||||
or network I/O.
|
or network I/O.
|
||||||
|
|
||||||
Depending on the statistics of usage and access, and the relative
|
Depending on the statistics of usage and access, and the relative
|
||||||
speeds of CPU, RAM, swap space, /tmp, and filesystem storage, then
|
speeds of CPU, RAM, swap space, /tmp, and file system storage, then
|
||||||
invoking and running a compressed executable can be faster than
|
invoking and running a compressed executable can be faster than
|
||||||
directly running the corresponding uncompressed program.
|
directly running the corresponding uncompressed program.
|
||||||
The operating system might perfrom fewer expensive I/O operations
|
The operating system might perform fewer expensive I/O operations
|
||||||
to invoke the compressed program. Paging to or from swap space
|
to invoke the compressed program. Paging to or from swap space
|
||||||
or /tmp might be faster than paging from the general filesystem.
|
or /tmp might be faster than paging from the general file system.
|
||||||
``Medium-sized'' programs which access about 1/3 to 1/2 of their
|
``Medium-sized'' programs which access about 1/3 to 1/2 of their
|
||||||
stored program bytes can do particulary well with compression.
|
stored program bytes can do particularly well with compression.
|
||||||
Small programs tend not to benefit as much because the absolute
|
Small programs tend not to benefit as much because the absolute
|
||||||
savings is less. Big programs tend not to benefit proportionally
|
savings is less. Big programs tend not to benefit proportionally
|
||||||
because each invocation may use only a small fraction of the program,
|
because each invocation may use only a small fraction of the program,
|
||||||
@@ -424,7 +428,7 @@ General user's overview
|
|||||||
then compression may win anyway.
|
then compression may win anyway.
|
||||||
|
|
||||||
Currently, executables compressed by UPX do not share RAM at runtime
|
Currently, executables compressed by UPX do not share RAM at runtime
|
||||||
in the way that executables mapped from a filesystem do. As a
|
in the way that executables mapped from a file system do. As a
|
||||||
result, if the same program is run simultaneously by more than one
|
result, if the same program is run simultaneously by more than one
|
||||||
process, then using the compressed version will require more RAM and/or
|
process, then using the compressed version will require more RAM and/or
|
||||||
swap space. So, shell programs (bash, csh, etc.) and ``make''
|
swap space. So, shell programs (bash, csh, etc.) and ``make''
|
||||||
@@ -513,7 +517,7 @@ The linux/elf386 format decompresses directly into RAM,
|
|||||||
uses only one exec, does not use space in /tmp,
|
uses only one exec, does not use space in /tmp,
|
||||||
and does not use /proc.
|
and does not use /proc.
|
||||||
|
|
||||||
Linux/elf386 is automatically selected for Linux ELF exectuables.
|
Linux/elf386 is automatically selected for Linux ELF executables.
|
||||||
|
|
||||||
Packed programs will be byte-identical to the original after uncompression.
|
Packed programs will be byte-identical to the original after uncompression.
|
||||||
|
|
||||||
@@ -602,7 +606,7 @@ Extra options available for this executable format:
|
|||||||
Please read the general Linux description first.
|
Please read the general Linux description first.
|
||||||
|
|
||||||
The generic linux/386 format decompresses to /tmp and needs
|
The generic linux/386 format decompresses to /tmp and needs
|
||||||
/proc filesystem support. It starts the decompressed program
|
/proc file system support. It starts the decompressed program
|
||||||
via the execve() syscall.
|
via the execve() syscall.
|
||||||
|
|
||||||
Linux/386 is only selected if the specialized linux/elf386
|
Linux/386 is only selected if the specialized linux/elf386
|
||||||
@@ -614,11 +618,11 @@ How it works:
|
|||||||
|
|
||||||
For files which are not ELF and not a script for a known "-c" shell,
|
For files which are not ELF and not a script for a known "-c" shell,
|
||||||
UPX uses kernel execve(), which first requires decompressing to a
|
UPX uses kernel execve(), which first requires decompressing to a
|
||||||
temporary file in the filesystem. Interestingly -
|
temporary file in the file system. Interestingly -
|
||||||
because of the good memory management of the Linux kernel - this
|
because of the good memory management of the Linux kernel - this
|
||||||
often does not introduce a noticable delay, and in fact there
|
often does not introduce a noticeable delay, and in fact there
|
||||||
will be no disk access at all if you have enough free memory as
|
will be no disk access at all if you have enough free memory as
|
||||||
the entire process takes places within the filesystem buffers.
|
the entire process takes places within the file system buffers.
|
||||||
|
|
||||||
A compressed executable consists of the UPX stub and an overlay
|
A compressed executable consists of the UPX stub and an overlay
|
||||||
which contains the original program in a compressed form.
|
which contains the original program in a compressed form.
|
||||||
@@ -644,7 +648,7 @@ Specific drawbacks:
|
|||||||
decompression, but you still need it for the full execution time
|
decompression, but you still need it for the full execution time
|
||||||
of the program.
|
of the program.
|
||||||
|
|
||||||
- You must have /proc filesystem support as the stub wants to open
|
- You must have /proc file system support as the stub wants to open
|
||||||
/proc/<pid>/exe and needs /proc/<pid>/fd/X. This also means that you
|
/proc/<pid>/exe and needs /proc/<pid>/fd/X. This also means that you
|
||||||
cannot compress programs that are used during the boot sequence
|
cannot compress programs that are used during the boot sequence
|
||||||
before /proc is mounted.
|
before /proc is mounted.
|
||||||
@@ -656,7 +660,7 @@ Specific drawbacks:
|
|||||||
|
|
||||||
- Because of temporary decompression to disk the decompression speed
|
- Because of temporary decompression to disk the decompression speed
|
||||||
is not as fast as with the other executable formats. Still, I can see
|
is not as fast as with the other executable formats. Still, I can see
|
||||||
no noticable delay when starting programs like my ~3 MB emacs (which
|
no noticeable delay when starting programs like my ~3 MB emacs (which
|
||||||
is less than 1 MB when compressed :-).
|
is less than 1 MB when compressed :-).
|
||||||
|
|
||||||
Extra options available for this executable format:
|
Extra options available for this executable format:
|
||||||
@@ -683,7 +687,10 @@ Notes:
|
|||||||
|
|
||||||
- UPX creates as default a suitable executable for CD-Mastering
|
- UPX creates as default a suitable executable for CD-Mastering
|
||||||
and console transfer. For a CD-Master main executable you could also try
|
and console transfer. For a CD-Master main executable you could also try
|
||||||
the special option "--boot-only" as descriped below.
|
the special option "--boot-only" as described below.
|
||||||
|
It has been reported that upx packed executables are fully compatible with
|
||||||
|
the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in
|
||||||
|
Sony PlayStation (PSone) emulation mode.
|
||||||
|
|
||||||
- Normally the packed files use the same memory areas like the uncompressed
|
- Normally the packed files use the same memory areas like the uncompressed
|
||||||
versions, so they will not override other memory areas while unpacking.
|
versions, so they will not override other memory areas while unpacking.
|
||||||
@@ -759,7 +766,7 @@ Benefits:
|
|||||||
- Better compression (but note that the kernel was already compressed,
|
- Better compression (but note that the kernel was already compressed,
|
||||||
so the improvement is not as large as with other formats).
|
so the improvement is not as large as with other formats).
|
||||||
Still, the bytes saved may be essential for special needs like
|
Still, the bytes saved may be essential for special needs like
|
||||||
bootdisks.
|
boot disks.
|
||||||
|
|
||||||
For example, this is what I get for my 2.2.16 kernel:
|
For example, this is what I get for my 2.2.16 kernel:
|
||||||
1589708 vmlinux
|
1589708 vmlinux
|
||||||
@@ -806,13 +813,13 @@ Extra options available for this executable format:
|
|||||||
=head2 NOTES FOR WIN32/PE
|
=head2 NOTES FOR WIN32/PE
|
||||||
|
|
||||||
The PE support in B<UPX> is quite stable now, but probably there are
|
The PE support in B<UPX> is quite stable now, but probably there are
|
||||||
still some incompabilities with some files.
|
still some incompatibilities with some files.
|
||||||
|
|
||||||
Because of the way B<UPX> (and other packers for this format) works, you
|
Because of the way B<UPX> (and other packers for this format) works, you
|
||||||
can see increased memory usage of your compressed files because the whole
|
can see increased memory usage of your compressed files because the whole
|
||||||
program is loaded into memory at startup.
|
program is loaded into memory at startup.
|
||||||
If you start several instances of huge compressed programs you're
|
If you start several instances of huge compressed programs you're
|
||||||
wasting memory because the common segements of the program won't
|
wasting memory because the common segments of the program won't
|
||||||
get shared across the instances.
|
get shared across the instances.
|
||||||
On the other hand if you're compressing only smaller programs, or
|
On the other hand if you're compressing only smaller programs, or
|
||||||
running only one instance of larger programs, then this penalty is
|
running only one instance of larger programs, then this penalty is
|
||||||
|
|||||||
+44
-15
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# UPX Makefile - needs GNU make 3.80 or better
|
# UPX Makefile - needs GNU make 3.81 or better
|
||||||
#
|
#
|
||||||
|
|
||||||
MAKEFLAGS += -rR
|
MAKEFLAGS += -rR
|
||||||
@@ -7,9 +7,19 @@ MAKEFLAGS += -rR
|
|||||||
export SHELL = /bin/sh
|
export SHELL = /bin/sh
|
||||||
override e = $($1) $(EXTRA_$1) $(upx_$1) $($(basename $(notdir $@)).$1)
|
override e = $($1) $(EXTRA_$1) $(upx_$1) $($(basename $(notdir $@)).$1)
|
||||||
|
|
||||||
srcdir ?= $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
|
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.77 3.78 3.78.1 3.79 3.79.1 3.80),)
|
||||||
ifneq ($(srcdir),./)
|
$(error GNU make 3.81 or better is required)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef srcdir
|
||||||
|
srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
|
||||||
srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,')
|
srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,')
|
||||||
|
endif
|
||||||
|
ifndef top_srcdir
|
||||||
|
top_srcdir := $(srcdir)/..
|
||||||
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
|
ifneq ($(srcdir),.)
|
||||||
##$(info Info: using VPATH . $(srcdir))
|
##$(info Info: using VPATH . $(srcdir))
|
||||||
VPATH := . $(srcdir)
|
VPATH := . $(srcdir)
|
||||||
endif
|
endif
|
||||||
@@ -17,11 +27,10 @@ endif
|
|||||||
ifeq ($(CXX),)
|
ifeq ($(CXX),)
|
||||||
CXX = g++
|
CXX = g++
|
||||||
endif
|
endif
|
||||||
ifeq ($(firstword $(CXX)),g++)
|
ifneq ($(findstring $(firstword $(CXX)),g++),)
|
||||||
USE_GNUC ?= 1
|
USE_GNUC ?= 1
|
||||||
endif
|
endif
|
||||||
ifeq ($(USE_GNUC),1)
|
ifeq ($(USE_GNUC),1)
|
||||||
CXXFLAGS += -MMD
|
|
||||||
ifeq ($(DEBUG),1)
|
ifeq ($(DEBUG),1)
|
||||||
CXXFLAGS += -O0 -g
|
CXXFLAGS += -O0 -g
|
||||||
else
|
else
|
||||||
@@ -46,37 +55,57 @@ INCLUDES += -I$(UPX_UCLDIR)/include
|
|||||||
LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))
|
LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))
|
||||||
endif
|
endif
|
||||||
LIBS += -lucl -lz
|
LIBS += -lucl -lz
|
||||||
# you should set envvar UPX_LZMADIR to point to your unpacked lzma443.tar.bz2
|
# you should set envvar UPX_LZMADIR to point to your unpacked LZMA SDK
|
||||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
include $(top_srcdir)/src/stub/src/c/Makevars.lzma
|
||||||
DEFS += -DWITH_LZMA
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
|
DEFS += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
INCLUDES += -I$(UPX_LZMADIR)
|
INCLUDES += -I$(UPX_LZMADIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
all: upx$(exeext)
|
all: upx$(exeext) | .depend
|
||||||
.DELETE_ON_ERROR: upx$(exeext) $(upx_OBJECTS)
|
.DELETE_ON_ERROR: upx$(exeext) $(upx_OBJECTS) .depend
|
||||||
|
|
||||||
upx$(exeext): $(upx_OBJECTS) $(upx_DEPENDENCIES)
|
upx$(exeext): $(upx_OBJECTS) $(upx_DEPENDENCIES)
|
||||||
$($(notdir $@).PRE_LINK_STEP)
|
$($(notdir $@).PRE_LINK_STEP)
|
||||||
$(strip $(CXXLD) $(call e,CPPFLAGS) $(call e,CXXFLAGS) $(call e,LDFLAGS) -o $@ $(upx_OBJECTS) $(call e,LDADD) $(call e,LIBS))
|
$(strip $(CXXLD) $(call e,CPPFLAGS) $(call e,CXXFLAGS) $(call e,LDFLAGS) -o $@ $(upx_OBJECTS) $(call e,LDADD) $(call e,LIBS))
|
||||||
$($(notdir $@).POST_LINK_STEP)
|
$($(notdir $@).POST_LINK_STEP)
|
||||||
|
|
||||||
%.o : %.cpp
|
%.o : %.cpp | .depend
|
||||||
$(strip $(CXX) $(call e,CPPFLAGS) $(call e,CXXFLAGS) -o $@ -c $<)
|
$(strip $(CXX) $(call e,CPPFLAGS) $(call e,CXXFLAGS) -o $@ -c $<)
|
||||||
|
|
||||||
|
.depend: $(wildcard $(srcdir)/*.cpp $(srcdir)/*.h) $(MAKEFILE_LIST)
|
||||||
|
@rm -f $@
|
||||||
|
ifeq ($(USE_GNUC),1)
|
||||||
|
@echo "Updating $@"
|
||||||
|
@$(strip $(CXX) $(call e,CPPFLAGS) -MM) $(filter %.cpp,$^) > $@
|
||||||
|
else
|
||||||
|
touch $@
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(USE_GNUC),1)
|
ifeq ($(USE_GNUC),1)
|
||||||
##compress_lzma$(objext) : CXXFLAGS += -O3 -fomit-frame-pointer
|
##compress_lzma$(objext) : CXXFLAGS += -O3 -fomit-frame-pointer
|
||||||
compress_lzma$(objext) : CXXFLAGS += -Wno-cast-qual
|
compress_lzma$(objext) : CXXFLAGS += -Wno-cast-qual
|
||||||
compress_lzma$(objext) : CXXFLAGS += -Wno-non-virtual-dtor
|
|
||||||
compress_lzma$(objext) : CXXFLAGS += -Wno-shadow
|
compress_lzma$(objext) : CXXFLAGS += -Wno-shadow
|
||||||
|
ifeq ($(UPX_LZMA_VERSION),0x443)
|
||||||
|
compress_lzma$(objext) : CXXFLAGS += -Wno-non-virtual-dtor
|
||||||
compress_lzma$(objext) : CXXFLAGS += -Wno-unused
|
compress_lzma$(objext) : CXXFLAGS += -Wno-unused
|
||||||
##compress_lzma$(objext) : CXXFLAGS += -Wno-error
|
endif
|
||||||
|
# needed for gcc-4.3:
|
||||||
|
compress_lzma$(objext) : CXXFLAGS += -Wno-error
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
mostlyclean clean distclean maintainer-clean:
|
mostlyclean clean distclean maintainer-clean:
|
||||||
rm -f *.d *.map *.o *.obj *.res upx.exe upx.out upx.ttp upx$(exeext)
|
rm -f *.d *.map *.o *.obj *.res .depend upx.exe upx.out upx.ttp upx$(exeext)
|
||||||
|
|
||||||
-include *.d
|
|
||||||
.PHONY: all mostlyclean clean distclean maintainer-clean
|
.PHONY: all mostlyclean clean distclean maintainer-clean
|
||||||
|
|
||||||
|
ifeq ($(MAKECMDGOALS),mostlyclean)
|
||||||
|
else ifeq ($(MAKECMDGOALS),clean)
|
||||||
|
else ifeq ($(MAKECMDGOALS),distclean)
|
||||||
|
else ifeq ($(MAKECMDGOALS),maintainer-clean)
|
||||||
|
else
|
||||||
|
-include .depend
|
||||||
|
endif
|
||||||
|
|||||||
+7
-5
@@ -182,8 +182,10 @@ int upx_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult )
|
const upx_compress_result_t *cresult )
|
||||||
{
|
{
|
||||||
@@ -201,15 +203,15 @@ int upx_test_overlap ( const upx_bytep buf, unsigned src_off,
|
|||||||
}
|
}
|
||||||
#if defined(WITH_LZMA)
|
#if defined(WITH_LZMA)
|
||||||
else if (M_IS_LZMA(method))
|
else if (M_IS_LZMA(method))
|
||||||
r = upx_lzma_test_overlap(buf, src_off, src_len, dst_len, method, cresult);
|
r = upx_lzma_test_overlap(buf, tbuf, src_off, src_len, dst_len, method, cresult);
|
||||||
#endif
|
#endif
|
||||||
#if defined(WITH_NRV)
|
#if defined(WITH_NRV)
|
||||||
else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method))
|
else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method))
|
||||||
r = upx_nrv_test_overlap(buf, src_off, src_len, dst_len, method, cresult);
|
r = upx_nrv_test_overlap(buf, tbuf, src_off, src_len, dst_len, method, cresult);
|
||||||
#endif
|
#endif
|
||||||
#if defined(WITH_UCL)
|
#if defined(WITH_UCL)
|
||||||
else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method))
|
else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method))
|
||||||
r = upx_ucl_test_overlap(buf, src_off, src_len, dst_len, method, cresult);
|
r = upx_ucl_test_overlap(buf, tbuf, src_off, src_len, dst_len, method, cresult);
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
throwInternalError("unknown decompression method");
|
throwInternalError("unknown decompression method");
|
||||||
|
|||||||
+16
-8
@@ -46,8 +46,10 @@ int upx_lzma_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
upx_bytep dst, unsigned* dst_len,
|
upx_bytep dst, unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_lzma_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
#endif
|
#endif
|
||||||
@@ -65,8 +67,10 @@ int upx_nrv_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
upx_bytep dst, unsigned* dst_len,
|
upx_bytep dst, unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
int upx_nrv_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_nrv_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
#endif
|
#endif
|
||||||
@@ -84,8 +88,10 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
upx_bytep dst, unsigned* dst_len,
|
upx_bytep dst, unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_ucl_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
#endif
|
#endif
|
||||||
@@ -102,8 +108,10 @@ int upx_zlib_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
upx_bytep dst, unsigned* dst_len,
|
upx_bytep dst, unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
int upx_zlib_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_zlib_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+72
-36
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
|
#include "mem.h"
|
||||||
|
|
||||||
|
|
||||||
void lzma_compress_config_t::reset()
|
void lzma_compress_config_t::reset()
|
||||||
@@ -101,9 +102,15 @@ int compress_lzma_dummy = 0;
|
|||||||
#undef _WIN32_WCE
|
#undef _WIN32_WCE
|
||||||
#undef COMPRESS_MF_MT
|
#undef COMPRESS_MF_MT
|
||||||
#undef _NO_EXCEPTIONS
|
#undef _NO_EXCEPTIONS
|
||||||
#include "C/Common/MyInitGuid.h"
|
#if (WITH_LZMA >= 0x449)
|
||||||
//#include "C/7zip/Compress/LZMA/LZMADecoder.h"
|
# define INITGUID 1
|
||||||
#include "C/7zip/Compress/LZMA/LZMAEncoder.h"
|
//# include "CPP/7zip/Compress/LZMA/LZMADecoder.h"
|
||||||
|
# include "CPP/7zip/Compress/LZMA/LZMAEncoder.h"
|
||||||
|
#else
|
||||||
|
# include "C/Common/MyInitGuid.h"
|
||||||
|
//# include "C/7zip/Compress/LZMA/LZMADecoder.h"
|
||||||
|
# include "C/7zip/Compress/LZMA/LZMAEncoder.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace MyLzma {
|
namespace MyLzma {
|
||||||
|
|
||||||
@@ -173,16 +180,29 @@ STDMETHODIMP ProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outS
|
|||||||
# pragma warning(disable: 424) // #424: extra ";" ignored
|
# pragma warning(disable: 424) // #424: extra ";" ignored
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "C/Common/Alloc.cpp"
|
#if (WITH_LZMA >= 0x449)
|
||||||
#include "C/Common/CRC.cpp"
|
# include "C/Alloc.c"
|
||||||
//#include "C/7zip/Common/InBuffer.cpp"
|
# include "C/7zCrc.c"
|
||||||
#include "C/7zip/Common/OutBuffer.cpp"
|
# include "C/Compress/Lz/MatchFinder.c"
|
||||||
#include "C/7zip/Common/StreamUtils.cpp"
|
//# include "CPP/7zip/Common/InBuffer.cpp"
|
||||||
#include "C/7zip/Compress/LZ/LZInWindow.cpp"
|
# include "CPP/7zip/Common/OutBuffer.cpp"
|
||||||
//#include "C/7zip/Compress/LZ/LZOutWindow.cpp"
|
# include "CPP/7zip/Common/StreamUtils.cpp"
|
||||||
//#include "C/7zip/Compress/LZMA/LZMADecoder.cpp"
|
//# include "CPP/7zip/Compress/LZ/LZOutWindow.cpp"
|
||||||
#include "C/7zip/Compress/LZMA/LZMAEncoder.cpp"
|
//# include "CPP/7zip/Compress/LZMA/LZMADecoder.cpp"
|
||||||
#include "C/7zip/Compress/RangeCoder/RangeCoderBit.cpp"
|
# include "CPP/7zip/Compress/LZMA/LZMAEncoder.cpp"
|
||||||
|
# include "CPP/7zip/Compress/RangeCoder/RangeCoderBit.cpp"
|
||||||
|
#else
|
||||||
|
# include "C/Common/Alloc.cpp"
|
||||||
|
# include "C/Common/CRC.cpp"
|
||||||
|
//# include "C/7zip/Common/InBuffer.cpp"
|
||||||
|
# include "C/7zip/Common/OutBuffer.cpp"
|
||||||
|
# include "C/7zip/Common/StreamUtils.cpp"
|
||||||
|
# include "C/7zip/Compress/LZ/LZInWindow.cpp"
|
||||||
|
//# include "C/7zip/Compress/LZ/LZOutWindow.cpp"
|
||||||
|
//# include "C/7zip/Compress/LZMA/LZMADecoder.cpp"
|
||||||
|
# include "C/7zip/Compress/LZMA/LZMAEncoder.cpp"
|
||||||
|
# include "C/7zip/Compress/RangeCoder/RangeCoderBit.cpp"
|
||||||
|
#endif
|
||||||
#undef RC_NORMALIZE
|
#undef RC_NORMALIZE
|
||||||
|
|
||||||
|
|
||||||
@@ -223,7 +243,7 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
PROPVARIANT pr[8];
|
PROPVARIANT pr[8];
|
||||||
pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = VT_UI4;
|
pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = VT_UI4;
|
||||||
pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4;
|
pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4;
|
||||||
pr[7].vt = VT_BSTR;
|
unsigned nprops = 7;
|
||||||
|
|
||||||
// setup defaults
|
// setup defaults
|
||||||
pr[0].uintVal = 2; // 0 .. 4
|
pr[0].uintVal = 2; // 0 .. 4
|
||||||
@@ -235,9 +255,11 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
pr[6].uintVal = 0;
|
pr[6].uintVal = 0;
|
||||||
#ifdef COMPRESS_MF_BT4
|
#ifdef COMPRESS_MF_BT4
|
||||||
static wchar_t matchfinder[] = L"BT4";
|
static wchar_t matchfinder[] = L"BT4";
|
||||||
#endif
|
|
||||||
assert(NCompress::NLZMA::FindMatchFinder(matchfinder) >= 0);
|
assert(NCompress::NLZMA::FindMatchFinder(matchfinder) >= 0);
|
||||||
pr[7].bstrVal = matchfinder;
|
pr[nprops].vt = VT_BSTR;
|
||||||
|
pr[nprops].bstrVal = matchfinder;
|
||||||
|
nprops++;
|
||||||
|
#endif
|
||||||
#if 1
|
#if 1
|
||||||
pr[0].uintVal = lzma_compress_config_t::pos_bits_t::default_value_c;
|
pr[0].uintVal = lzma_compress_config_t::pos_bits_t::default_value_c;
|
||||||
pr[1].uintVal = lzma_compress_config_t::lit_pos_bits_t::default_value_c;
|
pr[1].uintVal = lzma_compress_config_t::lit_pos_bits_t::default_value_c;
|
||||||
@@ -348,7 +370,7 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
|
|||||||
# error
|
# error
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (enc.SetCoderProperties(propIDs, pr, 8) != S_OK)
|
if (enc.SetCoderProperties(propIDs, pr, nprops) != S_OK)
|
||||||
goto error;
|
goto error;
|
||||||
if (enc.WriteCoderProperties(&os) != S_OK)
|
if (enc.WriteCoderProperties(&os) != S_OK)
|
||||||
goto error;
|
goto error;
|
||||||
@@ -406,8 +428,13 @@ error:
|
|||||||
#undef _LZMA_OUT_READ
|
#undef _LZMA_OUT_READ
|
||||||
#undef _LZMA_PROB32
|
#undef _LZMA_PROB32
|
||||||
#undef _LZMA_LOC_OPT
|
#undef _LZMA_LOC_OPT
|
||||||
#include "C/7zip/Compress/LZMA_C/LzmaDecode.h"
|
#if (WITH_LZMA >= 0x449)
|
||||||
#include "C/7zip/Compress/LZMA_C/LzmaDecode.c"
|
# include "C/Compress/Lzma/LzmaDecode.h"
|
||||||
|
# include "C/Compress/Lzma/LzmaDecode.c"
|
||||||
|
#else
|
||||||
|
# include "C/7zip/Compress/LZMA_C/LzmaDecode.h"
|
||||||
|
# include "C/7zip/Compress/LZMA_C/LzmaDecode.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
int upx_lzma_decompress ( const upx_bytep src, unsigned src_len,
|
int upx_lzma_decompress ( const upx_bytep src, unsigned src_len,
|
||||||
upx_bytep dst, unsigned* dst_len,
|
upx_bytep dst, unsigned* dst_len,
|
||||||
@@ -483,28 +510,32 @@ error:
|
|||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// test_overlap
|
// test_overlap - see <ucl/ucl.h> for semantics
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_lzma_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult )
|
const upx_compress_result_t *cresult )
|
||||||
{
|
{
|
||||||
assert(M_IS_LZMA(method));
|
assert(M_IS_LZMA(method));
|
||||||
|
|
||||||
// FIXME - implement this
|
MemBuffer b(src_off + src_len);
|
||||||
// Note that Packer::verifyOverlappingDecompression() will
|
memcpy(b + src_off, buf + src_off, src_len);
|
||||||
// verify the final result in any case.
|
unsigned saved_dst_len = *dst_len;
|
||||||
UNUSED(buf);
|
int r = upx_lzma_decompress(b + src_off, src_len, b, dst_len, method, cresult);
|
||||||
|
if (r != UPX_E_OK)
|
||||||
unsigned overlap_overhead = src_off + src_len - *dst_len;
|
return r;
|
||||||
//printf("upx_lzma_test_overlap: %d\n", overlap_overhead);
|
if (*dst_len != saved_dst_len)
|
||||||
if ((int)overlap_overhead >= 256)
|
return UPX_E_ERROR;
|
||||||
return UPX_E_OK;
|
// NOTE: there is a very tiny possibility that decompression has
|
||||||
|
// succeeded but the data is not restored correctly because of
|
||||||
UNUSED(cresult);
|
// in-place buffer overlapping.
|
||||||
return UPX_E_ERROR;
|
if (tbuf != NULL && memcmp(tbuf, b, *dst_len) != 0)
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
return UPX_E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -514,9 +545,14 @@ int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off,
|
|||||||
|
|
||||||
const char *upx_lzma_version_string(void)
|
const char *upx_lzma_version_string(void)
|
||||||
{
|
{
|
||||||
// FIXME
|
#if (WITH_LZMA == 0x449)
|
||||||
// return NULL;
|
return "4.49";
|
||||||
|
#elif (WITH_LZMA == 0x443)
|
||||||
return "4.43";
|
return "4.43";
|
||||||
|
#else
|
||||||
|
# error "unknown version"
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -228,12 +228,15 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_ucl_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult )
|
const upx_compress_result_t *cresult )
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
UNUSED(tbuf); // not needed for UCL
|
||||||
|
|
||||||
switch (method)
|
switch (method)
|
||||||
{
|
{
|
||||||
|
|||||||
+20
-15
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
|
#include "mem.h"
|
||||||
|
|
||||||
|
|
||||||
void zlib_compress_config_t::reset()
|
void zlib_compress_config_t::reset()
|
||||||
@@ -188,28 +189,32 @@ done:
|
|||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// test_overlap
|
// test_overlap - see <ucl/ucl.h> for semantics
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
int upx_zlib_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_zlib_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult )
|
const upx_compress_result_t *cresult )
|
||||||
{
|
{
|
||||||
assert(method == M_DEFLATE);
|
assert(method == M_DEFLATE);
|
||||||
|
|
||||||
// FIXME - implement this
|
MemBuffer b(src_off + src_len);
|
||||||
// Note that Packer::verifyOverlappingDecompression() will
|
memcpy(b + src_off, buf + src_off, src_len);
|
||||||
// verify the final result in any case.
|
unsigned saved_dst_len = *dst_len;
|
||||||
UNUSED(buf);
|
int r = upx_zlib_decompress(b + src_off, src_len, b, dst_len, method, cresult);
|
||||||
|
if (r != UPX_E_OK)
|
||||||
unsigned overlap_overhead = src_off + src_len - *dst_len;
|
return r;
|
||||||
//printf("upx_zlib_test_overlap: %d\n", overlap_overhead);
|
if (*dst_len != saved_dst_len)
|
||||||
if ((int)overlap_overhead >= 256)
|
return UPX_E_ERROR;
|
||||||
return UPX_E_OK;
|
// NOTE: there is a very tiny possibility that decompression has
|
||||||
|
// succeeded but the data is not restored correctly because of
|
||||||
UNUSED(cresult);
|
// in-place buffer overlapping.
|
||||||
return UPX_E_ERROR;
|
if (tbuf != NULL && memcmp(tbuf, b, *dst_len) != 0)
|
||||||
|
return UPX_E_ERROR;
|
||||||
|
return UPX_E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+14
-7
@@ -303,8 +303,8 @@
|
|||||||
|
|
||||||
#undef __attribute_packed
|
#undef __attribute_packed
|
||||||
#if (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
|
#if (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
|
||||||
# if (0 && (ACC_ARCH_AMD64 || ACC_ARCH_I386))
|
# if (ACC_ARCH_I386) && (ACC_CC_INTELC && (__INTEL_COMPILER < 800))
|
||||||
# define __attribute_packed
|
# elif (0 && (ACC_ARCH_AMD64 || ACC_ARCH_I386))
|
||||||
# else
|
# else
|
||||||
# define __attribute_packed __attribute__((__packed__,__aligned__(1)))
|
# define __attribute_packed __attribute__((__packed__,__aligned__(1)))
|
||||||
# endif
|
# endif
|
||||||
@@ -448,13 +448,15 @@ private:
|
|||||||
#define UPX_F_LINUX_ELFI_i386 20
|
#define UPX_F_LINUX_ELFI_i386 20
|
||||||
#define UPX_F_WINCE_ARM_PE 21
|
#define UPX_F_WINCE_ARM_PE 21
|
||||||
#define UPX_F_LINUX_ELF64_AMD 22
|
#define UPX_F_LINUX_ELF64_AMD 22
|
||||||
#define UPX_F_LINUX_ELF32_ARMLE 23
|
#define UPX_F_LINUX_ELF32_ARMEL 23
|
||||||
#define UPX_F_BSD_i386 24
|
#define UPX_F_BSD_i386 24
|
||||||
#define UPX_F_BSD_ELF_i386 25
|
#define UPX_F_BSD_ELF_i386 25
|
||||||
#define UPX_F_BSD_SH_i386 26
|
#define UPX_F_BSD_SH_i386 26
|
||||||
|
|
||||||
#define UPX_F_VMLINUX_AMD64 27
|
#define UPX_F_VMLINUX_AMD64 27
|
||||||
#define UPX_F_VMLINUX_ARM 28
|
#define UPX_F_VMLINUX_ARMEL 28
|
||||||
|
#define UPX_F_MACH_i386 29
|
||||||
|
#define UPX_F_LINUX_ELF32_MIPSEL 30
|
||||||
|
|
||||||
#define UPX_F_PLAIN_TEXT 127
|
#define UPX_F_PLAIN_TEXT 127
|
||||||
|
|
||||||
@@ -462,7 +464,10 @@ private:
|
|||||||
#define UPX_F_SOLARIS_SPARC 130
|
#define UPX_F_SOLARIS_SPARC 130
|
||||||
#define UPX_F_MACH_PPC32 131
|
#define UPX_F_MACH_PPC32 131
|
||||||
#define UPX_F_LINUX_ELFPPC32 132
|
#define UPX_F_LINUX_ELFPPC32 132
|
||||||
#define UPX_F_LINUX_ELF32_ARMBE 133
|
#define UPX_F_LINUX_ELF32_ARMEB 133
|
||||||
|
#define UPX_F_MACH_FAT 134
|
||||||
|
#define UPX_F_VMLINUX_ARMEB 135
|
||||||
|
#define UPX_F_VMLINUX_PPC32 136
|
||||||
|
|
||||||
|
|
||||||
// compression methods
|
// compression methods
|
||||||
@@ -776,8 +781,10 @@ int upx_decompress ( const upx_bytep src, unsigned src_len,
|
|||||||
upx_bytep dst, unsigned* dst_len,
|
upx_bytep dst, unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
int upx_test_overlap ( const upx_bytep buf, unsigned src_off,
|
int upx_test_overlap ( const upx_bytep buf,
|
||||||
unsigned src_len, unsigned* dst_len,
|
const upx_bytep tbuf,
|
||||||
|
unsigned src_off, unsigned src_len,
|
||||||
|
unsigned* dst_len,
|
||||||
int method,
|
int method,
|
||||||
const upx_compress_result_t *cresult );
|
const upx_compress_result_t *cresult );
|
||||||
|
|
||||||
|
|||||||
@@ -161,6 +161,14 @@ void throwBadLoader()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void throwOutOfMemoryException(const char *msg)
|
||||||
|
{
|
||||||
|
if (msg == NULL)
|
||||||
|
msg = "out of memory";
|
||||||
|
throw OutOfMemoryException(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void throwIOException(const char *msg, int e)
|
void throwIOException(const char *msg, int e)
|
||||||
{
|
{
|
||||||
throw IOException(msg, e);
|
throw IOException(msg, e);
|
||||||
|
|||||||
@@ -220,6 +220,7 @@ void throwBadLoader() NORET;
|
|||||||
void throwChecksumError() NORET;
|
void throwChecksumError() NORET;
|
||||||
void throwCompressedDataViolation() NORET;
|
void throwCompressedDataViolation() NORET;
|
||||||
void throwInternalError(const char *msg) NORET;
|
void throwInternalError(const char *msg) NORET;
|
||||||
|
void throwOutOfMemoryException(const char *msg = NULL) NORET;
|
||||||
void throwIOException(const char *msg = NULL, int e = 0) NORET;
|
void throwIOException(const char *msg = NULL, int e = 0) NORET;
|
||||||
void throwEOFException(const char *msg = NULL, int e = 0) NORET;
|
void throwEOFException(const char *msg = NULL, int e = 0) NORET;
|
||||||
|
|
||||||
|
|||||||
+77
-6
@@ -69,7 +69,7 @@ void File::unlink(const char *name)
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
FileBase::FileBase() :
|
FileBase::FileBase() :
|
||||||
_fd(-1), _flags(0), _shflags(0), _mode(0), _name(NULL)
|
_fd(-1), _flags(0), _shflags(0), _mode(0), _name(NULL), _offset(0), _length(0)
|
||||||
{
|
{
|
||||||
memset(&st,0,sizeof(st));
|
memset(&st,0,sizeof(st));
|
||||||
}
|
}
|
||||||
@@ -104,6 +104,10 @@ void FileBase::sopen()
|
|||||||
assert(0);
|
assert(0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
if (!(_fd < 0)) {
|
||||||
|
::fstat(_fd, &st);
|
||||||
|
_length = st.st_size;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -117,6 +121,8 @@ bool FileBase::close()
|
|||||||
_flags = 0;
|
_flags = 0;
|
||||||
_mode = 0;
|
_mode = 0;
|
||||||
_name = NULL;
|
_name = NULL;
|
||||||
|
_offset = 0;
|
||||||
|
_length = 0;
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,10 +170,17 @@ void FileBase::seek(off_t off, int whence)
|
|||||||
{
|
{
|
||||||
if (!isOpen())
|
if (!isOpen())
|
||||||
throwIOException("bad seek 1");
|
throwIOException("bad seek 1");
|
||||||
if (whence == SEEK_SET && off < 0)
|
if (whence == SEEK_SET) {
|
||||||
throwIOException("bad seek 2");
|
if (off < 0)
|
||||||
if (whence == SEEK_END && off > 0)
|
throwIOException("bad seek 2");
|
||||||
throwIOException("bad seek 3");
|
off += _offset;
|
||||||
|
}
|
||||||
|
if (whence == SEEK_END) {
|
||||||
|
if (off > 0)
|
||||||
|
throwIOException("bad seek 3");
|
||||||
|
off += _offset + _length;
|
||||||
|
whence = SEEK_SET;
|
||||||
|
}
|
||||||
if (::lseek(_fd,off,whence) < 0)
|
if (::lseek(_fd,off,whence) < 0)
|
||||||
throwIOException("seek error",errno);
|
throwIOException("seek error",errno);
|
||||||
}
|
}
|
||||||
@@ -180,7 +193,19 @@ off_t FileBase::tell() const
|
|||||||
off_t l = ::lseek(_fd, 0, SEEK_CUR);
|
off_t l = ::lseek(_fd, 0, SEEK_CUR);
|
||||||
if (l < 0)
|
if (l < 0)
|
||||||
throwIOException("tell error",errno);
|
throwIOException("tell error",errno);
|
||||||
return l;
|
return l - _offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void FileBase::set_extent(off_t offset, off_t length)
|
||||||
|
{
|
||||||
|
_offset = offset;
|
||||||
|
_length = length;
|
||||||
|
}
|
||||||
|
|
||||||
|
off_t FileBase::st_size() const
|
||||||
|
{
|
||||||
|
return _length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -205,6 +230,8 @@ void InputFile::sopen(const char *name, int flags, int shflags)
|
|||||||
_flags = flags;
|
_flags = flags;
|
||||||
_shflags = shflags;
|
_shflags = shflags;
|
||||||
_mode = 0;
|
_mode = 0;
|
||||||
|
_offset = 0;
|
||||||
|
_length = 0;
|
||||||
FileBase::sopen();
|
FileBase::sopen();
|
||||||
if (!isOpen())
|
if (!isOpen())
|
||||||
{
|
{
|
||||||
@@ -289,6 +316,8 @@ void OutputFile::sopen(const char *name, int flags, int shflags, int mode)
|
|||||||
_flags = flags;
|
_flags = flags;
|
||||||
_shflags = shflags;
|
_shflags = shflags;
|
||||||
_mode = mode;
|
_mode = mode;
|
||||||
|
_offset = 0;
|
||||||
|
_length = 0;
|
||||||
FileBase::sopen();
|
FileBase::sopen();
|
||||||
if (!isOpen())
|
if (!isOpen())
|
||||||
{
|
{
|
||||||
@@ -316,6 +345,8 @@ bool OutputFile::openStdout(int flags, bool force)
|
|||||||
_flags = flags;
|
_flags = flags;
|
||||||
_shflags = -1;
|
_shflags = -1;
|
||||||
_mode = 0;
|
_mode = 0;
|
||||||
|
_offset = 0;
|
||||||
|
_length = 0;
|
||||||
if (flags && acc_set_binmode(fd, 1) == -1)
|
if (flags && acc_set_binmode(fd, 1) == -1)
|
||||||
throwIOException(_name, errno);
|
throwIOException(_name, errno);
|
||||||
_fd = fd;
|
_fd = fd;
|
||||||
@@ -329,6 +360,16 @@ void OutputFile::write(const void *buf, int len)
|
|||||||
bytes_written += len;
|
bytes_written += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
off_t OutputFile::st_size() const
|
||||||
|
{
|
||||||
|
if (opt->to_stdout) { // might be a pipe ==> .st_size is invalid
|
||||||
|
return bytes_written; // too big if seek()+write() instead of rewrite()
|
||||||
|
}
|
||||||
|
struct stat my_st;
|
||||||
|
::fstat(_fd, &my_st);
|
||||||
|
return my_st.st_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void OutputFile::write(const MemBuffer *buf, int len)
|
void OutputFile::write(const MemBuffer *buf, int len)
|
||||||
{
|
{
|
||||||
@@ -343,6 +384,36 @@ void OutputFile::write(const MemBuffer &buf, int len)
|
|||||||
write(&buf, len);
|
write(&buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OutputFile::rewrite(const void *buf, int len)
|
||||||
|
{
|
||||||
|
assert(!opt->to_stdout);
|
||||||
|
write(buf, len);
|
||||||
|
bytes_written -= len; // restore
|
||||||
|
}
|
||||||
|
|
||||||
|
void OutputFile::seek(off_t off, int whence)
|
||||||
|
{
|
||||||
|
assert(!opt->to_stdout);
|
||||||
|
super::seek(off,whence);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OutputFile::set_extent(off_t offset, off_t length)
|
||||||
|
{
|
||||||
|
super::set_extent(offset, length);
|
||||||
|
bytes_written = 0;
|
||||||
|
if (0==offset && (off_t)~0u==length) {
|
||||||
|
::fstat(_fd, &st);
|
||||||
|
_length = st.st_size - offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
off_t OutputFile::unset_extent()
|
||||||
|
{
|
||||||
|
_offset = 0;
|
||||||
|
_length = ::lseek(_fd, 0, SEEK_END);
|
||||||
|
bytes_written = _length;
|
||||||
|
return _length;
|
||||||
|
}
|
||||||
|
|
||||||
void OutputFile::dump(const char *name, const void *buf, int len, int flags)
|
void OutputFile::dump(const char *name, const void *buf, int len, int flags)
|
||||||
{
|
{
|
||||||
|
|||||||
+9
-11
@@ -59,6 +59,8 @@ public:
|
|||||||
virtual bool isOpen() const { return _fd >= 0; }
|
virtual bool isOpen() const { return _fd >= 0; }
|
||||||
int getFd() const { return _fd; }
|
int getFd() const { return _fd; }
|
||||||
const char *getName() const { return _name; }
|
const char *getName() const { return _name; }
|
||||||
|
virtual off_t st_size() const; // { return _length; }
|
||||||
|
virtual void set_extent(off_t offset, off_t length);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void sopen();
|
void sopen();
|
||||||
@@ -73,6 +75,8 @@ protected:
|
|||||||
int _shflags;
|
int _shflags;
|
||||||
int _mode;
|
int _mode;
|
||||||
const char *_name;
|
const char *_name;
|
||||||
|
off_t _offset;
|
||||||
|
off_t _length;
|
||||||
public:
|
public:
|
||||||
struct stat st;
|
struct stat st;
|
||||||
};
|
};
|
||||||
@@ -128,21 +132,15 @@ public:
|
|||||||
virtual void write(const void *buf, int len);
|
virtual void write(const void *buf, int len);
|
||||||
virtual void write(const MemBuffer *buf, int len);
|
virtual void write(const MemBuffer *buf, int len);
|
||||||
virtual void write(const MemBuffer &buf, int len);
|
virtual void write(const MemBuffer &buf, int len);
|
||||||
|
virtual void set_extent(off_t offset, off_t length);
|
||||||
|
virtual off_t unset_extent(); // returns actual length
|
||||||
|
|
||||||
off_t getBytesWritten() const { return bytes_written; }
|
off_t getBytesWritten() const { return bytes_written; }
|
||||||
|
virtual off_t st_size() const; // { return _length; }
|
||||||
|
|
||||||
// FIXME - these won't work when using the '--stdout' option
|
// FIXME - these won't work when using the '--stdout' option
|
||||||
virtual void seek(off_t off, int whence)
|
virtual void seek(off_t off, int whence);
|
||||||
{
|
virtual void rewrite(const void *buf, int len);
|
||||||
assert(!opt->to_stdout);
|
|
||||||
super::seek(off,whence);
|
|
||||||
}
|
|
||||||
virtual void rewrite(const void *buf, int len)
|
|
||||||
{
|
|
||||||
assert(!opt->to_stdout);
|
|
||||||
write(buf, len);
|
|
||||||
bytes_written -= len; // restore
|
|
||||||
}
|
|
||||||
|
|
||||||
// util
|
// util
|
||||||
static void dump(const char *name, const void *buf, int len, int flags=-1);
|
static void dump(const char *name, const void *buf, int len, int flags=-1);
|
||||||
|
|||||||
+1
-1
@@ -106,7 +106,7 @@ static int F(Filter *f)
|
|||||||
f->noncalls = noncalls;
|
f->noncalls = noncalls;
|
||||||
f->lastcall = lastcall;
|
f->lastcall = lastcall;
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
printf("\ncalls=%d noncalls=%d text_size=%x calltrickoffset=%x\n",
|
printf("\ncalls=%d noncalls=%d text_size=%x calltrickoffset=%x\n",
|
||||||
calls,noncalls,size,cto8);
|
calls,noncalls,size,cto8);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+4
-4
@@ -97,14 +97,14 @@ struct PackerNames
|
|||||||
const char* fname;
|
const char* fname;
|
||||||
const char* sname;
|
const char* sname;
|
||||||
};
|
};
|
||||||
Entry names[32];
|
Entry names[64];
|
||||||
size_t names_count;
|
size_t names_count;
|
||||||
const options_t *o;
|
const options_t *o;
|
||||||
PackerNames() : names_count(0), o(NULL) { }
|
PackerNames() : names_count(0), o(NULL) { }
|
||||||
void add(const Packer *p)
|
void add(const Packer *p)
|
||||||
{
|
{
|
||||||
p->assertPacker();
|
p->assertPacker();
|
||||||
assert(names_count < 32);
|
assert(names_count < 64);
|
||||||
names[names_count].fname = p->getFullName(o);
|
names[names_count].fname = p->getFullName(o);
|
||||||
names[names_count].sname = p->getName();
|
names[names_count].sname = p->getName();
|
||||||
names_count++;
|
names_count++;
|
||||||
@@ -205,8 +205,8 @@ void show_help(int verbose)
|
|||||||
con_fprintf(f,"\nCompression tuning options:\n");
|
con_fprintf(f,"\nCompression tuning options:\n");
|
||||||
fg = con_fg(f,fg);
|
fg = con_fg(f,fg);
|
||||||
con_fprintf(f,
|
con_fprintf(f,
|
||||||
" --brute try all available compression methods & filters\n"
|
" --brute try all available compression methods & filters [slow]\n"
|
||||||
" --ultra-brute try even more compression variants\n"
|
" --ultra-brute try even more compression variants [very slow]\n"
|
||||||
"\n");
|
"\n");
|
||||||
fg = con_fg(f,FG_YELLOW);
|
fg = con_fg(f,FG_YELLOW);
|
||||||
con_fprintf(f,"Backup options:\n");
|
con_fprintf(f,"Backup options:\n");
|
||||||
|
|||||||
+34
-3
@@ -159,7 +159,9 @@ void ElfLinker::init(const void *pdata_v, int plen)
|
|||||||
input = new upx_byte[inputlen + 1];
|
input = new upx_byte[inputlen + 1];
|
||||||
unsigned new_len = u_len;
|
unsigned new_len = u_len;
|
||||||
int r = upx_decompress(pdata, c_len, input, &new_len, method, NULL);
|
int r = upx_decompress(pdata, c_len, input, &new_len, method, NULL);
|
||||||
if (r != 0 || new_len != u_len)
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
|
throwOutOfMemoryException();
|
||||||
|
if (r != UPX_E_OK || new_len != u_len)
|
||||||
throwBadLoader();
|
throwBadLoader();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -228,15 +230,20 @@ void ElfLinker::preprocessSymbols(char *start, char *end)
|
|||||||
assert(nextl != NULL);
|
assert(nextl != NULL);
|
||||||
|
|
||||||
if (sscanf(start, "%x g *ABS* %x %1023s",
|
if (sscanf(start, "%x g *ABS* %x %1023s",
|
||||||
&value, &offset, symbol) == 3)
|
&value, &offset, symbol) == 3)
|
||||||
{
|
{
|
||||||
char *s = strstr(start, symbol);
|
char *s = strstr(start, symbol);
|
||||||
s[strlen(symbol)] = 0;
|
s[strlen(symbol)] = 0;
|
||||||
addSymbol(s, "*ABS*", value);
|
addSymbol(s, "*ABS*", value);
|
||||||
assert(offset == 0);
|
assert(offset == 0);
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
else if (sscanf(start, "%x%*8c %1023s %*x %1023s",
|
else if (sscanf(start, "%x%*8c %1023s %*x %1023s",
|
||||||
&offset, section, symbol) == 3)
|
#else
|
||||||
|
// work around broken scanf implementations
|
||||||
|
else if (sscanf(start, "%x%*c%*c%*c%*c%*c%*c%*c%*c %1023s %*x %1023s",
|
||||||
|
#endif
|
||||||
|
&offset, section, symbol) == 3)
|
||||||
{
|
{
|
||||||
char *s = strstr(start, symbol);
|
char *s = strstr(start, symbol);
|
||||||
s[strlen(symbol)] = 0;
|
s[strlen(symbol)] = 0;
|
||||||
@@ -439,6 +446,23 @@ int ElfLinker::addLoader(const char *sname)
|
|||||||
return outputlen;
|
return outputlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ElfLinker::addLoader(const char *s, va_list ap)
|
||||||
|
{
|
||||||
|
while (s != NULL)
|
||||||
|
{
|
||||||
|
addLoader(s);
|
||||||
|
s = va_arg(ap, const char *);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void __acc_cdecl_va ElfLinker::addLoaderVA(const char *s, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, s);
|
||||||
|
addLoader(s, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
int ElfLinker::getSection(const char *sname, int *slen) const
|
int ElfLinker::getSection(const char *sname, int *slen) const
|
||||||
{
|
{
|
||||||
const Section *section = findSection(sname);
|
const Section *section = findSection(sname);
|
||||||
@@ -585,6 +609,7 @@ void ElfLinker::relocate1(const Relocation *rel, upx_byte *,
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// ElfLinker arch subclasses
|
// ElfLinker arch subclasses
|
||||||
// FIXME: add more displacment overflow checks
|
// FIXME: add more displacment overflow checks
|
||||||
|
// FIXME: add support for our special "ignore_reloc_overflow" section
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#if 0 // FIXME
|
#if 0 // FIXME
|
||||||
@@ -778,6 +803,12 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, upx_byte *location,
|
|||||||
return super::relocate1(rel, location, value, type);
|
return super::relocate1(rel, location, value, type);
|
||||||
type += 6;
|
type += 6;
|
||||||
|
|
||||||
|
if (strcmp(type, "ADDR32") == 0)
|
||||||
|
{
|
||||||
|
set_be32(location, get_be32(location) + value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (strncmp(type, "REL", 3) == 0)
|
if (strncmp(type, "REL", 3) == 0)
|
||||||
{
|
{
|
||||||
value -= rel->section->offset + rel->offset;
|
value -= rel->section->offset + rel->offset;
|
||||||
|
|||||||
@@ -83,6 +83,12 @@ public:
|
|||||||
virtual void init(const void *pdata, int plen);
|
virtual void init(const void *pdata, int plen);
|
||||||
//virtual void setLoaderAlignOffset(int phase);
|
//virtual void setLoaderAlignOffset(int phase);
|
||||||
virtual int addLoader(const char *sname);
|
virtual int addLoader(const char *sname);
|
||||||
|
void addLoader(const char *s, va_list ap);
|
||||||
|
#if 1 && (ACC_CC_GNUC >= 0x040100)
|
||||||
|
void __acc_cdecl_va addLoaderVA(const char *s, ...) __attribute__((__sentinel__));
|
||||||
|
#else
|
||||||
|
void __acc_cdecl_va addLoaderVA(const char *s, ...);
|
||||||
|
#endif
|
||||||
virtual Section *addSection(const char *sname, const void *sdata, int slen, unsigned p2align);
|
virtual Section *addSection(const char *sname, const void *sdata, int slen, unsigned p2align);
|
||||||
virtual int getSection(const char *sname, int *slen=NULL) const;
|
virtual int getSection(const char *sname, int *slen=NULL) const;
|
||||||
virtual int getSectionSize(const char *sname) const;
|
virtual int getSectionSize(const char *sname) const;
|
||||||
|
|||||||
@@ -56,6 +56,9 @@ void options_t::reset()
|
|||||||
|
|
||||||
o->backup = -1;
|
o->backup = -1;
|
||||||
o->overlay = -1;
|
o->overlay = -1;
|
||||||
|
o->preserve_mode = true;
|
||||||
|
o->preserve_ownership = true;
|
||||||
|
o->preserve_timestamp = true;
|
||||||
|
|
||||||
o->console = CON_FILE;
|
o->console = CON_FILE;
|
||||||
#if defined(__DJGPP__)
|
#if defined(__DJGPP__)
|
||||||
@@ -553,23 +556,28 @@ static int do_option(int optc, const char *arg)
|
|||||||
|
|
||||||
// method
|
// method
|
||||||
case 702:
|
case 702:
|
||||||
|
opt->method_nrv2b_seen = true;
|
||||||
if (!set_method(M_NRV2B_LE32, -1))
|
if (!set_method(M_NRV2B_LE32, -1))
|
||||||
e_method(M_NRV2B_LE32, opt->level);
|
e_method(M_NRV2B_LE32, opt->level);
|
||||||
break;
|
break;
|
||||||
case 704:
|
case 704:
|
||||||
|
opt->method_nrv2d_seen = true;
|
||||||
if (!set_method(M_NRV2D_LE32, -1))
|
if (!set_method(M_NRV2D_LE32, -1))
|
||||||
e_method(M_NRV2D_LE32, opt->level);
|
e_method(M_NRV2D_LE32, opt->level);
|
||||||
break;
|
break;
|
||||||
case 705:
|
case 705:
|
||||||
|
opt->method_nrv2e_seen = true;
|
||||||
if (!set_method(M_NRV2E_LE32, -1))
|
if (!set_method(M_NRV2E_LE32, -1))
|
||||||
e_method(M_NRV2E_LE32, opt->level);
|
e_method(M_NRV2E_LE32, opt->level);
|
||||||
break;
|
break;
|
||||||
case 721:
|
case 721:
|
||||||
|
opt->method_lzma_seen = true;
|
||||||
opt->all_methods_use_lzma = true;
|
opt->all_methods_use_lzma = true;
|
||||||
if (!set_method(M_LZMA, -1))
|
if (!set_method(M_LZMA, -1))
|
||||||
e_method(M_LZMA, opt->level);
|
e_method(M_LZMA, opt->level);
|
||||||
break;
|
break;
|
||||||
case 722:
|
case 722:
|
||||||
|
opt->method_lzma_seen = false;
|
||||||
opt->all_methods_use_lzma = false;
|
opt->all_methods_use_lzma = false;
|
||||||
if (M_IS_LZMA(opt->method))
|
if (M_IS_LZMA(opt->method))
|
||||||
opt->method = -1;
|
opt->method = -1;
|
||||||
@@ -641,6 +649,15 @@ static int do_option(int optc, const char *arg)
|
|||||||
case 519:
|
case 519:
|
||||||
opt->no_env = true;
|
opt->no_env = true;
|
||||||
break;
|
break;
|
||||||
|
case 526:
|
||||||
|
opt->preserve_mode = false;
|
||||||
|
break;
|
||||||
|
case 527:
|
||||||
|
opt->preserve_ownership = false;
|
||||||
|
break;
|
||||||
|
case 528:
|
||||||
|
opt->preserve_timestamp = false;
|
||||||
|
break;
|
||||||
// compression settings
|
// compression settings
|
||||||
case 520: // --small
|
case 520: // --small
|
||||||
if (opt->small < 0)
|
if (opt->small < 0)
|
||||||
@@ -895,7 +912,10 @@ static const struct mfx_option longopts[] =
|
|||||||
{"force-compress", 0, 0, 'f'}, // and compression of suspicious files
|
{"force-compress", 0, 0, 'f'}, // and compression of suspicious files
|
||||||
{"info", 0, 0, 'i'}, // info mode
|
{"info", 0, 0, 'i'}, // info mode
|
||||||
{"no-env", 0x10, 0, 519}, // no environment var
|
{"no-env", 0x10, 0, 519}, // no environment var
|
||||||
|
{"no-mode", 0x10, 0, 526}, // do not preserve mode (permissions)
|
||||||
|
{"no-owner", 0x10, 0, 527}, // do not preserve ownership
|
||||||
{"no-progress", 0, 0, 516}, // no progress bar
|
{"no-progress", 0, 0, 516}, // no progress bar
|
||||||
|
{"no-time", 0x10, 0, 528}, // do not preserve timestamp
|
||||||
{"output", 0x21, 0, 'o'},
|
{"output", 0x21, 0, 'o'},
|
||||||
{"quiet", 0, 0, 'q'}, // quiet mode
|
{"quiet", 0, 0, 'q'}, // quiet mode
|
||||||
{"silent", 0, 0, 'q'}, // quiet mode
|
{"silent", 0, 0, 'q'}, // quiet mode
|
||||||
|
|||||||
+1
-5
@@ -192,11 +192,7 @@ void MemBuffer::alloc(unsigned size)
|
|||||||
assert((int)total > 0);
|
assert((int)total > 0);
|
||||||
unsigned char *p = (unsigned char *) malloc(total);
|
unsigned char *p = (unsigned char *) malloc(total);
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
throwOutOfMemoryException();
|
||||||
//throw bad_alloc();
|
|
||||||
throw OutOfMemoryException("out of memory");
|
|
||||||
//exit(1);
|
|
||||||
}
|
|
||||||
b_size = size;
|
b_size = size;
|
||||||
if (use_mcheck)
|
if (use_mcheck)
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-2
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
#ifndef __ACC_H_INCLUDED
|
#ifndef __ACC_H_INCLUDED
|
||||||
#define __ACC_H_INCLUDED 1
|
#define __ACC_H_INCLUDED 1
|
||||||
#define ACC_VERSION 20070112L
|
#define ACC_VERSION 20070113L
|
||||||
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
||||||
# define __CYGWIN__ __CYGWIN32__
|
# define __CYGWIN__ __CYGWIN32__
|
||||||
#endif
|
#endif
|
||||||
@@ -1302,7 +1302,7 @@ extern "C" {
|
|||||||
#elif !defined(ACC_ABI_BIG_ENDIAN) && !defined(ACC_ABI_LITTLE_ENDIAN)
|
#elif !defined(ACC_ABI_BIG_ENDIAN) && !defined(ACC_ABI_LITTLE_ENDIAN)
|
||||||
#if (ACC_ARCH_ALPHA) && (ACC_ARCH_CRAY_MPP)
|
#if (ACC_ARCH_ALPHA) && (ACC_ARCH_CRAY_MPP)
|
||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
#elif (ACC_ARCH_ALPHA || ACC_ARCH_AMD64 || ACC_ARCH_CRIS || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430)
|
#elif (ACC_ARCH_ALPHA || ACC_ARCH_AMD64 || ACC_ARCH_BLACKFIN || ACC_ARCH_CRIS || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430)
|
||||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||||
#elif (ACC_ARCH_M68K || ACC_ARCH_S390)
|
#elif (ACC_ARCH_M68K || ACC_ARCH_S390)
|
||||||
# define ACC_ABI_BIG_ENDIAN 1
|
# define ACC_ABI_BIG_ENDIAN 1
|
||||||
|
|||||||
@@ -47,6 +47,10 @@ struct options_t {
|
|||||||
|
|
||||||
// compression options
|
// compression options
|
||||||
int method;
|
int method;
|
||||||
|
bool method_lzma_seen;
|
||||||
|
bool method_nrv2b_seen;
|
||||||
|
bool method_nrv2d_seen;
|
||||||
|
bool method_nrv2e_seen;
|
||||||
int level; // compression level 1..10
|
int level; // compression level 1..10
|
||||||
int filter; // preferred filter from Packer::getFilters()
|
int filter; // preferred filter from Packer::getFilters()
|
||||||
bool ultra_brute;
|
bool ultra_brute;
|
||||||
@@ -65,6 +69,9 @@ struct options_t {
|
|||||||
bool no_env;
|
bool no_env;
|
||||||
bool no_progress;
|
bool no_progress;
|
||||||
const char *output_name;
|
const char *output_name;
|
||||||
|
bool preserve_mode;
|
||||||
|
bool preserve_ownership;
|
||||||
|
bool preserve_timestamp;
|
||||||
int small;
|
int small;
|
||||||
int verbose;
|
int verbose;
|
||||||
bool to_stdout;
|
bool to_stdout;
|
||||||
|
|||||||
+9
-1
@@ -507,6 +507,10 @@ void PackArmPe::buildLoader(const Filter *ft)
|
|||||||
|
|
||||||
void PackArmPe::pack(OutputFile *fo)
|
void PackArmPe::pack(OutputFile *fo)
|
||||||
{
|
{
|
||||||
|
// FIXME: we need to think about better support for --exact
|
||||||
|
if (opt->exact)
|
||||||
|
throwCantPackExact();
|
||||||
|
|
||||||
const unsigned objs = ih.objects;
|
const unsigned objs = ih.objects;
|
||||||
isection = new pe_section_t[objs];
|
isection = new pe_section_t[objs];
|
||||||
fi->seek(pe_offset+sizeof(ih),SEEK_SET);
|
fi->seek(pe_offset+sizeof(ih),SEEK_SET);
|
||||||
@@ -542,10 +546,12 @@ void PackArmPe::pack(OutputFile *fo)
|
|||||||
else if (opt->win32_pe.strip_relocs < 0)
|
else if (opt->win32_pe.strip_relocs < 0)
|
||||||
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x10000);
|
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x10000);
|
||||||
if (opt->win32_pe.strip_relocs)
|
if (opt->win32_pe.strip_relocs)
|
||||||
|
{
|
||||||
if (ih.imagebase < 0x10000)
|
if (ih.imagebase < 0x10000)
|
||||||
throwCantPack("--strip-relocs is not allowed when imagebase < 0x10000");
|
throwCantPack("--strip-relocs is not allowed when imagebase < 0x10000");
|
||||||
else
|
else
|
||||||
ih.flags |= RELOCS_STRIPPED;
|
ih.flags |= RELOCS_STRIPPED;
|
||||||
|
}
|
||||||
|
|
||||||
if (memcmp(isection[0].name,"UPX",3) == 0)
|
if (memcmp(isection[0].name,"UPX",3) == 0)
|
||||||
throwAlreadyPackedByUPX();
|
throwAlreadyPackedByUPX();
|
||||||
@@ -632,7 +638,7 @@ void PackArmPe::pack(OutputFile *fo)
|
|||||||
|
|
||||||
//OutputFile::dump("x1", ibuf, usize);
|
//OutputFile::dump("x1", ibuf, usize);
|
||||||
|
|
||||||
// some checks for broken linkers - disable filter if neccessary
|
// some checks for broken linkers - disable filter if necessary
|
||||||
bool allow_filter = true;
|
bool allow_filter = true;
|
||||||
if (ih.codebase == ih.database
|
if (ih.codebase == ih.database
|
||||||
|| ih.codebase + ih.codesize > ih.imagesize
|
|| ih.codebase + ih.codesize > ih.imagesize
|
||||||
@@ -882,6 +888,8 @@ void PackArmPe::pack(OutputFile *fo)
|
|||||||
oh.codesize = osection[1].vsize;
|
oh.codesize = osection[1].vsize;
|
||||||
oh.codebase = osection[1].vaddr;
|
oh.codebase = osection[1].vaddr;
|
||||||
oh.headersize = osection[1].rawdataptr;
|
oh.headersize = osection[1].rawdataptr;
|
||||||
|
if (rvamin < osection[0].rawdataptr)
|
||||||
|
throwCantPack("object alignment too small");
|
||||||
|
|
||||||
if (opt->win32_pe.strip_relocs && !isdll)
|
if (opt->win32_pe.strip_relocs && !isdll)
|
||||||
oh.flags |= RELOCS_STRIPPED;
|
oh.flags |= RELOCS_STRIPPED;
|
||||||
|
|||||||
+2
-1
@@ -42,7 +42,8 @@ public:
|
|||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_DOS_COM; }
|
virtual int getFormat() const { return UPX_F_DOS_COM; }
|
||||||
virtual const char *getName() const { return "dos/com"; }
|
virtual const char *getName() const { return "dos/com"; }
|
||||||
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.com" : "i286-dos16.com"; }
|
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.com" : "i286-dos16.com"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "i086-dos16.com"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -76,10 +76,11 @@ const int *PackDjgpp2::getFilters() const
|
|||||||
|
|
||||||
|
|
||||||
unsigned PackDjgpp2::findOverlapOverhead(const upx_bytep buf,
|
unsigned PackDjgpp2::findOverlapOverhead(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned range,
|
unsigned range,
|
||||||
unsigned upper_limit) const
|
unsigned upper_limit) const
|
||||||
{
|
{
|
||||||
unsigned o = super::findOverlapOverhead(buf, range, upper_limit);
|
unsigned o = super::findOverlapOverhead(buf, tbuf, range, upper_limit);
|
||||||
o = (o + 0x3ff) &~ 0x1ff;
|
o = (o + 0x3ff) &~ 0x1ff;
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -43,7 +43,7 @@ public:
|
|||||||
virtual int getVersion() const { return 14; }
|
virtual int getVersion() const { return 14; }
|
||||||
virtual int getFormat() const { return UPX_F_DJGPP2_COFF; }
|
virtual int getFormat() const { return UPX_F_DJGPP2_COFF; }
|
||||||
virtual const char *getName() const { return "djgpp2/coff"; }
|
virtual const char *getName() const { return "djgpp2/coff"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i386-dos32.djgpp2"; }
|
virtual const char *getFullName(const options_t *) const { return "i386-dos32.djgpp2.coff"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
@@ -58,6 +58,7 @@ protected:
|
|||||||
virtual int readFileHeader();
|
virtual int readFileHeader();
|
||||||
|
|
||||||
virtual unsigned findOverlapOverhead(const upx_bytep buf,
|
virtual unsigned findOverlapOverhead(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned range = 0,
|
unsigned range = 0,
|
||||||
unsigned upper_limit = ~0u) const;
|
unsigned upper_limit = ~0u) const;
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
|||||||
+4
-1
@@ -29,7 +29,7 @@
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// Use the preprocessor to work around
|
// Use the preprocessor to work around
|
||||||
// - that the types embedding these enums have to be PODs, and
|
// - that the types embedding these enums have to be PODs, and
|
||||||
// deriving from an empty base class (which is the ususal C++ way
|
// deriving from an empty base class (which is the usual C++ way
|
||||||
// of "importing" enums) does not yield a POD any more
|
// of "importing" enums) does not yield a POD any more
|
||||||
// - that older compilers do not correctly perform EBCO
|
// - that older compilers do not correctly perform EBCO
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -68,10 +68,13 @@
|
|||||||
};
|
};
|
||||||
enum { // e_machine
|
enum { // e_machine
|
||||||
EM_386 = 3,
|
EM_386 = 3,
|
||||||
|
EM_MIPS = 8,
|
||||||
|
EM_MIPS_RS3_LE = 10, /* MIPS R3000 little-endian */
|
||||||
EM_PPC = 20,
|
EM_PPC = 20,
|
||||||
EM_PPC64 = 21,
|
EM_PPC64 = 21,
|
||||||
EM_ARM = 40,
|
EM_ARM = 40,
|
||||||
EM_X86_64 = 62
|
EM_X86_64 = 62
|
||||||
|
|
||||||
};
|
};
|
||||||
enum { // e_version
|
enum { // e_version
|
||||||
EV_CURRENT = 1
|
EV_CURRENT = 1
|
||||||
|
|||||||
+202
-59
@@ -53,24 +53,19 @@ PackExe::PackExe(InputFile *f) :
|
|||||||
bele = &N_BELE_RTP::le_policy;
|
bele = &N_BELE_RTP::le_policy;
|
||||||
COMPILE_TIME_ASSERT(sizeof(exe_header_t) == 32);
|
COMPILE_TIME_ASSERT(sizeof(exe_header_t) == 32);
|
||||||
ih_exesize = ih_imagesize = ih_overlay = 0;
|
ih_exesize = ih_imagesize = ih_overlay = 0;
|
||||||
|
stack_for_lzma = 0;
|
||||||
|
use_clear_dirty_stack = false;
|
||||||
|
|
||||||
|
// disable lzma for "--brute" unless explicitly given "--lzma"
|
||||||
|
if (opt->all_methods_use_lzma && !opt->method_lzma_seen)
|
||||||
|
opt->all_methods_use_lzma = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const int *PackExe::getCompressionMethods(int method, int level) const
|
const int *PackExe::getCompressionMethods(int method, int level) const
|
||||||
{
|
{
|
||||||
static const int m_all[] = { M_NRV2B_8, M_NRV2D_8, M_NRV2E_8, M_END };
|
|
||||||
static const int m_nrv2b[] = { M_NRV2B_8, M_END };
|
|
||||||
static const int m_nrv2d[] = { M_NRV2D_8, M_END };
|
|
||||||
static const int m_nrv2e[] = { M_NRV2E_8, M_END };
|
|
||||||
|
|
||||||
if (method == M_ALL) return m_all;
|
|
||||||
if (M_IS_NRV2B(method)) return m_nrv2b;
|
|
||||||
if (M_IS_NRV2D(method)) return m_nrv2d;
|
|
||||||
if (M_IS_NRV2E(method)) return m_nrv2e;
|
|
||||||
bool small = ih_imagesize <= 256*1024;
|
bool small = ih_imagesize <= 256*1024;
|
||||||
if (level == 1 || small)
|
return Packer::getDefaultCompressionMethods_8(method, level, small);
|
||||||
return m_nrv2b;
|
|
||||||
return m_nrv2e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -85,7 +80,7 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
|
|||||||
#define oh (*eh)
|
#define oh (*eh)
|
||||||
// fill new exe header
|
// fill new exe header
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
if (!opt->dos_exe.no_reloc)
|
if (!opt->dos_exe.no_reloc && !M_IS_LZMA(ph.method))
|
||||||
flag |= USEJUMP;
|
flag |= USEJUMP;
|
||||||
if (ih.relocs == 0)
|
if (ih.relocs == 0)
|
||||||
flag |= NORELOC;
|
flag |= NORELOC;
|
||||||
@@ -94,7 +89,16 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
|
|||||||
oh.ident = 'M' + 'Z' * 256;
|
oh.ident = 'M' + 'Z' * 256;
|
||||||
oh.headsize16 = 2;
|
oh.headsize16 = 2;
|
||||||
|
|
||||||
oh.sp = ih.sp > 0x200 ? (unsigned) ih.sp : 0x200;
|
unsigned minsp = 0x200;
|
||||||
|
if (M_IS_LZMA(ph.method))
|
||||||
|
minsp = stack_for_lzma;
|
||||||
|
minsp = ALIGN_UP(minsp, 16u);
|
||||||
|
assert(minsp < 0xff00);
|
||||||
|
if (oh.sp > minsp)
|
||||||
|
minsp = oh.sp;
|
||||||
|
if (minsp < 0xff00 - 2)
|
||||||
|
minsp = ALIGN_UP(minsp, 2u);
|
||||||
|
oh.sp = minsp;
|
||||||
|
|
||||||
unsigned destpara = (ph.u_len + ph.overlap_overhead - ph.c_len + 31) / 16;
|
unsigned destpara = (ph.u_len + ph.overlap_overhead - ph.c_len + 31) / 16;
|
||||||
oh.ss = ph.c_len/16 + destpara;
|
oh.ss = ph.c_len/16 + destpara;
|
||||||
@@ -106,27 +110,118 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
|
|||||||
|
|
||||||
if (oh.ss != ih.ss)
|
if (oh.ss != ih.ss)
|
||||||
flag |= SS;
|
flag |= SS;
|
||||||
if (oh.sp != ih.sp)
|
if (oh.sp != ih.sp || M_IS_LZMA(ph.method))
|
||||||
flag |= SP;
|
flag |= SP;
|
||||||
return flag;
|
return flag;
|
||||||
#undef oh
|
#undef oh
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackExe::addLoaderEpilogue(int flag)
|
||||||
|
{
|
||||||
|
addLoader("EXEMAIN5", NULL);
|
||||||
|
if (relocsize)
|
||||||
|
addLoader(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff) >= relocsize ? "EXENOADJ" : "EXEADJUS",
|
||||||
|
"EXERELO1",
|
||||||
|
has_9a ? "EXEREL9A" : "",
|
||||||
|
"EXERELO2",
|
||||||
|
ih_exesize > 0xFE00 ? "EXEREBIG" : "",
|
||||||
|
"EXERELO3",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
addLoader("EXEMAIN8",
|
||||||
|
device_driver ? "DEVICEEND" : "",
|
||||||
|
(flag & SS) ? "EXESTACK" : "",
|
||||||
|
(flag & SP) ? "EXESTASP" : "",
|
||||||
|
(flag & USEJUMP) ? "EXEJUMPF" : "",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (!(flag & USEJUMP))
|
||||||
|
addLoader(ih.cs ? "EXERCSPO" : "",
|
||||||
|
"EXERETIP",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
linker->defineSymbol("original_cs", ih.cs);
|
||||||
|
linker->defineSymbol("original_ip", ih.ip);
|
||||||
|
linker->defineSymbol("original_sp", ih.sp);
|
||||||
|
linker->defineSymbol("original_ss", ih.ss);
|
||||||
|
linker->defineSymbol("reloc_size",
|
||||||
|
(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff)
|
||||||
|
>= relocsize ? 0 : MAXRELOCS) - relocsize);
|
||||||
|
}
|
||||||
|
|
||||||
void PackExe::buildLoader(const Filter *)
|
void PackExe::buildLoader(const Filter *)
|
||||||
{
|
{
|
||||||
struct exe_header_t tmp_oh;
|
// get flag
|
||||||
int flag = fillExeHeader(&tmp_oh);
|
exe_header_t dummy_oh;
|
||||||
|
int flag = fillExeHeader(&dummy_oh);
|
||||||
|
|
||||||
// prepare loader
|
|
||||||
initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe));
|
initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe));
|
||||||
if (device_driver)
|
|
||||||
addLoader("DEVICEENTRY", NULL);
|
if (M_IS_LZMA(ph.method))
|
||||||
|
{
|
||||||
|
addLoader("LZMA_DEC00",
|
||||||
|
opt->small ? "LZMA_DEC10" : "LZMA_DEC20",
|
||||||
|
"LZMA_DEC30",
|
||||||
|
use_clear_dirty_stack ? "LZMA_DEC31" : "",
|
||||||
|
"LZMA_DEC32",
|
||||||
|
ph.u_len > 0xffff ? "LZMA_DEC33" : "",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
addLoaderEpilogue(flag);
|
||||||
|
defineDecompressorSymbols();
|
||||||
|
const unsigned lsize0 = getLoaderSize();
|
||||||
|
|
||||||
|
// Lzma decompression code starts at ss:0x10, and its size is
|
||||||
|
// lsize bytes. It also needs getDecompressorWrkmemSize() bytes
|
||||||
|
// during uncompression. It also uses some stack, so 0x100
|
||||||
|
// more bytes are allocated
|
||||||
|
stack_for_lzma = 0x10 + lsize0 + getDecompressorWrkmemSize() + 0x100;
|
||||||
|
stack_for_lzma = ALIGN_UP(stack_for_lzma, 16u);
|
||||||
|
|
||||||
|
unsigned clear_dirty_stack_low = 0x10 + lsize0;
|
||||||
|
clear_dirty_stack_low = ALIGN_UP(clear_dirty_stack_low, 2u);
|
||||||
|
if (use_clear_dirty_stack)
|
||||||
|
linker->defineSymbol("clear_dirty_stack_low", clear_dirty_stack_low);
|
||||||
|
|
||||||
|
relocateLoader();
|
||||||
|
const unsigned lsize = getLoaderSize();
|
||||||
|
assert(lsize0 == lsize);
|
||||||
|
MemBuffer loader(lsize);
|
||||||
|
memcpy(loader, getLoader(), lsize);
|
||||||
|
|
||||||
|
MemBuffer compressed_lzma;
|
||||||
|
compressed_lzma.allocForCompression(lsize);
|
||||||
|
unsigned c_len_lzma = MemBuffer::getSizeForCompression(lsize);
|
||||||
|
int r = upx_compress(loader, lsize, compressed_lzma, &c_len_lzma,
|
||||||
|
NULL, M_NRV2B_LE16, 9, NULL, NULL);
|
||||||
|
assert(r == UPX_E_OK); assert(c_len_lzma < lsize);
|
||||||
|
|
||||||
|
info("lzma+relocator code compressed: %u -> %u", lsize, c_len_lzma);
|
||||||
|
// reinit the loader
|
||||||
|
initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe));
|
||||||
|
// prepare loader
|
||||||
|
if (device_driver)
|
||||||
|
addLoader("DEVICEENTRY,LZMADEVICE,DEVICEENTRY2", NULL);
|
||||||
|
|
||||||
|
linker->addSection("COMPRESSED_LZMA", compressed_lzma, c_len_lzma, 0);
|
||||||
|
addLoader("LZMAENTRY,NRV2B160,NRVDDONE,NRVDECO1,NRVGTD00,NRVDECO2",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (device_driver)
|
||||||
|
addLoader("DEVICEENTRY,DEVICEENTRY2", NULL);
|
||||||
|
|
||||||
addLoader("EXEENTRY",
|
addLoader("EXEENTRY",
|
||||||
device_driver ? "DEVICESUB" : "EXESUB",
|
M_IS_LZMA(ph.method) && device_driver ? "LONGSUB" : "SHORTSUB",
|
||||||
"JNCDOCOPY",
|
"JNCDOCOPY",
|
||||||
relocsize ? "EXERELPU" : "",
|
relocsize ? "EXERELPU" : "",
|
||||||
"EXEMAIN4,+G5DXXXX,UPX1HEAD,EXECUTPO",
|
"EXEMAIN4",
|
||||||
|
M_IS_LZMA(ph.method) ? "" : "EXEMAIN4B",
|
||||||
|
"EXEMAIN4C",
|
||||||
|
M_IS_LZMA(ph.method) ? "COMPRESSED_LZMA_START,COMPRESSED_LZMA" : "",
|
||||||
|
"+G5DXXXX,UPX1HEAD,EXECUTPO",
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
if (ph.method == M_NRV2B_8)
|
if (ph.method == M_NRV2B_8)
|
||||||
@@ -165,30 +260,12 @@ void PackExe::buildLoader(const Filter *)
|
|||||||
"NRV2EEX9",
|
"NRV2EEX9",
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
else if M_IS_LZMA(ph.method)
|
||||||
|
return;
|
||||||
else
|
else
|
||||||
throwInternalError("unknown compression method");
|
throwInternalError("unknown compression method");
|
||||||
addLoader("EXEMAIN5", NULL);
|
|
||||||
if (relocsize)
|
addLoaderEpilogue(flag);
|
||||||
addLoader(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff) >= relocsize ? "EXENOADJ" : "EXEADJUS",
|
|
||||||
"EXERELO1",
|
|
||||||
has_9a ? "EXEREL9A" : "",
|
|
||||||
"EXERELO2",
|
|
||||||
ih_exesize > 0xFE00 ? "EXEREBIG" : "",
|
|
||||||
"EXERELO3",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
addLoader("EXEMAIN8",
|
|
||||||
device_driver ? "DEVICEEND" : "",
|
|
||||||
(flag & SS) ? "EXESTACK" : "",
|
|
||||||
(flag & SP) ? "EXESTASP" : "",
|
|
||||||
(flag & USEJUMP) ? "EXEJUMPF" : "",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
if (!(flag & USEJUMP))
|
|
||||||
addLoader(ih.cs ? "EXERCSPO" : "",
|
|
||||||
"EXERETIP",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -324,7 +401,7 @@ unsigned optimize_relocs(upx_byte *b, const unsigned size,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
unsigned offs = addr - es*16;
|
unsigned offs = addr - es*16;
|
||||||
if (offs >= 3 && b[es*16 + offs-3] == 0x9a)
|
if (offs >= 3 && b[es*16 + offs-3] == 0x9a && offs > di + 3)
|
||||||
{
|
{
|
||||||
for (t = di; t < offs-3; t++)
|
for (t = di; t < offs-3; t++)
|
||||||
if (b[es*16+t] == 0x9a && get_le16(b+es*16+t+3) <= seg_high)
|
if (b[es*16+t] == 0x9a && get_le16(b+es*16+t+3) <= seg_high)
|
||||||
@@ -401,7 +478,7 @@ void PackExe::pack(OutputFile *fo)
|
|||||||
for (ic = 0; ic < ih.relocs; ic++)
|
for (ic = 0; ic < ih.relocs; ic++)
|
||||||
{
|
{
|
||||||
unsigned jc = get_le32(wr+4*ic);
|
unsigned jc = get_le32(wr+4*ic);
|
||||||
set_le32(wr+4*ic, (jc>>16)*16+(jc&0xffff));
|
set_le32(wr+4*ic, ((jc>>16)*16+(jc&0xffff)) & 0xfffff);
|
||||||
}
|
}
|
||||||
qsort(wr,ih.relocs,4,le32_compare);
|
qsort(wr,ih.relocs,4,le32_compare);
|
||||||
relocsize = optimize_relocs(ibuf, ih_imagesize, wr, ih.relocs, w, &has_9a);
|
relocsize = optimize_relocs(ibuf, ih_imagesize, wr, ih.relocs, w, &has_9a);
|
||||||
@@ -429,9 +506,12 @@ void PackExe::pack(OutputFile *fo)
|
|||||||
// compress (max_match = 8192)
|
// compress (max_match = 8192)
|
||||||
upx_compress_config_t cconf; cconf.reset();
|
upx_compress_config_t cconf; cconf.reset();
|
||||||
cconf.conf_ucl.max_match = MAXMATCH;
|
cconf.conf_ucl.max_match = MAXMATCH;
|
||||||
|
cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack
|
||||||
compressWithFilters(&ft, 32, &cconf);
|
compressWithFilters(&ft, 32, &cconf);
|
||||||
if (ph.max_run_found + ph.max_match_found > 0x8000)
|
|
||||||
throwCantPack("decompressor limit exceeded, send a bugreport");
|
if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
|
||||||
|
if (ph.max_run_found + ph.max_match_found > 0x8000)
|
||||||
|
throwCantPack("decompressor limit exceeded, send a bugreport");
|
||||||
|
|
||||||
#ifdef TESTING
|
#ifdef TESTING
|
||||||
if (opt->debug.debug_level)
|
if (opt->debug.debug_level)
|
||||||
@@ -497,15 +577,13 @@ void PackExe::pack(OutputFile *fo)
|
|||||||
}
|
}
|
||||||
extra_info[eisize++] = (unsigned char) flag;
|
extra_info[eisize++] = (unsigned char) flag;
|
||||||
|
|
||||||
linker->defineSymbol("original_cs", ih.cs);
|
if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
|
||||||
linker->defineSymbol("original_ip", ih.ip);
|
linker->defineSymbol("bx_magic", 0x7FFF + 0x10 * ((packedsize & 15) + 1));
|
||||||
linker->defineSymbol("original_sp", ih.sp);
|
|
||||||
linker->defineSymbol("original_ss", ih.ss);
|
unsigned decompressor_entry = 1 + (packedsize & 15);
|
||||||
linker->defineSymbol("reloc_size",
|
if (M_IS_LZMA(ph.method))
|
||||||
(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff)
|
decompressor_entry = 0x10;
|
||||||
>= relocsize ? 0 : MAXRELOCS) - relocsize);
|
linker->defineSymbol("decompressor_entry", decompressor_entry);
|
||||||
linker->defineSymbol("bx_magic", 0x7FFF + 0x10 * ((packedsize & 15) + 1));
|
|
||||||
linker->defineSymbol("decompressor_entry", (packedsize & 15) + 1);
|
|
||||||
|
|
||||||
// patch loader
|
// patch loader
|
||||||
if (flag & USEJUMP)
|
if (flag & USEJUMP)
|
||||||
@@ -541,8 +619,10 @@ void PackExe::pack(OutputFile *fo)
|
|||||||
oh.m512 = outputlen & 511;
|
oh.m512 = outputlen & 511;
|
||||||
oh.p512 = (outputlen + 511) >> 9;
|
oh.p512 = (outputlen + 511) >> 9;
|
||||||
|
|
||||||
oh.ip = device_driver ? getLoaderSection("EXEENTRY") - 2 : 0;
|
const char *exeentry = M_IS_LZMA(ph.method) ? "LZMAENTRY" : "EXEENTRY";
|
||||||
|
oh.ip = device_driver ? getLoaderSection(exeentry) - 2 : 0;
|
||||||
|
|
||||||
|
defineDecompressorSymbols();
|
||||||
relocateLoader();
|
relocateLoader();
|
||||||
memcpy(loader, getLoader(), lsize);
|
memcpy(loader, getLoader(), lsize);
|
||||||
patchPackHeader(loader,e_len);
|
patchPackHeader(loader,e_len);
|
||||||
@@ -591,7 +671,7 @@ int PackExe::canUnpack()
|
|||||||
return false;
|
return false;
|
||||||
const off_t off = ih.headsize16 * 16;
|
const off_t off = ih.headsize16 * 16;
|
||||||
fi->seek(off, SEEK_SET);
|
fi->seek(off, SEEK_SET);
|
||||||
bool b = readPackHeader(256);
|
bool b = readPackHeader(4096);
|
||||||
return b && (off + (off_t) ph.c_len <= file_size);
|
return b && (off + (off_t) ph.c_len <= file_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -726,6 +806,69 @@ Linker* PackExe::newLinker() const
|
|||||||
return new ElfLinkerX86();
|
return new ElfLinkerX86();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
memory layout at decompression time
|
||||||
|
===================================
|
||||||
|
|
||||||
|
normal exe
|
||||||
|
----------
|
||||||
|
|
||||||
|
a, at load time
|
||||||
|
|
||||||
|
(e - copying code, C - compressed data, d - decompressor+relocator,
|
||||||
|
x - not specified, U - uncompressed code+data, R uncompressed relocation)
|
||||||
|
|
||||||
|
eeCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCdddd
|
||||||
|
^ CS:0 ^ SS:0
|
||||||
|
|
||||||
|
b, after copying
|
||||||
|
|
||||||
|
xxxxxxxxxxxxxxxCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCdddd
|
||||||
|
^ES:DI=0 ^ DS:SI=0 ^ CS=SS, IP in range 0..0xf
|
||||||
|
|
||||||
|
c, after uncompression
|
||||||
|
|
||||||
|
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUURRdddd
|
||||||
|
^ ES:DI
|
||||||
|
|
||||||
|
device driver
|
||||||
|
-------------
|
||||||
|
|
||||||
|
the file has 2 entry points, CS:0 in device driver mode, and
|
||||||
|
CS:exe_as_device_entry in normal mode. the code in section DEVICEENTRY
|
||||||
|
sets up the same environment for section EXEENTRY, as it would see in normal
|
||||||
|
execution mode.
|
||||||
|
|
||||||
|
lzma uncompression for normal exes
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
(n - nrv2b uncompressor, l - nrv2b compressed lzma + relocator code)
|
||||||
|
|
||||||
|
a, at load time
|
||||||
|
|
||||||
|
nneelllCCCCCCCCCCCCCCCCCCCCCCCCC
|
||||||
|
|
||||||
|
^ CS:0 ^ SS:0
|
||||||
|
|
||||||
|
b, after nrv2b
|
||||||
|
|
||||||
|
nneelllCCCCCCCCCCCCCCCCCCCCCCCCC dddd
|
||||||
|
^ CS:0 ^ SS:0x10
|
||||||
|
|
||||||
|
after this, normal ee code runs
|
||||||
|
|
||||||
|
lzma + device driver
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
(D - device driver adapter)
|
||||||
|
|
||||||
|
a, at load time
|
||||||
|
|
||||||
|
DDnneelllCCCCCCCCCCCCCCCCCCCCCCCCC
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
vi:ts=4:et
|
vi:ts=4:et
|
||||||
|
|||||||
+6
-1
@@ -42,7 +42,8 @@ public:
|
|||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_DOS_EXE; }
|
virtual int getFormat() const { return UPX_F_DOS_EXE; }
|
||||||
virtual const char *getName() const { return "dos/exe"; }
|
virtual const char *getName() const { return "dos/exe"; }
|
||||||
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.exe" : "i286-dos16.exe"; }
|
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.exe" : "i286-dos16.exe"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "i086-dos16.exe"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
@@ -71,6 +72,7 @@ protected:
|
|||||||
virtual int fillExeHeader(struct exe_header_t *) const;
|
virtual int fillExeHeader(struct exe_header_t *) const;
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft);
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const;
|
||||||
|
void addLoaderEpilogue(int flag);
|
||||||
|
|
||||||
struct exe_header_t
|
struct exe_header_t
|
||||||
{
|
{
|
||||||
@@ -110,6 +112,9 @@ protected:
|
|||||||
MINMEM = 16,
|
MINMEM = 16,
|
||||||
MAXMEM = 32
|
MAXMEM = 32
|
||||||
};
|
};
|
||||||
|
|
||||||
|
unsigned stack_for_lzma; // stack size required for lzma
|
||||||
|
bool use_clear_dirty_stack;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+189
-40
@@ -141,6 +141,7 @@ PackLinuxElf64::checkEhdr(Elf64_Ehdr const *ehdr) const
|
|||||||
PackLinuxElf::PackLinuxElf(InputFile *f)
|
PackLinuxElf::PackLinuxElf(InputFile *f)
|
||||||
: super(f), file_image(NULL), dynstr(NULL),
|
: super(f), file_image(NULL), dynstr(NULL),
|
||||||
sz_phdrs(0), sz_elf_hdrs(0), sz_pack2(0),
|
sz_phdrs(0), sz_elf_hdrs(0), sz_pack2(0),
|
||||||
|
lg2_page(12), page_size(1u<<lg2_page),
|
||||||
e_machine(0), ei_class(0), ei_data(0), ei_osabi(0), osabi_note(NULL)
|
e_machine(0), ei_class(0), ei_data(0), ei_osabi(0), osabi_note(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -201,7 +202,7 @@ void PackLinuxElf::defineSymbols(Filter const *)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PackLinuxElf32::PackLinuxElf32(InputFile *f)
|
PackLinuxElf32::PackLinuxElf32(InputFile *f)
|
||||||
: super(f), phdri(NULL),
|
: super(f), phdri(NULL), page_mask(~0u<<lg2_page),
|
||||||
dynseg(NULL), hashtab(NULL), dynsym(NULL)
|
dynseg(NULL), hashtab(NULL), dynsym(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -212,7 +213,7 @@ PackLinuxElf32::~PackLinuxElf32()
|
|||||||
}
|
}
|
||||||
|
|
||||||
PackLinuxElf64::PackLinuxElf64(InputFile *f)
|
PackLinuxElf64::PackLinuxElf64(InputFile *f)
|
||||||
: super(f), phdri(NULL)
|
: super(f), phdri(NULL), page_mask(~0ull<<lg2_page)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,6 +246,12 @@ PackLinuxElf32armBe::getCompressionMethods(int method, int level) const
|
|||||||
return Packer::getDefaultCompressionMethods_8(method, level);
|
return Packer::getDefaultCompressionMethods_8(method, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int const *
|
||||||
|
PackLinuxElf32mipsel::getCompressionMethods(int method, int level) const
|
||||||
|
{
|
||||||
|
return Packer::getDefaultCompressionMethods_le32(method, level);
|
||||||
|
}
|
||||||
|
|
||||||
int const *
|
int const *
|
||||||
PackLinuxElf32ppc::getFilters() const
|
PackLinuxElf32ppc::getFilters() const
|
||||||
{
|
{
|
||||||
@@ -288,6 +295,11 @@ void PackLinuxElf32armBe::updateLoader(OutputFile *fo)
|
|||||||
ARM_updateLoader(fo);
|
ARM_updateLoader(fo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackLinuxElf32mipsel::updateLoader(OutputFile *fo)
|
||||||
|
{
|
||||||
|
ARM_updateLoader(fo); // not ARM specific; (no 32-bit immediates)
|
||||||
|
}
|
||||||
|
|
||||||
void PackLinuxElf32::updateLoader(OutputFile *fo)
|
void PackLinuxElf32::updateLoader(OutputFile *fo)
|
||||||
{
|
{
|
||||||
set_native32(&elfout.ehdr.e_entry, fo->getBytesWritten() +
|
set_native32(&elfout.ehdr.e_entry, fo->getBytesWritten() +
|
||||||
@@ -469,6 +481,8 @@ PackLinuxElf32::buildLinuxLoader(
|
|||||||
unsigned char *tmp = new unsigned char[tmp_len];
|
unsigned char *tmp = new unsigned char[tmp_len];
|
||||||
memset(tmp, 0, tmp_len);
|
memset(tmp, 0, tmp_len);
|
||||||
r = upx_decompress(sizeof(h) + cprLoader, h.sz_cpr, tmp, &tmp_len, h.b_method, NULL);
|
r = upx_decompress(sizeof(h) + cprLoader, h.sz_cpr, tmp, &tmp_len, h.b_method, NULL);
|
||||||
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
|
throwOutOfMemoryException();
|
||||||
printf("\n%d %d: %d %d %d\n", h.b_method, r, h.sz_cpr, h.sz_unc, tmp_len);
|
printf("\n%d %d: %d %d %d\n", h.b_method, r, h.sz_cpr, h.sz_unc, tmp_len);
|
||||||
for (unsigned j=0; j < h.sz_unc; ++j) if (tmp[j]!=uncLoader[j]) {
|
for (unsigned j=0; j < h.sz_unc; ++j) if (tmp[j]!=uncLoader[j]) {
|
||||||
printf("%d: %x %x\n", j, tmp[j], uncLoader[j]);
|
printf("%d: %x %x\n", j, tmp[j], uncLoader[j]);
|
||||||
@@ -560,9 +574,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#define PAGE_MASK (~0u<<12)
|
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
|
||||||
#define PAGE_SIZE (-PAGE_MASK)
|
|
||||||
lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity
|
|
||||||
acc_uint64l_t lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr);
|
acc_uint64l_t lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr);
|
||||||
acc_uint64l_t adrc;
|
acc_uint64l_t adrc;
|
||||||
acc_uint64l_t adrm;
|
acc_uint64l_t adrm;
|
||||||
@@ -572,7 +584,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||||||
unsigned lenm;
|
unsigned lenm;
|
||||||
unsigned lenu;
|
unsigned lenu;
|
||||||
len += (7&-lsize) + lsize;
|
len += (7&-lsize) + lsize;
|
||||||
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*PAGE_SIZE));
|
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
|
||||||
if (is_big) {
|
if (is_big) {
|
||||||
set_native64( &elfout.ehdr.e_entry,
|
set_native64( &elfout.ehdr.e_entry,
|
||||||
get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||||
@@ -581,10 +593,10 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||||||
lo_va_stub = lo_va_user;
|
lo_va_stub = lo_va_user;
|
||||||
adrc = lo_va_stub;
|
adrc = lo_va_stub;
|
||||||
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
||||||
adru = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary
|
adru = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||||
adrx = adru + hlen;
|
adrx = adru + hlen;
|
||||||
lenm = PAGE_SIZE + len;
|
lenm = page_size + len;
|
||||||
lenu = PAGE_SIZE + len;
|
lenu = page_size + len;
|
||||||
cntc = len >> 3; // over-estimate; corrected at runtime
|
cntc = len >> 3; // over-estimate; corrected at runtime
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -592,12 +604,12 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||||||
adrc = adrm;
|
adrc = adrm;
|
||||||
adru = lo_va_stub;
|
adru = lo_va_stub;
|
||||||
adrx = lo_va_stub + hlen;
|
adrx = lo_va_stub + hlen;
|
||||||
lenm = PAGE_SIZE;
|
lenm = page_size;
|
||||||
lenu = PAGE_SIZE + len;
|
lenu = page_size + len;
|
||||||
cntc = 0;
|
cntc = 0;
|
||||||
}
|
}
|
||||||
adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary
|
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||||
adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary
|
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||||
|
|
||||||
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
||||||
|
|
||||||
@@ -614,8 +626,6 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||||||
#undef EI_NIDENT
|
#undef EI_NIDENT
|
||||||
linker->defineSymbol("LENM", lenm); // len for map
|
linker->defineSymbol("LENM", lenm); // len for map
|
||||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||||
#undef PAGE_SIZE
|
|
||||||
#undef PAGE_MASK
|
|
||||||
|
|
||||||
//linker->dumpSymbols(); // debug
|
//linker->dumpSymbols(); // debug
|
||||||
}
|
}
|
||||||
@@ -734,6 +744,19 @@ PackLinuxElf32armLe::buildLoader(Filter const *ft)
|
|||||||
stub_arm_linux_elf_fold, sizeof(stub_arm_linux_elf_fold), ft);
|
stub_arm_linux_elf_fold, sizeof(stub_arm_linux_elf_fold), ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const
|
||||||
|
#include "stub/mipsel.r3000-linux.elf-entry.h"
|
||||||
|
static const
|
||||||
|
#include "stub/mipsel.r3000-linux.elf-fold.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
PackLinuxElf32mipsel::buildLoader(Filter const *ft)
|
||||||
|
{
|
||||||
|
buildLinuxLoader(
|
||||||
|
stub_mipsel_r3000_linux_elf_entry, sizeof(stub_mipsel_r3000_linux_elf_entry),
|
||||||
|
stub_mipsel_r3000_linux_elf_fold, sizeof(stub_mipsel_r3000_linux_elf_fold), ft);
|
||||||
|
}
|
||||||
|
|
||||||
static const
|
static const
|
||||||
#include "stub/powerpc-linux.elf-entry.h"
|
#include "stub/powerpc-linux.elf-entry.h"
|
||||||
static const
|
static const
|
||||||
@@ -993,6 +1016,10 @@ PackLinuxElf32::generateElfHdr(
|
|||||||
cprElfHdr3 *const h3 = (cprElfHdr3 *)&elfout;
|
cprElfHdr3 *const h3 = (cprElfHdr3 *)&elfout;
|
||||||
memcpy(h3, proto, sizeof(*h3)); // reads beyond, but OK
|
memcpy(h3, proto, sizeof(*h3)); // reads beyond, but OK
|
||||||
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi;
|
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi;
|
||||||
|
if (Elf32_Ehdr::EM_MIPS==e_machine) { // MIPS R3000 FIXME
|
||||||
|
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = Elf32_Ehdr::ELFOSABI_NONE;
|
||||||
|
h3->ehdr.e_flags = ehdri.e_flags;
|
||||||
|
}
|
||||||
|
|
||||||
assert(get_native32(&h2->ehdr.e_phoff) == sizeof(Elf32_Ehdr));
|
assert(get_native32(&h2->ehdr.e_phoff) == sizeof(Elf32_Ehdr));
|
||||||
h2->ehdr.e_shoff = 0;
|
h2->ehdr.e_shoff = 0;
|
||||||
@@ -1006,19 +1033,33 @@ PackLinuxElf32::generateElfHdr(
|
|||||||
set_native32(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
set_native32(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
||||||
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
||||||
|
|
||||||
|
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
|
||||||
|
Elf32_Phdr const *phdr = phdri;
|
||||||
|
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||||
|
if (phdr->PT_LOAD32 == get_native32(&phdr->p_type)) {
|
||||||
|
unsigned x = phdr->p_align >> lg2_page;
|
||||||
|
while (x>>=1) {
|
||||||
|
++lg2_page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
page_size = 1u<<lg2_page;
|
||||||
|
page_mask = ~0u<<lg2_page;
|
||||||
|
for (unsigned j=0; j < 3; ++j) {
|
||||||
|
set_native32(&h3->phdr[j].p_align, page_size);
|
||||||
|
}
|
||||||
|
|
||||||
// Info for OS kernel to set the brk()
|
// Info for OS kernel to set the brk()
|
||||||
if (brka) {
|
if (brka) {
|
||||||
#define PAGE_MASK (~0u<<12)
|
|
||||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
|
||||||
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
||||||
set_native32(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
set_native32(&h2->phdr[1].p_offset, ~page_mask & brkb);
|
||||||
set_native32(&h2->phdr[1].p_vaddr, brkb);
|
set_native32(&h2->phdr[1].p_vaddr, brkb);
|
||||||
set_native32(&h2->phdr[1].p_paddr, brkb);
|
set_native32(&h2->phdr[1].p_paddr, brkb);
|
||||||
h2->phdr[1].p_filesz = 0;
|
h2->phdr[1].p_filesz = 0;
|
||||||
h2->phdr[1].p_memsz = 0;
|
h2->phdr[1].p_memsz = 0;
|
||||||
set_native32(&h2->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
|
set_native32(&h2->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
|
||||||
#undef PAGE_MASK
|
|
||||||
}
|
}
|
||||||
if (ph.format==getFormat()) {
|
if (ph.format==getFormat()) {
|
||||||
assert(2==get_native16(&h2->ehdr.e_phnum));
|
assert(2==get_native16(&h2->ehdr.e_phnum));
|
||||||
@@ -1057,16 +1098,14 @@ PackOpenBSDElf32x86::generateElfHdr(
|
|||||||
set_native32(&h3->phdr[0].p_filesz, sizeof(*h3)+sizeof(elfnote)); // + identsize;
|
set_native32(&h3->phdr[0].p_filesz, sizeof(*h3)+sizeof(elfnote)); // + identsize;
|
||||||
h3->phdr[0].p_memsz = h3->phdr[0].p_filesz;
|
h3->phdr[0].p_memsz = h3->phdr[0].p_filesz;
|
||||||
|
|
||||||
#define PAGE_MASK (~0u<<12)
|
unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
|
||||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
|
||||||
set_native32(&h3->phdr[1].p_type, PT_LOAD32); // be sure
|
set_native32(&h3->phdr[1].p_type, PT_LOAD32); // be sure
|
||||||
set_native32(&h3->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
set_native32(&h3->phdr[1].p_offset, ~page_mask & brkb);
|
||||||
set_native32(&h3->phdr[1].p_vaddr, brkb);
|
set_native32(&h3->phdr[1].p_vaddr, brkb);
|
||||||
set_native32(&h3->phdr[1].p_paddr, brkb);
|
set_native32(&h3->phdr[1].p_paddr, brkb);
|
||||||
h3->phdr[1].p_filesz = 0;
|
h3->phdr[1].p_filesz = 0;
|
||||||
h3->phdr[1].p_memsz = 0;
|
h3->phdr[1].p_memsz = 0;
|
||||||
set_native32(&h3->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
|
set_native32(&h3->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
|
||||||
#undef PAGE_MASK
|
|
||||||
|
|
||||||
set_native32(&h3->phdr[2].p_type, Elf32_Phdr::PT_NOTE);
|
set_native32(&h3->phdr[2].p_type, Elf32_Phdr::PT_NOTE);
|
||||||
set_native32(&h3->phdr[2].p_offset, note_offset);
|
set_native32(&h3->phdr[2].p_offset, note_offset);
|
||||||
@@ -1118,19 +1157,33 @@ PackLinuxElf64::generateElfHdr(
|
|||||||
set_native64(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
set_native64(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
||||||
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
||||||
|
|
||||||
|
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
|
||||||
|
Elf64_Phdr const *phdr = phdri;
|
||||||
|
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||||
|
if (phdr->PT_LOAD64 == get_native64(&phdr->p_type)) {
|
||||||
|
unsigned x = phdr->p_align >> lg2_page;
|
||||||
|
while (x>>=1) {
|
||||||
|
++lg2_page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
page_size = 1u <<lg2_page;
|
||||||
|
page_mask = ~0ull<<lg2_page;
|
||||||
|
for (unsigned j=0; j < 3; ++j) {
|
||||||
|
set_native64(&h3->phdr[j].p_align, page_size);
|
||||||
|
}
|
||||||
|
|
||||||
// Info for OS kernel to set the brk()
|
// Info for OS kernel to set the brk()
|
||||||
if (brka) {
|
if (brka) {
|
||||||
#define PAGE_MASK (~0ul<<12)
|
|
||||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
|
||||||
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
||||||
set_native64(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
set_native64(&h2->phdr[1].p_offset, ~page_mask & brkb);
|
||||||
set_native64(&h2->phdr[1].p_vaddr, brkb);
|
set_native64(&h2->phdr[1].p_vaddr, brkb);
|
||||||
set_native64(&h2->phdr[1].p_paddr, brkb);
|
set_native64(&h2->phdr[1].p_paddr, brkb);
|
||||||
h2->phdr[1].p_filesz = 0;
|
h2->phdr[1].p_filesz = 0;
|
||||||
h2->phdr[1].p_memsz = 0;
|
h2->phdr[1].p_memsz = 0;
|
||||||
set_native32(&h2->phdr[1].p_flags, Elf64_Phdr::PF_R | Elf64_Phdr::PF_W);
|
set_native32(&h2->phdr[1].p_flags, Elf64_Phdr::PF_R | Elf64_Phdr::PF_W);
|
||||||
#undef PAGE_MASK
|
|
||||||
}
|
}
|
||||||
if (ph.format==getFormat()) {
|
if (ph.format==getFormat()) {
|
||||||
assert(2==get_native16(&h2->ehdr.e_phnum));
|
assert(2==get_native16(&h2->ehdr.e_phnum));
|
||||||
@@ -1187,6 +1240,14 @@ void PackLinuxElf32armBe::pack1(OutputFile *fo, Filter &ft)
|
|||||||
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
|
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackLinuxElf32mipsel::pack1(OutputFile *fo, Filter &ft)
|
||||||
|
{
|
||||||
|
super::pack1(fo, ft);
|
||||||
|
cprElfHdr3 h3;
|
||||||
|
memcpy(&h3, stub_mipsel_r3000_linux_elf_fold, sizeof(Elf32_Ehdr) + 2*sizeof(Elf32_Phdr));
|
||||||
|
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
|
||||||
|
}
|
||||||
|
|
||||||
void PackLinuxElf32ppc::pack1(OutputFile *fo, Filter &ft)
|
void PackLinuxElf32ppc::pack1(OutputFile *fo, Filter &ft)
|
||||||
{
|
{
|
||||||
super::pack1(fo, ft);
|
super::pack1(fo, ft);
|
||||||
@@ -1443,12 +1504,17 @@ PackLinuxElf32armLe::getFilters() const
|
|||||||
return ARM_getFilters(false);
|
return ARM_getFilters(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int *
|
||||||
|
PackLinuxElf32mipsel::getFilters() const
|
||||||
|
{
|
||||||
|
static const int f_none[] = { FT_END };
|
||||||
|
return f_none;
|
||||||
|
}
|
||||||
|
|
||||||
void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
|
void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
|
||||||
{
|
{
|
||||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||||
|
|
||||||
#define PAGE_MASK (~0u<<12)
|
|
||||||
#define PAGE_SIZE (-PAGE_MASK)
|
|
||||||
lsize = /*getLoaderSize()*/ 4 * 1024; // upper bound; avoid circularity
|
lsize = /*getLoaderSize()*/ 4 * 1024; // upper bound; avoid circularity
|
||||||
unsigned const lo_va_user = 0x8000; // XXX
|
unsigned const lo_va_user = 0x8000; // XXX
|
||||||
unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr);
|
unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr);
|
||||||
@@ -1465,17 +1531,15 @@ void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
|
|||||||
lo_va_stub = lo_va_user;
|
lo_va_stub = lo_va_user;
|
||||||
adrc = lo_va_stub;
|
adrc = lo_va_stub;
|
||||||
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
||||||
adrx = hlen + (PAGE_MASK & (~PAGE_MASK + adrm)); // round up to page boundary
|
adrx = hlen + (page_mask & (~page_mask + adrm)); // round up to page boundary
|
||||||
}
|
}
|
||||||
adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary
|
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||||
adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary
|
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||||
|
|
||||||
linker->defineSymbol("CPR0", 4+ linker->getSymbolOffset("cpr0"));
|
linker->defineSymbol("CPR0", 4+ linker->getSymbolOffset("cpr0"));
|
||||||
linker->defineSymbol("LENF", 4+ linker->getSymbolOffset("end_decompress"));
|
linker->defineSymbol("LENF", 4+ linker->getSymbolOffset("end_decompress"));
|
||||||
|
|
||||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||||
#undef PAGE_SIZE
|
|
||||||
#undef PAGE_MASK
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackLinuxElf32armLe::defineSymbols(Filter const *ft)
|
void PackLinuxElf32armLe::defineSymbols(Filter const *ft)
|
||||||
@@ -1488,6 +1552,78 @@ void PackLinuxElf32armBe::defineSymbols(Filter const *ft)
|
|||||||
ARM_defineSymbols(ft);
|
ARM_defineSymbols(ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackLinuxElf32mipsel::defineSymbols(Filter const * /*ft*/)
|
||||||
|
{
|
||||||
|
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||||
|
|
||||||
|
// We want to know if compressed data, plus stub, plus a couple pages,
|
||||||
|
// will fit below the uncompressed program in memory. But we don't
|
||||||
|
// know the final total compressed size yet, so use the uncompressed
|
||||||
|
// size (total over all PT_LOAD32) as an upper bound.
|
||||||
|
unsigned len = 0;
|
||||||
|
unsigned lo_va_user = ~0u; // infinity
|
||||||
|
for (int j= get_native16(&ehdri.e_phnum); --j>=0; ) {
|
||||||
|
if (PT_LOAD32 == get_native32(&phdri[j].p_type)) {
|
||||||
|
len += (unsigned)get_native32(&phdri[j].p_filesz);
|
||||||
|
unsigned const va = get_native32(&phdri[j].p_vaddr);
|
||||||
|
if (va < lo_va_user) {
|
||||||
|
lo_va_user = va;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
|
||||||
|
unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr);
|
||||||
|
unsigned adrc;
|
||||||
|
unsigned adrm;
|
||||||
|
unsigned adru;
|
||||||
|
unsigned adrx;
|
||||||
|
unsigned cntc;
|
||||||
|
unsigned lenm;
|
||||||
|
unsigned lenu;
|
||||||
|
len += (7&-lsize) + lsize;
|
||||||
|
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
|
||||||
|
if (is_big) {
|
||||||
|
set_native32( &elfout.ehdr.e_entry,
|
||||||
|
get_native32(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||||
|
set_native32(&elfout.phdr[0].p_vaddr, lo_va_user);
|
||||||
|
set_native32(&elfout.phdr[0].p_paddr, lo_va_user);
|
||||||
|
lo_va_stub = lo_va_user;
|
||||||
|
adrc = lo_va_stub;
|
||||||
|
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
||||||
|
adru = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||||
|
adrx = adru + hlen;
|
||||||
|
lenm = page_size + len;
|
||||||
|
lenu = page_size + len;
|
||||||
|
cntc = len >> 3; // over-estimate; corrected at runtime
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
adrm = lo_va_stub + len;
|
||||||
|
adrc = adrm;
|
||||||
|
adru = lo_va_stub;
|
||||||
|
adrx = lo_va_stub + hlen;
|
||||||
|
lenm = page_size;
|
||||||
|
lenu = page_size + len;
|
||||||
|
cntc = 0;
|
||||||
|
}
|
||||||
|
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||||
|
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||||
|
|
||||||
|
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
||||||
|
|
||||||
|
// For actual moving, we need the true count, which depends on sz_pack2
|
||||||
|
// and is not yet known. So the runtime stub detects "no move"
|
||||||
|
// if adrm==adrc, and otherwise uses actual sz_pack2 to compute cntc.
|
||||||
|
//linker->defineSymbol("CNTC", cntc); // count for copy
|
||||||
|
|
||||||
|
linker->defineSymbol("ADRC", adrc); // addr for copy
|
||||||
|
linker->defineSymbol("LENU", lenu); // len for unmap
|
||||||
|
linker->defineSymbol("ADRU", adru); // addr for unmap
|
||||||
|
linker->defineSymbol("LENM", lenm); // len for map
|
||||||
|
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||||
|
|
||||||
|
//linker->dumpSymbols(); // debug
|
||||||
|
}
|
||||||
|
|
||||||
void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
|
void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
|
||||||
{
|
{
|
||||||
overlay_offset = sz_elf_hdrs + sizeof(linfo);
|
overlay_offset = sz_elf_hdrs + sizeof(linfo);
|
||||||
@@ -1502,10 +1638,8 @@ void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
|
|||||||
// tries to make .bss, which requires PF_W.
|
// tries to make .bss, which requires PF_W.
|
||||||
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
|
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
|
||||||
#if 0 /*{*/
|
#if 0 /*{*/
|
||||||
#define PAGE_MASK (~0u<<12)
|
|
||||||
// pre-calculate for benefit of runtime disappearing act via munmap()
|
// pre-calculate for benefit of runtime disappearing act via munmap()
|
||||||
set_native32(&elfout.phdr[0].p_memsz, PAGE_MASK & (~PAGE_MASK + len));
|
set_native32(&elfout.phdr[0].p_memsz, page_mask & (~page_mask + len));
|
||||||
#undef PAGE_MASK
|
|
||||||
#else /*}{*/
|
#else /*}{*/
|
||||||
set_native32(&elfout.phdr[0].p_memsz, len);
|
set_native32(&elfout.phdr[0].p_memsz, len);
|
||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
@@ -1552,10 +1686,8 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft)
|
|||||||
// tries to make .bss, which requires PF_W.
|
// tries to make .bss, which requires PF_W.
|
||||||
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
|
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
|
||||||
#if 0 /*{*/
|
#if 0 /*{*/
|
||||||
#define PAGE_MASK (~0u<<12)
|
|
||||||
// pre-calculate for benefit of runtime disappearing act via munmap()
|
// pre-calculate for benefit of runtime disappearing act via munmap()
|
||||||
set_native64(&elfout.phdr[0].p_memsz, PAGE_MASK & (~PAGE_MASK + len));
|
set_native64(&elfout.phdr[0].p_memsz, page_mask & (~page_mask + len));
|
||||||
#undef PAGE_MASK
|
|
||||||
#else /*}{*/
|
#else /*}{*/
|
||||||
set_native64(&elfout.phdr[0].p_memsz, len);
|
set_native64(&elfout.phdr[0].p_memsz, len);
|
||||||
#endif /*}*/
|
#endif /*}*/
|
||||||
@@ -1873,11 +2005,28 @@ PackLinuxElf32armLe::~PackLinuxElf32armLe()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PackLinuxElf32mipsel::PackLinuxElf32mipsel(InputFile *f) : super(f)
|
||||||
|
{
|
||||||
|
e_machine = Elf32_Ehdr::EM_MIPS;
|
||||||
|
ei_class = Elf32_Ehdr::ELFCLASS32;
|
||||||
|
ei_data = Elf32_Ehdr::ELFDATA2LSB;
|
||||||
|
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
|
||||||
|
}
|
||||||
|
|
||||||
|
PackLinuxElf32mipsel::~PackLinuxElf32mipsel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Linker* PackLinuxElf32armLe::newLinker() const
|
Linker* PackLinuxElf32armLe::newLinker() const
|
||||||
{
|
{
|
||||||
return new ElfLinkerArmLE();
|
return new ElfLinkerArmLE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Linker* PackLinuxElf32mipsel::newLinker() const
|
||||||
|
{
|
||||||
|
return new ElfLinkerMipsLE();
|
||||||
|
}
|
||||||
|
|
||||||
PackLinuxElf32armBe::PackLinuxElf32armBe(InputFile *f) : super(f)
|
PackLinuxElf32armBe::PackLinuxElf32armBe(InputFile *f) : super(f)
|
||||||
{
|
{
|
||||||
e_machine = Elf32_Ehdr::EM_ARM;
|
e_machine = Elf32_Ehdr::EM_ARM;
|
||||||
|
|||||||
+28
-4
@@ -70,6 +70,8 @@ protected:
|
|||||||
unsigned sz_phdrs; // sizeof Phdr[]
|
unsigned sz_phdrs; // sizeof Phdr[]
|
||||||
unsigned sz_elf_hdrs; // all Elf headers
|
unsigned sz_elf_hdrs; // all Elf headers
|
||||||
unsigned sz_pack2; // after pack2(), before loader
|
unsigned sz_pack2; // after pack2(), before loader
|
||||||
|
unsigned lg2_page; // log2(PAGE_SIZE)
|
||||||
|
unsigned page_size; // 1u<<lg2_page
|
||||||
|
|
||||||
unsigned short e_machine;
|
unsigned short e_machine;
|
||||||
unsigned char ei_class;
|
unsigned char ei_class;
|
||||||
@@ -126,6 +128,7 @@ protected:
|
|||||||
protected:
|
protected:
|
||||||
Elf32_Ehdr ehdri; // from input file
|
Elf32_Ehdr ehdri; // from input file
|
||||||
Elf32_Phdr *phdri; // for input file
|
Elf32_Phdr *phdri; // for input file
|
||||||
|
unsigned page_mask; // AND clears the offset-within-page
|
||||||
|
|
||||||
Elf32_Dyn const *dynseg; // from PT_DYNAMIC
|
Elf32_Dyn const *dynseg; // from PT_DYNAMIC
|
||||||
unsigned int const *hashtab; // from DT_HASH
|
unsigned int const *hashtab; // from DT_HASH
|
||||||
@@ -211,6 +214,7 @@ protected:
|
|||||||
protected:
|
protected:
|
||||||
Elf64_Ehdr ehdri; // from input file
|
Elf64_Ehdr ehdri; // from input file
|
||||||
Elf64_Phdr *phdri; // for input file
|
Elf64_Phdr *phdri; // for input file
|
||||||
|
acc_uint64l_t page_mask; // AND clears the offset-within-page
|
||||||
|
|
||||||
struct cprElfHdr1 {
|
struct cprElfHdr1 {
|
||||||
Elf64_Ehdr ehdr;
|
Elf64_Ehdr ehdr;
|
||||||
@@ -416,8 +420,8 @@ class PackLinuxElf32armLe : public PackLinuxElf32Le
|
|||||||
public:
|
public:
|
||||||
PackLinuxElf32armLe(InputFile *f);
|
PackLinuxElf32armLe(InputFile *f);
|
||||||
virtual ~PackLinuxElf32armLe();
|
virtual ~PackLinuxElf32armLe();
|
||||||
virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMLE; }
|
virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMEL; }
|
||||||
virtual const char *getName() const { return "linux/armLE"; }
|
virtual const char *getName() const { return "linux/armel"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "arm-linux.elf"; }
|
virtual const char *getFullName(const options_t *) const { return "arm-linux.elf"; }
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
@@ -436,8 +440,8 @@ class PackLinuxElf32armBe : public PackLinuxElf32Be
|
|||||||
public:
|
public:
|
||||||
PackLinuxElf32armBe(InputFile *f);
|
PackLinuxElf32armBe(InputFile *f);
|
||||||
virtual ~PackLinuxElf32armBe();
|
virtual ~PackLinuxElf32armBe();
|
||||||
virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMBE; }
|
virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMEB; }
|
||||||
virtual const char *getName() const { return "linux/armBE"; }
|
virtual const char *getName() const { return "linux/armeb"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "armeb-linux.elf"; }
|
virtual const char *getFullName(const options_t *) const { return "armeb-linux.elf"; }
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
@@ -450,6 +454,26 @@ protected:
|
|||||||
virtual void defineSymbols(Filter const *);
|
virtual void defineSymbols(Filter const *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PackLinuxElf32mipsel : public PackLinuxElf32Le
|
||||||
|
{
|
||||||
|
typedef PackLinuxElf32Le super;
|
||||||
|
public:
|
||||||
|
PackLinuxElf32mipsel(InputFile *f);
|
||||||
|
virtual ~PackLinuxElf32mipsel();
|
||||||
|
virtual int getFormat() const { return UPX_F_LINUX_ELF32_MIPSEL; }
|
||||||
|
virtual const char *getName() const { return "linux/mipsel"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "mipsel-linux.elf"; }
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
|
virtual void buildLoader(const Filter *);
|
||||||
|
virtual void updateLoader(OutputFile *);
|
||||||
|
virtual void defineSymbols(Filter const *);
|
||||||
|
};
|
||||||
|
|
||||||
#endif /*} already included */
|
#endif /*} already included */
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -138,7 +138,7 @@ class PackBSDI386 : public PackLinuxI386
|
|||||||
public:
|
public:
|
||||||
PackBSDI386(InputFile *f);
|
PackBSDI386(InputFile *f);
|
||||||
virtual int getFormat() const { return UPX_F_BSD_i386; }
|
virtual int getFormat() const { return UPX_F_BSD_i386; }
|
||||||
virtual const char *getName() const { return "*BSD/386"; }
|
virtual const char *getName() const { return "BSD/386"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i386-bsd.elf.execve"; }
|
virtual const char *getFullName(const options_t *) const { return "i386-bsd.elf.execve"; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
+416
-51
@@ -39,22 +39,34 @@ static const
|
|||||||
static const
|
static const
|
||||||
#include "stub/powerpc-darwin.macho-fold.h"
|
#include "stub/powerpc-darwin.macho-fold.h"
|
||||||
|
|
||||||
PackMachPPC32::PackMachPPC32(InputFile *f) :
|
static const
|
||||||
super(f), n_segment(0), rawmseg(0), msegcmd(0)
|
#include "stub/i386-darwin.macho-entry.h"
|
||||||
|
static const
|
||||||
|
#include "stub/i386-darwin.macho-fold.h"
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
PackMachBase<T>::PackMachBase(InputFile *f, unsigned cputype, unsigned flavor,
|
||||||
|
unsigned count, unsigned size) :
|
||||||
|
super(f), my_cputype(cputype), my_thread_flavor(flavor),
|
||||||
|
my_thread_state_word_count(count), my_thread_command_size(size),
|
||||||
|
n_segment(0), rawmseg(NULL), msegcmd(NULL)
|
||||||
{
|
{
|
||||||
|
MachClass::compileTimeAssertions();
|
||||||
|
bele = N_BELE_CTP::getRTP<BeLePolicy>();
|
||||||
}
|
}
|
||||||
|
|
||||||
PackMachPPC32::~PackMachPPC32()
|
template <class T>
|
||||||
|
PackMachBase<T>::~PackMachBase()
|
||||||
{
|
{
|
||||||
delete [] msegcmd;
|
|
||||||
delete [] rawmseg;
|
delete [] rawmseg;
|
||||||
|
delete [] msegcmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int *PackMachPPC32::getCompressionMethods(int /*method*/, int /*level*/) const
|
template <class T>
|
||||||
|
const int *PackMachBase<T>::getCompressionMethods(int method, int level) const
|
||||||
{
|
{
|
||||||
// There really is no LE bias in M_NRV2E_LE32.
|
// There really is no LE bias.
|
||||||
static const int m_nrv2e[] = { M_NRV2E_LE32, M_END };
|
return Packer::getDefaultCompressionMethods_le32(method, level);
|
||||||
return m_nrv2e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -64,13 +76,25 @@ const int *PackMachPPC32::getFilters() const
|
|||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int const *PackMachI386::getFilters() const
|
||||||
|
{
|
||||||
|
static const int filters[] = { 0x49, FT_END };
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
Linker *PackMachPPC32::newLinker() const
|
Linker *PackMachPPC32::newLinker() const
|
||||||
{
|
{
|
||||||
return new ElfLinkerPpc32;
|
return new ElfLinkerPpc32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Linker *PackMachI386::newLinker() const
|
||||||
|
{
|
||||||
|
return new ElfLinkerX86;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
void
|
void
|
||||||
PackMachPPC32::addStubEntrySections(Filter const *)
|
PackMachBase<T>::addStubEntrySections(Filter const *)
|
||||||
{
|
{
|
||||||
addLoader("MACOS000", NULL);
|
addLoader("MACOS000", NULL);
|
||||||
//addLoader(getDecompressorSections(), NULL);
|
//addLoader(getDecompressorSections(), NULL);
|
||||||
@@ -83,15 +107,79 @@ PackMachPPC32::addStubEntrySections(Filter const *)
|
|||||||
addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ,FOLDEXEC", NULL);
|
addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ,FOLDEXEC", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackMachI386::addStubEntrySections(Filter const *ft)
|
||||||
|
{
|
||||||
|
int const n_mru = ft->n_mru; // FIXME: belongs to filter? packerf?
|
||||||
|
|
||||||
void PackMachPPC32::defineSymbols(Filter const *)
|
// entry to stub
|
||||||
|
addLoader("LEXEC000", NULL);
|
||||||
|
|
||||||
|
if (ft->id) {
|
||||||
|
{ // decompr, unfilter are separate
|
||||||
|
addLoader("LXUNF000", NULL);
|
||||||
|
addLoader("LXUNF002", NULL);
|
||||||
|
if (0x80==(ft->id & 0xF0)) {
|
||||||
|
if (256==n_mru) {
|
||||||
|
addLoader("MRUBYTE0", NULL);
|
||||||
|
}
|
||||||
|
else if (n_mru) {
|
||||||
|
addLoader("LXMRU005", NULL);
|
||||||
|
}
|
||||||
|
if (n_mru) {
|
||||||
|
addLoader("LXMRU006", NULL);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
addLoader("LXMRU007", NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (0x40==(ft->id & 0xF0)) {
|
||||||
|
addLoader("LXUNF008", NULL);
|
||||||
|
}
|
||||||
|
addLoader("LXUNF010", NULL);
|
||||||
|
}
|
||||||
|
if (n_mru) {
|
||||||
|
addLoader("LEXEC009", NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addLoader("LEXEC010", NULL);
|
||||||
|
addLoader(getDecompressorSections(), NULL);
|
||||||
|
addLoader("LEXEC015", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
{ // decompr, unfilter are separate
|
||||||
|
if (0x80!=(ft->id & 0xF0)) {
|
||||||
|
addLoader("LXUNF042", NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addFilter32(ft->id);
|
||||||
|
{ // decompr, unfilter are separate
|
||||||
|
if (0x80==(ft->id & 0xF0)) {
|
||||||
|
if (0==n_mru) {
|
||||||
|
addLoader("LXMRU058", NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addLoader("LXUNF035", NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
addLoader("LEXEC017", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
addLoader("IDENTSTR", NULL);
|
||||||
|
addLoader("LEXEC020", NULL);
|
||||||
|
addLoader("FOLDEXEC", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::defineSymbols(Filter const *)
|
||||||
{
|
{
|
||||||
// empty
|
// empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
void
|
void
|
||||||
PackMachPPC32::buildMachLoader(
|
PackMachBase<T>::buildMachLoader(
|
||||||
upx_byte const *const proto,
|
upx_byte const *const proto,
|
||||||
unsigned const szproto,
|
unsigned const szproto,
|
||||||
upx_byte const *const fold,
|
upx_byte const *const fold,
|
||||||
@@ -142,11 +230,23 @@ PackMachPPC32::buildLoader(const Filter *ft)
|
|||||||
stub_powerpc_darwin_macho_entry, sizeof(stub_powerpc_darwin_macho_entry),
|
stub_powerpc_darwin_macho_entry, sizeof(stub_powerpc_darwin_macho_entry),
|
||||||
stub_powerpc_darwin_macho_fold, sizeof(stub_powerpc_darwin_macho_fold), ft );
|
stub_powerpc_darwin_macho_fold, sizeof(stub_powerpc_darwin_macho_fold), ft );
|
||||||
}
|
}
|
||||||
void PackMachPPC32::patchLoader() { }
|
|
||||||
void PackMachPPC32::updateLoader(OutputFile *) {}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
PackMachPPC32::patchLoaderChecksum()
|
PackMachI386::buildLoader(const Filter *ft)
|
||||||
|
{
|
||||||
|
buildMachLoader(
|
||||||
|
stub_i386_darwin_macho_entry, sizeof(stub_i386_darwin_macho_entry),
|
||||||
|
stub_i386_darwin_macho_fold, sizeof(stub_i386_darwin_macho_fold), ft );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::patchLoader() { }
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::updateLoader(OutputFile *) {}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::patchLoaderChecksum()
|
||||||
{
|
{
|
||||||
unsigned char *const ptr = getLoader();
|
unsigned char *const ptr = getLoader();
|
||||||
l_info *const lp = &linfo;
|
l_info *const lp = &linfo;
|
||||||
@@ -160,8 +260,9 @@ PackMachPPC32::patchLoaderChecksum()
|
|||||||
lp->l_checksum = upx_adler32(ptr, lsize);
|
lp->l_checksum = upx_adler32(ptr, lsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __acc_cdecl_qsort
|
template <class T>
|
||||||
compare_segment_command(void const *const aa, void const *const bb)
|
int __acc_cdecl_qsort
|
||||||
|
PackMachBase<T>::compare_segment_command(void const *const aa, void const *const bb)
|
||||||
{
|
{
|
||||||
Mach_segment_command const *const a = (Mach_segment_command const *)aa;
|
Mach_segment_command const *const a = (Mach_segment_command const *)aa;
|
||||||
Mach_segment_command const *const b = (Mach_segment_command const *)bb;
|
Mach_segment_command const *const b = (Mach_segment_command const *)bb;
|
||||||
@@ -174,8 +275,7 @@ compare_segment_command(void const *const aa, void const *const bb)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void PackMachPPC32::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||||
PackMachPPC32::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
|
||||||
{
|
{
|
||||||
// offset of p_info in compressed file
|
// offset of p_info in compressed file
|
||||||
overlay_offset = sizeof(mhdro) + sizeof(segcmdo) + sizeof(threado) + sizeof(linfo);
|
overlay_offset = sizeof(mhdro) + sizeof(segcmdo) + sizeof(threado) + sizeof(linfo);
|
||||||
@@ -184,31 +284,59 @@ PackMachPPC32::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
|||||||
segcmdo.filesize = fo->getBytesWritten();
|
segcmdo.filesize = fo->getBytesWritten();
|
||||||
segcmdo.vmsize += segcmdo.filesize;
|
segcmdo.vmsize += segcmdo.filesize;
|
||||||
fo->seek(sizeof(mhdro), SEEK_SET);
|
fo->seek(sizeof(mhdro), SEEK_SET);
|
||||||
fo->write(&segcmdo, sizeof(segcmdo));
|
fo->rewrite(&segcmdo, sizeof(segcmdo));
|
||||||
fo->write(&threado, sizeof(threado));
|
fo->rewrite(&threado, sizeof(threado));
|
||||||
fo->write(&linfo, sizeof(linfo));
|
fo->rewrite(&linfo, sizeof(linfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void PackMachI386::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||||
PackMachPPC32::pack3(OutputFile *fo, Filter &ft) // append loader
|
{
|
||||||
|
// offset of p_info in compressed file
|
||||||
|
overlay_offset = sizeof(mhdro) + sizeof(segcmdo) + sizeof(threado) + sizeof(linfo);
|
||||||
|
|
||||||
|
super::pack4(fo, ft);
|
||||||
|
segcmdo.filesize = fo->getBytesWritten();
|
||||||
|
segcmdo.vmsize += segcmdo.filesize;
|
||||||
|
fo->seek(sizeof(mhdro), SEEK_SET);
|
||||||
|
fo->rewrite(&segcmdo, sizeof(segcmdo));
|
||||||
|
fo->rewrite(&threado, sizeof(threado));
|
||||||
|
fo->rewrite(&linfo, sizeof(linfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackMachPPC32::pack3(OutputFile *fo, Filter &ft) // append loader
|
||||||
{
|
{
|
||||||
BE32 disp;
|
BE32 disp;
|
||||||
unsigned const zero = 0;
|
unsigned const zero = 0;
|
||||||
unsigned len = fo->getBytesWritten();
|
unsigned len = fo->getBytesWritten();
|
||||||
fo->write(&zero, 3& (0u-len));
|
fo->write(&zero, 3& (0u-len));
|
||||||
len += (3& (0u-len)) + sizeof(disp);
|
len += (3& (0u-len)) + sizeof(disp);
|
||||||
set_be32(&disp, 4+ len - sz_mach_headers); // 4: sizeof(instruction)
|
disp = 4+ len - sz_mach_headers; // 4: sizeof(instruction)
|
||||||
fo->write(&disp, sizeof(disp));
|
fo->write(&disp, sizeof(disp));
|
||||||
|
|
||||||
threado.state.srr0 = len + segcmdo.vmaddr; /* entry address */
|
threado.state.srr0 = len + segcmdo.vmaddr; /* entry address */
|
||||||
super::pack3(fo, ft);
|
super::pack3(fo, ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackMachI386::pack3(OutputFile *fo, Filter &ft) // append loader
|
||||||
|
{
|
||||||
|
LE32 disp;
|
||||||
|
unsigned const zero = 0;
|
||||||
|
unsigned len = fo->getBytesWritten();
|
||||||
|
fo->write(&zero, 3& (0u-len));
|
||||||
|
len += (3& (0u-len));
|
||||||
|
disp = len - sz_mach_headers;
|
||||||
|
fo->write(&disp, sizeof(disp));
|
||||||
|
|
||||||
|
threado.state.eip = len + sizeof(disp) + segcmdo.vmaddr; /* entry address */
|
||||||
|
super::pack3(fo, ft);
|
||||||
|
}
|
||||||
|
|
||||||
// Determine length of gap between PT_LOAD phdri[k] and closest PT_LOAD
|
// Determine length of gap between PT_LOAD phdri[k] and closest PT_LOAD
|
||||||
// which follows in the file (or end-of-file). Optimize for common case
|
// which follows in the file (or end-of-file). Optimize for common case
|
||||||
// where the PT_LOAD are adjacent ascending by .p_offset. Assume no overlap.
|
// where the PT_LOAD are adjacent ascending by .p_offset. Assume no overlap.
|
||||||
|
|
||||||
unsigned PackMachPPC32::find_SEGMENT_gap(
|
template <class T>
|
||||||
|
unsigned PackMachBase<T>::find_SEGMENT_gap(
|
||||||
unsigned const k
|
unsigned const k
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -216,8 +344,7 @@ unsigned PackMachPPC32::find_SEGMENT_gap(
|
|||||||
|| 0==msegcmd[k].filesize ) {
|
|| 0==msegcmd[k].filesize ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
unsigned const hi = get_native32(&msegcmd[k].fileoff) +
|
unsigned const hi = msegcmd[k].fileoff + msegcmd[k].filesize;
|
||||||
get_native32(&msegcmd[k].filesize);
|
|
||||||
unsigned lo = ph.u_file_size;
|
unsigned lo = ph.u_file_size;
|
||||||
unsigned j = k;
|
unsigned j = k;
|
||||||
for (;;) { // circular search, optimize for adjacent ascending
|
for (;;) { // circular search, optimize for adjacent ascending
|
||||||
@@ -230,7 +357,7 @@ unsigned PackMachPPC32::find_SEGMENT_gap(
|
|||||||
}
|
}
|
||||||
if (Mach_segment_command::LC_SEGMENT==msegcmd[j].cmd
|
if (Mach_segment_command::LC_SEGMENT==msegcmd[j].cmd
|
||||||
&& 0!=msegcmd[j].filesize ) {
|
&& 0!=msegcmd[j].filesize ) {
|
||||||
unsigned const t = get_native32(&msegcmd[j].fileoff);
|
unsigned const t = msegcmd[j].fileoff;
|
||||||
if ((t - hi) < (lo - hi)) {
|
if ((t - hi) < (lo - hi)) {
|
||||||
lo = t;
|
lo = t;
|
||||||
if (hi==lo) {
|
if (hi==lo) {
|
||||||
@@ -242,8 +369,20 @@ unsigned PackMachPPC32::find_SEGMENT_gap(
|
|||||||
return lo - hi;
|
return lo - hi;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
template <class T>
|
||||||
PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft)
|
||||||
|
{
|
||||||
|
PackUnix::pack4(fo, ft); // FIXME super() does not work?
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::pack3(OutputFile *fo, Filter &ft)
|
||||||
|
{
|
||||||
|
PackUnix::pack3(fo, ft); // FIXME super() does not work?
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
||||||
{
|
{
|
||||||
Extent x;
|
Extent x;
|
||||||
unsigned k;
|
unsigned k;
|
||||||
@@ -269,6 +408,17 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
|||||||
uip->ui_pass = 0;
|
uip->ui_pass = 0;
|
||||||
ft.addvalue = 0;
|
ft.addvalue = 0;
|
||||||
|
|
||||||
|
// Packer::compressWithFilters chooses a filter for us, and the stubs
|
||||||
|
// can handle only one filter, and most filters are for executable
|
||||||
|
// instructions. So filter only the largest executable segment.
|
||||||
|
unsigned exe_filesize_max = 0;
|
||||||
|
for (k = 0; k < n_segment; ++k)
|
||||||
|
if (Mach_segment_command::LC_SEGMENT==msegcmd[k].cmd
|
||||||
|
&& 0!=(Mach_segment_command::VM_PROT_EXECUTE & msegcmd[k].initprot)
|
||||||
|
&& exe_filesize_max < msegcmd[k].filesize) {
|
||||||
|
exe_filesize_max = msegcmd[k].filesize;
|
||||||
|
}
|
||||||
|
|
||||||
int nx = 0;
|
int nx = 0;
|
||||||
for (k = 0; k < n_segment; ++k)
|
for (k = 0; k < n_segment; ++k)
|
||||||
if (Mach_segment_command::LC_SEGMENT==msegcmd[k].cmd
|
if (Mach_segment_command::LC_SEGMENT==msegcmd[k].cmd
|
||||||
@@ -280,17 +430,20 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
|||||||
x.offset += delta;
|
x.offset += delta;
|
||||||
x.size -= delta;
|
x.size -= delta;
|
||||||
}
|
}
|
||||||
|
bool const do_filter = (msegcmd[k].filesize==exe_filesize_max)
|
||||||
|
&& 0!=(Mach_segment_command::VM_PROT_EXECUTE & msegcmd[k].initprot);
|
||||||
packExtent(x, total_in, total_out,
|
packExtent(x, total_in, total_out,
|
||||||
((Mach_segment_command::VM_PROT_EXECUTE & msegcmd[k].initprot)
|
(do_filter ? &ft : 0 ), fo, hdr_u_len );
|
||||||
? &ft : 0 ), fo, hdr_u_len );
|
if (do_filter) {
|
||||||
|
exe_filesize_max = 0;
|
||||||
|
}
|
||||||
hdr_u_len = 0;
|
hdr_u_len = 0;
|
||||||
++nx;
|
++nx;
|
||||||
}
|
}
|
||||||
for (k = 0; k < n_segment; ++k) {
|
for (k = 0; k < n_segment; ++k) {
|
||||||
x.size = find_SEGMENT_gap(k);
|
x.size = find_SEGMENT_gap(k);
|
||||||
if (x.size) {
|
if (x.size) {
|
||||||
x.offset = get_native32(&msegcmd[k].fileoff) +
|
x.offset = msegcmd[k].fileoff +msegcmd[k].filesize;
|
||||||
get_native32(&msegcmd[k].filesize);
|
|
||||||
packExtent(x, total_in, total_out, 0, fo);
|
packExtent(x, total_in, total_out, 0, fo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,12 +457,33 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
|||||||
#undef PAGE_SIZE
|
#undef PAGE_SIZE
|
||||||
#define PAGE_MASK (~0u<<12)
|
#define PAGE_MASK (~0u<<12)
|
||||||
#define PAGE_SIZE -PAGE_MASK
|
#define PAGE_SIZE -PAGE_MASK
|
||||||
void
|
|
||||||
PackMachPPC32::pack1(OutputFile *fo, Filter &/*ft*/) // generate executable header
|
void PackMachPPC32::pack1_setup_threado(OutputFile *const fo)
|
||||||
|
{
|
||||||
|
threado.cmd = Mach_segment_command::LC_UNIXTHREAD;
|
||||||
|
threado.cmdsize = sizeof(threado);
|
||||||
|
threado.flavor = my_thread_flavor;
|
||||||
|
threado.count = my_thread_state_word_count;
|
||||||
|
memset(&threado.state, 0, sizeof(threado.state));
|
||||||
|
fo->write(&threado, sizeof(threado));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackMachI386::pack1_setup_threado(OutputFile *const fo)
|
||||||
|
{
|
||||||
|
threado.cmd = Mach_segment_command::LC_UNIXTHREAD;
|
||||||
|
threado.cmdsize = sizeof(threado);
|
||||||
|
threado.flavor = my_thread_flavor;
|
||||||
|
threado.count = my_thread_state_word_count;
|
||||||
|
memset(&threado.state, 0, sizeof(threado.state));
|
||||||
|
fo->write(&threado, sizeof(threado));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void PackMachBase<T>::pack1(OutputFile *const fo, Filter &/*ft*/) // generate executable header
|
||||||
{
|
{
|
||||||
mhdro = mhdri;
|
mhdro = mhdri;
|
||||||
mhdro.ncmds = 2;
|
mhdro.ncmds = 2;
|
||||||
mhdro.sizeofcmds = sizeof(segcmdo) + sizeof(threado);
|
mhdro.sizeofcmds = sizeof(segcmdo) + my_thread_command_size;
|
||||||
mhdro.flags = Mach_header::MH_NOUNDEFS;
|
mhdro.flags = Mach_header::MH_NOUNDEFS;
|
||||||
fo->write(&mhdro, sizeof(mhdro));
|
fo->write(&mhdro, sizeof(mhdro));
|
||||||
|
|
||||||
@@ -329,12 +503,7 @@ PackMachPPC32::pack1(OutputFile *fo, Filter &/*ft*/) // generate executable hea
|
|||||||
segcmdo.flags = 0;
|
segcmdo.flags = 0;
|
||||||
fo->write(&segcmdo, sizeof(segcmdo));
|
fo->write(&segcmdo, sizeof(segcmdo));
|
||||||
|
|
||||||
threado.cmd = Mach_segment_command::LC_UNIXTHREAD;
|
pack1_setup_threado(fo);
|
||||||
threado.cmdsize = sizeof(threado);
|
|
||||||
threado.flavor = Mach_thread_command::PPC_THREAD_STATE;
|
|
||||||
threado.count = Mach_thread_command::PPC_THREAD_STATE_COUNT;
|
|
||||||
memset(&threado.state, 0, sizeof(threado.state));
|
|
||||||
fo->write(&threado, sizeof(threado));
|
|
||||||
sz_mach_headers = fo->getBytesWritten();
|
sz_mach_headers = fo->getBytesWritten();
|
||||||
|
|
||||||
memset((char *)&linfo, 0, sizeof(linfo));
|
memset((char *)&linfo, 0, sizeof(linfo));
|
||||||
@@ -343,9 +512,11 @@ PackMachPPC32::pack1(OutputFile *fo, Filter &/*ft*/) // generate executable hea
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
template <class T>
|
||||||
PackMachPPC32::unpack(OutputFile *fo)
|
void PackMachBase<T>::unpack(OutputFile *fo)
|
||||||
{
|
{
|
||||||
|
overlay_offset = sizeof(mhdro) + sizeof(segcmdo) +
|
||||||
|
my_thread_command_size + sizeof(linfo);
|
||||||
fi->seek(overlay_offset, SEEK_SET);
|
fi->seek(overlay_offset, SEEK_SET);
|
||||||
p_info hbuf;
|
p_info hbuf;
|
||||||
fi->readx(&hbuf, sizeof(hbuf));
|
fi->readx(&hbuf, sizeof(hbuf));
|
||||||
@@ -359,6 +530,8 @@ PackMachPPC32::unpack(OutputFile *fo)
|
|||||||
fi->readx(&bhdr, sizeof(bhdr));
|
fi->readx(&bhdr, sizeof(bhdr));
|
||||||
ph.u_len = get_native32(&bhdr.sz_unc);
|
ph.u_len = get_native32(&bhdr.sz_unc);
|
||||||
ph.c_len = get_native32(&bhdr.sz_cpr);
|
ph.c_len = get_native32(&bhdr.sz_cpr);
|
||||||
|
ph.method = bhdr.b_method;
|
||||||
|
ph.filter = bhdr.b_ftid;
|
||||||
ph.filter_cto = bhdr.b_cto8;
|
ph.filter_cto = bhdr.b_cto8;
|
||||||
|
|
||||||
// Uncompress Macho headers
|
// Uncompress Macho headers
|
||||||
@@ -396,15 +569,14 @@ PackMachPPC32::unpack(OutputFile *fo)
|
|||||||
) {
|
) {
|
||||||
if (Mach_segment_command::LC_SEGMENT==sc->cmd
|
if (Mach_segment_command::LC_SEGMENT==sc->cmd
|
||||||
&& 0!=sc->filesize ) {
|
&& 0!=sc->filesize ) {
|
||||||
unsigned filesize = get_be32(&sc->filesize);
|
unsigned filesize = sc->filesize;
|
||||||
unpackExtent(filesize, fo, total_in, total_out, c_adler, u_adler, false, sizeof(bhdr));
|
unpackExtent(filesize, fo, total_in, total_out, c_adler, u_adler, false, sizeof(bhdr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (unsigned j = 0; j < ncmds; ++j) {
|
for (unsigned j = 0; j < ncmds; ++j) {
|
||||||
unsigned const size = find_SEGMENT_gap(j);
|
unsigned const size = find_SEGMENT_gap(j);
|
||||||
if (size) {
|
if (size) {
|
||||||
unsigned const where = get_native32(&msegcmd[k].fileoff) +
|
unsigned const where = msegcmd[k].fileoff +msegcmd[k].filesize;
|
||||||
get_native32(&msegcmd[k].filesize);
|
|
||||||
if (fo)
|
if (fo)
|
||||||
fo->seek(where, SEEK_SET);
|
fo->seek(where, SEEK_SET);
|
||||||
unpackExtent(size, fo, total_in, total_out,
|
unpackExtent(size, fo, total_in, total_out,
|
||||||
@@ -414,14 +586,14 @@ PackMachPPC32::unpack(OutputFile *fo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
template <class T>
|
||||||
PackMachPPC32::canPack()
|
bool PackMachBase<T>::canPack()
|
||||||
{
|
{
|
||||||
fi->seek(0, SEEK_SET);
|
fi->seek(0, SEEK_SET);
|
||||||
fi->readx(&mhdri, sizeof(mhdri));
|
fi->readx(&mhdri, sizeof(mhdri));
|
||||||
|
|
||||||
if (Mach_header::MH_MAGIC !=mhdri.magic
|
if (Mach_header::MH_MAGIC !=mhdri.magic
|
||||||
|| Mach_header::CPU_TYPE_POWERPC !=mhdri.cputype
|
|| my_cputype !=mhdri.cputype
|
||||||
|| Mach_header::MH_EXECUTE !=mhdri.filetype
|
|| Mach_header::MH_EXECUTE !=mhdri.filetype
|
||||||
)
|
)
|
||||||
return false;
|
return false;
|
||||||
@@ -457,11 +629,204 @@ PackMachPPC32::canPack()
|
|||||||
sz_segment = msegcmd[j].filesize + msegcmd[j].fileoff - msegcmd[0].fileoff;
|
sz_segment = msegcmd[j].filesize + msegcmd[j].fileoff - msegcmd[0].fileoff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// info: currently the header is 36 (32+4) bytes before EOF
|
||||||
|
unsigned char buf[256];
|
||||||
|
fi->seek(-(off_t)sizeof(buf), SEEK_END);
|
||||||
|
fi->readx(buf, sizeof(buf));
|
||||||
|
checkAlreadyPacked(buf, sizeof(buf));
|
||||||
|
|
||||||
// set options
|
// set options
|
||||||
opt->o_unix.blocksize = file_size;
|
opt->o_unix.blocksize = file_size;
|
||||||
return 0 < n_segment;
|
return 0 < n_segment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template class PackMachBase<MachClass_BE32>;
|
||||||
|
template class PackMachBase<MachClass_LE32>;
|
||||||
|
|
||||||
|
|
||||||
|
PackMachFat::PackMachFat(InputFile *f) : super(f)
|
||||||
|
{
|
||||||
|
bele = &N_BELE_RTP::le_policy; // sham
|
||||||
|
}
|
||||||
|
|
||||||
|
PackMachFat::~PackMachFat()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const int *PackMachFat::getCompressionMethods(int /*method*/, int /*level*/) const
|
||||||
|
{
|
||||||
|
static const int m_nrv2e[] = { M_NRV2E_LE32, M_END };
|
||||||
|
return m_nrv2e; // sham
|
||||||
|
}
|
||||||
|
|
||||||
|
const int *PackMachFat::getFilters() const
|
||||||
|
{
|
||||||
|
static const int filters[] = { 0x49, FT_END };
|
||||||
|
return filters; // sham
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackMachFat::pack(OutputFile *fo)
|
||||||
|
{
|
||||||
|
unsigned const in_size = this->file_size;
|
||||||
|
fo->write(&fat_head, sizeof(fat_head.fat) +
|
||||||
|
fat_head.fat.nfat_arch * sizeof(fat_head.arch[0]));
|
||||||
|
unsigned length = 0;
|
||||||
|
for (unsigned j=0; j < fat_head.fat.nfat_arch; ++j) {
|
||||||
|
unsigned base = fo->unset_extent(); // actual length
|
||||||
|
base += ~(~0u<<fat_head.arch[j].align) & (0-base); // align up
|
||||||
|
fo->seek(base, SEEK_SET);
|
||||||
|
fo->set_extent(base, ~0u);
|
||||||
|
|
||||||
|
ph.u_file_size = fat_head.arch[j].size;
|
||||||
|
fi->set_extent(fat_head.arch[j].offset, fat_head.arch[j].size);
|
||||||
|
switch (fat_head.arch[j].cputype) {
|
||||||
|
case PackMachFat::CPU_TYPE_I386: {
|
||||||
|
PackMachI386 packer(fi);
|
||||||
|
packer.initPackHeader();
|
||||||
|
packer.canPack();
|
||||||
|
packer.updatePackHeader();
|
||||||
|
packer.pack(fo);
|
||||||
|
} break;
|
||||||
|
case PackMachFat::CPU_TYPE_POWERPC: {
|
||||||
|
PackMachPPC32 packer(fi);
|
||||||
|
packer.initPackHeader();
|
||||||
|
packer.canPack();
|
||||||
|
packer.updatePackHeader();
|
||||||
|
packer.pack(fo);
|
||||||
|
} break;
|
||||||
|
} // switch cputype
|
||||||
|
fat_head.arch[j].offset = base;
|
||||||
|
length = fo->unset_extent();
|
||||||
|
fat_head.arch[j].size = length - base;
|
||||||
|
}
|
||||||
|
ph.u_file_size = in_size;
|
||||||
|
fi->set_extent(0, in_size);
|
||||||
|
|
||||||
|
fo->seek(0, SEEK_SET);
|
||||||
|
fo->rewrite(&fat_head, sizeof(fat_head.fat) +
|
||||||
|
fat_head.fat.nfat_arch * sizeof(fat_head.arch[0]));
|
||||||
|
fo->set_extent(0, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackMachFat::unpack(OutputFile *fo)
|
||||||
|
{
|
||||||
|
fo->seek(0, SEEK_SET);
|
||||||
|
fo->write(&fat_head, sizeof(fat_head.fat) +
|
||||||
|
fat_head.fat.nfat_arch * sizeof(fat_head.arch[0]));
|
||||||
|
unsigned length;
|
||||||
|
for (unsigned j=0; j < fat_head.fat.nfat_arch; ++j) {
|
||||||
|
unsigned base = fo->unset_extent(); // actual length
|
||||||
|
base += ~(~0u<<fat_head.arch[j].align) & (0-base); // align up
|
||||||
|
fo->seek(base, SEEK_SET);
|
||||||
|
fo->set_extent(base, ~0u);
|
||||||
|
|
||||||
|
ph.u_file_size = fat_head.arch[j].size;
|
||||||
|
fi->set_extent(fat_head.arch[j].offset, fat_head.arch[j].size);
|
||||||
|
switch (fat_head.arch[j].cputype) {
|
||||||
|
case PackMachFat::CPU_TYPE_I386: {
|
||||||
|
PackMachI386 packer(fi);
|
||||||
|
packer.initPackHeader();
|
||||||
|
packer.canUnpack();
|
||||||
|
packer.unpack(fo);
|
||||||
|
} break;
|
||||||
|
case PackMachFat::CPU_TYPE_POWERPC: {
|
||||||
|
PackMachPPC32 packer(fi);
|
||||||
|
packer.initPackHeader();
|
||||||
|
packer.canUnpack();
|
||||||
|
packer.unpack(fo);
|
||||||
|
} break;
|
||||||
|
} // switch cputype
|
||||||
|
fat_head.arch[j].offset = base;
|
||||||
|
length = fo->unset_extent();
|
||||||
|
fat_head.arch[j].size = length - base;
|
||||||
|
}
|
||||||
|
fo->unset_extent();
|
||||||
|
fo->seek(0, SEEK_SET);
|
||||||
|
fo->rewrite(&fat_head, sizeof(fat_head.fat) +
|
||||||
|
fat_head.fat.nfat_arch * sizeof(fat_head.arch[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PackMachFat::canPack()
|
||||||
|
{
|
||||||
|
struct Mach_fat_arch *arch = &fat_head.arch[0];
|
||||||
|
|
||||||
|
fi->readx(&fat_head, sizeof(fat_head));
|
||||||
|
if (Mach_fat_header::FAT_MAGIC!=fat_head.fat.magic
|
||||||
|
|| N_FAT_ARCH < fat_head.fat.nfat_arch) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (unsigned j=0; j < fat_head.fat.nfat_arch; ++j) {
|
||||||
|
fi->set_extent(fat_head.arch[j].offset, fat_head.arch[j].size);
|
||||||
|
switch (arch[j].cputype) {
|
||||||
|
default: return false;
|
||||||
|
case PackMachFat::CPU_TYPE_I386: {
|
||||||
|
PackMachI386 packer(fi);
|
||||||
|
if (!packer.canPack())
|
||||||
|
return false;
|
||||||
|
} break;
|
||||||
|
case PackMachFat::CPU_TYPE_POWERPC: {
|
||||||
|
PackMachPPC32 packer(fi);
|
||||||
|
if (!packer.canPack())
|
||||||
|
return false;
|
||||||
|
} break;
|
||||||
|
} // switch cputype
|
||||||
|
}
|
||||||
|
|
||||||
|
// info: currently the header is 36 (32+4) bytes before EOF
|
||||||
|
unsigned char buf[256];
|
||||||
|
fi->seek(-(off_t)sizeof(buf), SEEK_END);
|
||||||
|
fi->readx(buf, sizeof(buf));
|
||||||
|
checkAlreadyPacked(buf, sizeof(buf));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PackMachFat::canUnpack()
|
||||||
|
{
|
||||||
|
struct Mach_fat_arch *arch = &fat_head.arch[0];
|
||||||
|
|
||||||
|
fi->readx(&fat_head, sizeof(fat_head));
|
||||||
|
if (Mach_fat_header::FAT_MAGIC!=fat_head.fat.magic
|
||||||
|
|| N_FAT_ARCH < fat_head.fat.nfat_arch) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (unsigned j=0; j < fat_head.fat.nfat_arch; ++j) {
|
||||||
|
fi->set_extent(fat_head.arch[j].offset, fat_head.arch[j].size);
|
||||||
|
switch (arch[j].cputype) {
|
||||||
|
default: return false;
|
||||||
|
case PackMachFat::CPU_TYPE_I386: {
|
||||||
|
PackMachI386 packer(fi);
|
||||||
|
if (!packer.canUnpack())
|
||||||
|
return 0;
|
||||||
|
ph.format = packer.getFormat(); // FIXME: copy entire PackHeader
|
||||||
|
} break;
|
||||||
|
case PackMachFat::CPU_TYPE_POWERPC: {
|
||||||
|
PackMachPPC32 packer(fi);
|
||||||
|
if (!packer.canUnpack())
|
||||||
|
return 0;
|
||||||
|
ph.format = packer.getFormat(); // FIXME: copy entire PackHeader
|
||||||
|
} break;
|
||||||
|
} // switch cputype
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackMachFat::buildLoader(const Filter */*ft*/)
|
||||||
|
{
|
||||||
|
assert(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Linker* PackMachFat::newLinker() const
|
||||||
|
{
|
||||||
|
return new ElfLinkerX86; // sham
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackMachFat::list()
|
||||||
|
{
|
||||||
|
assert(false);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
vi:ts=4:et
|
vi:ts=4:et
|
||||||
*/
|
*/
|
||||||
|
|||||||
+449
-114
@@ -29,161 +29,328 @@
|
|||||||
#ifndef __UPX_P_MACHO_H
|
#ifndef __UPX_P_MACHO_H
|
||||||
#define __UPX_P_MACHO_H
|
#define __UPX_P_MACHO_H
|
||||||
|
|
||||||
|
|
||||||
|
struct Mach_fat_header {
|
||||||
|
BE32 magic;
|
||||||
|
enum { // note conflict with java bytecode PackLinuxI386
|
||||||
|
FAT_MAGIC = 0xcafebabe,
|
||||||
|
FAT_MAGIC_SWAB = 0xbebafeca
|
||||||
|
};
|
||||||
|
BE32 nfat_arch; // Number of Mach_fat_arch which follow.
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
struct Mach_fat_arch {
|
||||||
|
BE32 cputype;
|
||||||
|
BE32 cpusubtype;
|
||||||
|
BE32 offset;
|
||||||
|
BE32 size;
|
||||||
|
BE32 align; /* shift count; log base 2 */
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
// Mach Mach Object executable
|
// Mach Mach Object executable; all structures are target-endian
|
||||||
|
// 'otool' is the Mach analog of 'readelf' (convert executable file to ASCII).
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
struct Mach_header {
|
namespace N_Mach {
|
||||||
BE32 magic;
|
|
||||||
enum {
|
// integral types
|
||||||
MH_MAGIC = 0xfeedface
|
template <class TWord, class TXword, class TAddr, class TOff>
|
||||||
};
|
struct MachITypes
|
||||||
BE32 cputype;
|
{
|
||||||
enum {
|
typedef TWord Word;
|
||||||
CPU_TYPE_POWERPC = 18
|
typedef TXword Xword;
|
||||||
};
|
typedef TAddr Addr;
|
||||||
BE32 cpysubtype;
|
typedef TOff Off;
|
||||||
BE32 filetype;
|
};
|
||||||
enum {
|
|
||||||
MH_EXECUTE = 2
|
template <class TMachITypes>
|
||||||
};
|
struct Mach_header
|
||||||
BE32 ncmds;
|
{
|
||||||
BE32 sizeofcmds;
|
typedef typename TMachITypes::Word Word;
|
||||||
BE32 flags;
|
|
||||||
enum {
|
Word magic;
|
||||||
MH_NOUNDEFS = 1
|
Word cputype;
|
||||||
};
|
Word cpysubtype;
|
||||||
|
Word filetype;
|
||||||
|
Word ncmds;
|
||||||
|
Word sizeofcmds;
|
||||||
|
Word flags;
|
||||||
|
#define WANT_MACH_HEADER_ENUM 1
|
||||||
|
#include "p_mach_enum.h"
|
||||||
}
|
}
|
||||||
__attribute_packed;
|
__attribute_packed;
|
||||||
|
|
||||||
struct Mach_segment_command {
|
template <class TMachITypes>
|
||||||
BE32 cmd;
|
struct Mach_header64
|
||||||
enum {
|
{ // only difference is padding to 0 mod 8
|
||||||
LC_SEGMENT = 0x1,
|
typedef typename TMachITypes::Word Word;
|
||||||
LC_THREAD = 0x4,
|
|
||||||
LC_UNIXTHREAD = 0x5,
|
Word magic;
|
||||||
LC_LOAD_DYLINKER = 0xe
|
Word cputype;
|
||||||
};
|
Word cpysubtype;
|
||||||
BE32 cmdsize;
|
Word filetype;
|
||||||
|
Word ncmds;
|
||||||
|
Word sizeofcmds;
|
||||||
|
Word flags;
|
||||||
|
Word reserved; // pad to 0 mod 8
|
||||||
|
#define WANT_MACH_HEADER_ENUM 1
|
||||||
|
#include "p_mach_enum.h"
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
template <class TMachITypes>
|
||||||
|
struct Mach_segment_command
|
||||||
|
{
|
||||||
|
typedef typename TMachITypes::Word Word;
|
||||||
|
typedef typename TMachITypes::Addr Addr;
|
||||||
|
typedef typename TMachITypes::Off Off;
|
||||||
|
|
||||||
|
Word cmd;
|
||||||
|
Word cmdsize;
|
||||||
char segname[16];
|
char segname[16];
|
||||||
BE32 vmaddr;
|
Addr vmaddr;
|
||||||
BE32 vmsize;
|
Addr vmsize;
|
||||||
BE32 fileoff;
|
Off fileoff;
|
||||||
BE32 filesize;
|
Off filesize;
|
||||||
BE32 maxprot;
|
Word maxprot;
|
||||||
enum {
|
Word initprot;
|
||||||
VM_PROT_READ = 1,
|
Word nsects;
|
||||||
VM_PROT_WRITE = 2,
|
Word flags;
|
||||||
VM_PROT_EXECUTE = 4
|
#define WANT_MACH_SEGMENT_ENUM 1
|
||||||
};
|
#include "p_mach_enum.h"
|
||||||
BE32 initprot;
|
|
||||||
BE32 nsects;
|
|
||||||
BE32 flags;
|
|
||||||
}
|
}
|
||||||
__attribute_packed;
|
__attribute_packed;
|
||||||
|
|
||||||
struct Mach_section {
|
template <class TMachITypes>
|
||||||
|
struct Mach_section_command
|
||||||
|
{
|
||||||
|
typedef typename TMachITypes::Word Word;
|
||||||
|
typedef typename TMachITypes::Addr Addr;
|
||||||
|
typedef typename TMachITypes::Off Off;
|
||||||
|
|
||||||
char sectname[16];
|
char sectname[16];
|
||||||
char segname[16];
|
char segname[16];
|
||||||
BE32 addr; /* memory address */
|
Addr addr; /* memory address */
|
||||||
BE32 size; /* size in bytes */
|
Addr size; /* size in bytes */
|
||||||
BE32 offset; /* file offset */
|
Word offset; /* file offset */ // FIXME: 64 bit?
|
||||||
BE32 align; /* power of 2 */
|
Word align; /* power of 2 */
|
||||||
BE32 reloff; /* file offset of relocation entries */
|
Word reloff; /* file offset of relocation entries */
|
||||||
BE32 nreloc; /* number of relocation entries */
|
Word nreloc; /* number of relocation entries */
|
||||||
BE32 flags; /* section type and attributes */
|
Word flags; /* section type and attributes */
|
||||||
enum {
|
Word reserved1;
|
||||||
S_REGULAR = 0,
|
Word reserved2;
|
||||||
S_ZEROFILL,
|
#define WANT_MACH_SECTION_ENUM 1
|
||||||
S_CSTRING_LITERALS,
|
#include "p_mach_enum.h"
|
||||||
S_4BYTE_LITERALS,
|
|
||||||
S_8BYTE_LITERALS,
|
|
||||||
S_LITERAL_POINTERS,
|
|
||||||
S_NON_LAZY_SYMBOL_POINTERS,
|
|
||||||
S_LAZY_SYMBOL_POINTERS,
|
|
||||||
S_SYMBOL_STUBS,
|
|
||||||
S_MOD_INIT_FUNC_POINTERS,
|
|
||||||
S_MOD_TERM_FNC_POINTERS,
|
|
||||||
S_COALESCED
|
|
||||||
};
|
|
||||||
enum {
|
|
||||||
S_ATTR_PURE_INSTRUCTIONS = 0x80000000,
|
|
||||||
S_ATTR_NO_TOC = 0x40000000,
|
|
||||||
S_ATTR_STRIP_STATIC_SYMS = 0x20000000,
|
|
||||||
S_ATTR_SOME_INSTRUCTIONS = 0x00000400,
|
|
||||||
S_ATTR_EXT_RELOC = 0x00000200,
|
|
||||||
S_ATTR_LOC_RELOC = 0x00000100
|
|
||||||
};
|
|
||||||
BE32 reserved1;
|
|
||||||
BE32 reserved2;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
__attribute_packed;
|
__attribute_packed;
|
||||||
|
|
||||||
struct Mach_ppc_thread_state {
|
template <class TMachITypes>
|
||||||
BE32 srr0; /* Instruction address register (PC; entry addr) */
|
struct Mach_ppc_thread_state
|
||||||
BE32 srr1; /* Machine state register (supervisor) */
|
{
|
||||||
BE32 r0, r1, r2, r3, r4, r5, r6, r7;
|
typedef typename TMachITypes::Addr Addr;
|
||||||
BE32 r8, r9,r10,r11,r12,r13,r14,r15;
|
|
||||||
BE32 r16,r17,r18,r19,r20,r21,r22,r23;
|
|
||||||
BE32 r24,r25,r26,r27,r28,r29,r30,r31;
|
|
||||||
|
|
||||||
BE32 cr; /* Condition register */
|
Addr srr0; /* Instruction address register (PC; entry addr) */
|
||||||
BE32 xer; /* User's integer exception register */
|
Addr srr1; /* Machine state register (supervisor) */
|
||||||
BE32 lr; /* Link register */
|
Addr r0, r1, r2, r3, r4, r5, r6, r7;
|
||||||
BE32 ctr; /* Count register */
|
Addr r8, r9,r10,r11,r12,r13,r14,r15;
|
||||||
BE32 mq; /* MQ register (601 only) */
|
Addr r16,r17,r18,r19,r20,r21,r22,r23;
|
||||||
|
Addr r24,r25,r26,r27,r28,r29,r30,r31;
|
||||||
|
|
||||||
BE32 vrsave; /* Vector Save Register */
|
Addr cr; /* Condition register */ // FIXME: Word?
|
||||||
|
Addr xer; /* User's integer exception register */
|
||||||
|
Addr lr; /* Link register */
|
||||||
|
Addr ctr; /* Count register */
|
||||||
|
Addr mq; /* MQ register (601 only) */
|
||||||
|
|
||||||
|
Addr vrsave; /* Vector Save Register */
|
||||||
}
|
}
|
||||||
__attribute_packed;
|
__attribute_packed;
|
||||||
|
|
||||||
struct Mach_thread_command {
|
template <class TMachITypes>
|
||||||
BE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
|
struct Mach_i386_thread_state
|
||||||
BE32 cmdsize; /* total size of this command */
|
{
|
||||||
BE32 flavor;
|
typedef typename TMachITypes::Word Word;
|
||||||
enum {
|
|
||||||
PPC_THREAD_STATE = 1
|
Word eax, ebx, ecx, edx;
|
||||||
};
|
Word edi, esi, ebp;
|
||||||
BE32 count; /* sizeof(following_thread_state)/4 */
|
Word esp, ss;
|
||||||
enum {
|
Word eflags;
|
||||||
PPC_THREAD_STATE_COUNT = sizeof(struct Mach_ppc_thread_state)/4
|
Word eip, cs;
|
||||||
};
|
Word ds, es, fs, gs;
|
||||||
struct Mach_ppc_thread_state state;
|
|
||||||
}
|
}
|
||||||
__attribute_packed;
|
__attribute_packed;
|
||||||
|
|
||||||
|
template <class TMachITypes>
|
||||||
|
struct Mach_i386_new_thread_state
|
||||||
|
{
|
||||||
|
typedef typename TMachITypes::Word Word;
|
||||||
|
|
||||||
|
Word gs, fs, es, ds;
|
||||||
|
Word edi, esi, ebp, esp;
|
||||||
|
Word ebx, edx, ecx, eax;
|
||||||
|
Word eip, cs, efl;
|
||||||
|
Word uesp, ss;
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
} // namespace N_Mach
|
||||||
|
|
||||||
|
namespace N_Mach32 {
|
||||||
|
|
||||||
|
} // namespace N_Mach32
|
||||||
|
|
||||||
|
namespace N_Mach64 {
|
||||||
|
|
||||||
|
template <class TMachITypes>
|
||||||
|
struct Mach_ppc_thread_state64
|
||||||
|
{
|
||||||
|
typedef typename TMachITypes::Word Word;
|
||||||
|
typedef typename TMachITypes::Xword Xword;
|
||||||
|
|
||||||
|
Xword srr0; /* Instruction address register (PC; entry addr) */
|
||||||
|
Xword srr1; /* Machine state register (supervisor) */
|
||||||
|
Xword r0, r1, r2, r3, r4, r5, r6, r7;
|
||||||
|
Xword r8, r9,r10,r11,r12,r13,r14,r15;
|
||||||
|
Xword r16,r17,r18,r19,r20,r21,r22,r23;
|
||||||
|
Xword r24,r25,r26,r27,r28,r29,r30,r31;
|
||||||
|
|
||||||
|
Word cr; /* Condition register */ // FIXME: Xword?
|
||||||
|
Xword xer; /* User's integer exception register */
|
||||||
|
Xword lr; /* Link register */
|
||||||
|
Xword ctr; /* Count register */
|
||||||
|
|
||||||
|
Word vrsave; /* Vector Save Register */
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
} // namespace N_Mach64
|
||||||
|
|
||||||
|
namespace N_Mach {
|
||||||
|
|
||||||
|
template <class TP>
|
||||||
|
struct MachClass_32
|
||||||
|
{
|
||||||
|
typedef TP BeLePolicy;
|
||||||
|
|
||||||
|
// integral types
|
||||||
|
typedef typename TP::U16 U16;
|
||||||
|
typedef typename TP::U32 U32;
|
||||||
|
typedef typename TP::U64 U64;
|
||||||
|
typedef N_Mach::MachITypes<U32, U64, U32, U32> MachITypes;
|
||||||
|
#if (ACC_CC_BORLANDC)
|
||||||
|
typedef U32 Addr;
|
||||||
|
#else
|
||||||
|
typedef typename MachITypes::Addr Addr;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Mach types
|
||||||
|
typedef N_Mach::Mach_header<MachITypes> Mach_header;
|
||||||
|
typedef N_Mach::Mach_segment_command<MachITypes> Mach_segment_command;
|
||||||
|
typedef N_Mach::Mach_section_command<MachITypes> Mach_section_command;
|
||||||
|
typedef N_Mach::Mach_ppc_thread_state<MachITypes> Mach_ppc_thread_state;
|
||||||
|
typedef N_Mach::Mach_i386_thread_state<MachITypes> Mach_i386_thread_state;
|
||||||
|
|
||||||
|
static void compileTimeAssertions() {
|
||||||
|
BeLePolicy::compileTimeAssertions();
|
||||||
|
COMPILE_TIME_ASSERT(sizeof(Addr) == 4)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class TP>
|
||||||
|
struct MachClass_64
|
||||||
|
{
|
||||||
|
typedef TP BeLePolicy;
|
||||||
|
|
||||||
|
// integral types
|
||||||
|
typedef typename TP::U16 U16;
|
||||||
|
typedef typename TP::U32 U32;
|
||||||
|
typedef typename TP::U64 U64;
|
||||||
|
typedef N_Mach::MachITypes<U32, U64, U64, U64> MachITypes;
|
||||||
|
|
||||||
|
// Mach types
|
||||||
|
typedef N_Mach::Mach_header64<MachITypes> Mach_header;
|
||||||
|
typedef N_Mach::Mach_segment_command<MachITypes> Mach_segment_command;
|
||||||
|
typedef N_Mach::Mach_section_command<MachITypes> Mach_section_command;
|
||||||
|
|
||||||
|
static void compileTimeAssertions() {
|
||||||
|
BeLePolicy::compileTimeAssertions();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace N_Mach
|
||||||
|
|
||||||
|
typedef N_Mach::MachClass_32<N_BELE_CTP::HostPolicy> MachClass_Host32;
|
||||||
|
typedef N_Mach::MachClass_64<N_BELE_CTP::HostPolicy> MachClass_Host64;
|
||||||
|
typedef N_Mach::MachClass_32<N_BELE_CTP::BEPolicy> MachClass_BE32;
|
||||||
|
typedef N_Mach::MachClass_64<N_BELE_CTP::BEPolicy> MachClass_BE64;
|
||||||
|
typedef N_Mach::MachClass_32<N_BELE_CTP::LEPolicy> MachClass_LE32;
|
||||||
|
typedef N_Mach::MachClass_64<N_BELE_CTP::LEPolicy> MachClass_LE64;
|
||||||
|
|
||||||
|
// shortcuts
|
||||||
|
typedef MachClass_Host32::Mach_segment_command Mach32_segment_command;
|
||||||
|
typedef MachClass_Host32::Mach_section_command Mach32_section_command;
|
||||||
|
|
||||||
|
typedef MachClass_Host64::Mach_segment_command Mach64_segment_command;
|
||||||
|
typedef MachClass_Host64::Mach_section_command Mach64_section_command;
|
||||||
|
|
||||||
|
typedef MachClass_BE32::Mach_segment_command MachBE32_segment_command;
|
||||||
|
typedef MachClass_BE32::Mach_section_command MachBE32_section_command;
|
||||||
|
|
||||||
|
typedef MachClass_BE64::Mach_segment_command MachBE64_segment_command;
|
||||||
|
typedef MachClass_BE64::Mach_section_command MachBE64_section_command;
|
||||||
|
|
||||||
|
typedef MachClass_LE32::Mach_segment_command MachLE32_segment_command;
|
||||||
|
typedef MachClass_LE32::Mach_section_command MachLE32_section_command;
|
||||||
|
|
||||||
|
typedef MachClass_LE64::Mach_segment_command MachLE64_segment_command;
|
||||||
|
typedef MachClass_LE64::Mach_section_command MachLE64_section_command;
|
||||||
|
|
||||||
|
typedef MachClass_BE32::Mach_ppc_thread_state Mach_ppc_thread_state;
|
||||||
|
typedef MachClass_LE32::Mach_i386_thread_state Mach_i386_thread_state;
|
||||||
#include "p_unix.h"
|
#include "p_unix.h"
|
||||||
|
|
||||||
|
|
||||||
class PackMachPPC32 : public PackUnixBe32
|
template <class TMachClass>
|
||||||
|
class PackMachBase : public PackUnix
|
||||||
{
|
{
|
||||||
typedef PackUnixBe32 super;
|
typedef PackUnix super;
|
||||||
|
protected:
|
||||||
|
typedef TMachClass MachClass;
|
||||||
|
typedef typename MachClass::BeLePolicy BeLePolicy;
|
||||||
|
typedef typename MachClass::MachITypes MachITypes;
|
||||||
|
// integral types
|
||||||
|
typedef typename MachClass::U16 U16;
|
||||||
|
typedef typename MachClass::U32 U32;
|
||||||
|
typedef typename MachClass::U64 U64;
|
||||||
|
typedef typename MachClass::Addr Addr;
|
||||||
|
// Mach types
|
||||||
|
typedef typename MachClass::Mach_header Mach_header;
|
||||||
|
typedef typename MachClass::Mach_segment_command Mach_segment_command;
|
||||||
|
typedef typename MachClass::Mach_section_command Mach_section_command;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PackMachPPC32(InputFile *f);
|
PackMachBase(InputFile *, unsigned cpuid, unsigned t_flavor, unsigned ts_word_cnt, unsigned tc_size);
|
||||||
virtual ~PackMachPPC32();
|
virtual ~PackMachBase();
|
||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_MACH_PPC32; }
|
|
||||||
virtual const char *getName() const { return "Mach/ppc32"; }
|
|
||||||
virtual const char *getFullName(const options_t *) const { return "powerpc-darwin.macho"; }
|
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
|
||||||
|
|
||||||
// called by the generic pack()
|
// called by the generic pack()
|
||||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||||
virtual void pack2(OutputFile *, Filter &); // append compressed data
|
virtual void pack2(OutputFile *, Filter &); // append compressed data
|
||||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
virtual void pack3(OutputFile *, Filter &) = 0; // append loader
|
||||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
virtual void pack4(OutputFile *, Filter &) = 0; // append PackHeader
|
||||||
|
|
||||||
|
virtual void pack1_setup_threado(OutputFile *const fo) = 0;
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo);
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
virtual unsigned find_SEGMENT_gap(unsigned const k);
|
virtual unsigned find_SEGMENT_gap(unsigned const k);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void buildLoader(const Filter *ft);
|
|
||||||
virtual Linker* newLinker() const;
|
|
||||||
virtual void patchLoader();
|
virtual void patchLoader();
|
||||||
virtual void patchLoaderChecksum();
|
virtual void patchLoaderChecksum();
|
||||||
virtual void updateLoader(OutputFile *);
|
virtual void updateLoader(OutputFile *);
|
||||||
@@ -196,6 +363,13 @@ protected:
|
|||||||
virtual void defineSymbols(Filter const *);
|
virtual void defineSymbols(Filter const *);
|
||||||
virtual void addStubEntrySections(Filter const *);
|
virtual void addStubEntrySections(Filter const *);
|
||||||
|
|
||||||
|
static int __acc_cdecl_qsort compare_segment_command(void const *aa, void const *bb);
|
||||||
|
|
||||||
|
unsigned my_cputype;
|
||||||
|
unsigned my_thread_flavor;
|
||||||
|
unsigned my_thread_state_word_count;
|
||||||
|
unsigned my_thread_command_size;
|
||||||
|
|
||||||
unsigned n_segment;
|
unsigned n_segment;
|
||||||
unsigned sz_segment;
|
unsigned sz_segment;
|
||||||
unsigned sz_mach_headers;
|
unsigned sz_mach_headers;
|
||||||
@@ -205,11 +379,172 @@ protected:
|
|||||||
|
|
||||||
Mach_header mhdro;
|
Mach_header mhdro;
|
||||||
Mach_segment_command segcmdo;
|
Mach_segment_command segcmdo;
|
||||||
Mach_thread_command threado;
|
|
||||||
|
struct b_info { // 12-byte header before each compressed block
|
||||||
|
U32 sz_unc; // uncompressed_size
|
||||||
|
U32 sz_cpr; // compressed_size
|
||||||
|
unsigned char b_method; // compression algorithm
|
||||||
|
unsigned char b_ftid; // filter id
|
||||||
|
unsigned char b_cto8; // filter parameter
|
||||||
|
unsigned char b_unused;
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
struct l_info { // 12-byte trailer in header for loader
|
||||||
|
U32 l_checksum;
|
||||||
|
LE32 l_magic;
|
||||||
|
U16 l_lsize;
|
||||||
|
unsigned char l_version;
|
||||||
|
unsigned char l_format;
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
struct p_info { // 12-byte packed program header
|
||||||
|
U32 p_progid;
|
||||||
|
U32 p_filesize;
|
||||||
|
U32 p_blocksize;
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
struct l_info linfo;
|
struct l_info linfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class PackMachPPC32 : public PackMachBase<MachClass_BE32>
|
||||||
|
{
|
||||||
|
typedef PackMachBase<MachClass_BE32> super;
|
||||||
|
|
||||||
|
public:
|
||||||
|
PackMachPPC32(InputFile *f) : super(f, Mach_header::CPU_TYPE_POWERPC,
|
||||||
|
Mach_thread_command::PPC_THREAD_STATE,
|
||||||
|
sizeof(Mach_ppc_thread_state)>>2, sizeof(threado)) { }
|
||||||
|
|
||||||
|
virtual int getFormat() const { return UPX_F_MACH_PPC32; }
|
||||||
|
virtual const char *getName() const { return "Mach/ppc32"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "powerpc-darwin.macho"; }
|
||||||
|
|
||||||
|
virtual acc_uint64l_t get_native64(const void *b) const { return get_be64(b); }
|
||||||
|
virtual unsigned get_native32(const void *b) const { return get_be32(b); }
|
||||||
|
virtual unsigned get_native16(const void *b) const { return get_be16(b); }
|
||||||
|
virtual void set_native64(void *b, acc_uint64l_t v) const { set_be64(b, v); }
|
||||||
|
virtual void set_native32(void *b, unsigned v) const { set_be32(b, v); }
|
||||||
|
virtual void set_native16(void *b, unsigned v) const { set_be16(b, v); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
virtual void pack1_setup_threado(OutputFile *const fo);
|
||||||
|
virtual void pack3(OutputFile *, Filter &); // append loader
|
||||||
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
|
||||||
|
struct Mach_thread_command
|
||||||
|
{
|
||||||
|
BE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
|
||||||
|
BE32 cmdsize; /* total size of this command */
|
||||||
|
BE32 flavor;
|
||||||
|
BE32 count; /* sizeof(following_thread_state)/4 */
|
||||||
|
Mach_ppc_thread_state state;
|
||||||
|
#define WANT_MACH_THREAD_ENUM
|
||||||
|
#include "p_mach_enum.h"
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
Mach_thread_command threado;
|
||||||
|
};
|
||||||
|
|
||||||
|
class PackMachI386 : public PackMachBase<MachClass_LE32>
|
||||||
|
{
|
||||||
|
typedef PackMachBase<MachClass_LE32> super;
|
||||||
|
|
||||||
|
public:
|
||||||
|
PackMachI386(InputFile *f) : super(f, Mach_header::CPU_TYPE_I386,
|
||||||
|
(unsigned)Mach_thread_command::i386_THREAD_STATE,
|
||||||
|
sizeof(Mach_i386_thread_state)>>2, sizeof(threado)) { }
|
||||||
|
|
||||||
|
virtual int getFormat() const { return UPX_F_MACH_i386; }
|
||||||
|
virtual const char *getName() const { return "Mach/i386"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "i386-darwin.macho"; }
|
||||||
|
protected:
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
virtual acc_uint64l_t get_native64(const void *b) const { return get_le64(b); }
|
||||||
|
virtual unsigned get_native32(const void *b) const { return get_le32(b); }
|
||||||
|
virtual unsigned get_native16(const void *b) const { return get_le16(b); }
|
||||||
|
virtual void set_native64(void *b, acc_uint64l_t v) const { set_le64(b, v); }
|
||||||
|
virtual void set_native32(void *b, unsigned v) const { set_le32(b, v); }
|
||||||
|
virtual void set_native16(void *b, unsigned v) const { set_le16(b, v); }
|
||||||
|
|
||||||
|
virtual void pack1_setup_threado(OutputFile *const fo);
|
||||||
|
virtual void pack3(OutputFile *, Filter &); // append loader
|
||||||
|
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
virtual void addStubEntrySections(Filter const *);
|
||||||
|
|
||||||
|
struct Mach_thread_command
|
||||||
|
{
|
||||||
|
LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
|
||||||
|
LE32 cmdsize; /* total size of this command */
|
||||||
|
LE32 flavor;
|
||||||
|
LE32 count; /* sizeof(following_thread_state)/4 */
|
||||||
|
Mach_i386_thread_state state;
|
||||||
|
#define WANT_MACH_THREAD_ENUM
|
||||||
|
#include "p_mach_enum.h"
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
Mach_thread_command threado;
|
||||||
|
};
|
||||||
|
|
||||||
|
class PackMachFat : public Packer
|
||||||
|
{
|
||||||
|
typedef Packer super;
|
||||||
|
public:
|
||||||
|
PackMachFat(InputFile *f);
|
||||||
|
virtual ~PackMachFat();
|
||||||
|
|
||||||
|
virtual int getVersion() const { return 13; }
|
||||||
|
virtual int getFormat() const { return UPX_F_MACH_FAT; }
|
||||||
|
virtual const char *getName() const { return "Mach/fat"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "fat-darwin.macho"; }
|
||||||
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// implementation
|
||||||
|
virtual void pack(OutputFile *fo);
|
||||||
|
virtual void unpack(OutputFile *fo);
|
||||||
|
virtual void list();
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool canPack();
|
||||||
|
virtual int canUnpack();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// loader core
|
||||||
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
|
||||||
|
#if (ACC_CC_BORLANDC)
|
||||||
|
public:
|
||||||
|
#endif
|
||||||
|
enum { N_FAT_ARCH = 5 };
|
||||||
|
protected:
|
||||||
|
struct Fat_head {
|
||||||
|
struct Mach_fat_header fat;
|
||||||
|
struct Mach_fat_arch arch[N_FAT_ARCH];
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
Fat_head fat_head;
|
||||||
|
|
||||||
|
// UI handler
|
||||||
|
UiPacker *uip;
|
||||||
|
|
||||||
|
// linker
|
||||||
|
Linker *linker;
|
||||||
|
#define WANT_MACH_HEADER_ENUM
|
||||||
|
#include "p_mach_enum.h"
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* already included */
|
#endif /* already included */
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,108 @@
|
|||||||
|
/* p_mach_enum.h --
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 2007 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.
|
||||||
|
|
||||||
|
John F. Reiser
|
||||||
|
<jreiser@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
// Use the preprocessor to work around
|
||||||
|
// - that the types embedding these enums have to be PODs, and
|
||||||
|
// deriving from an empty base class (which is the usual C++ way
|
||||||
|
// of "importing" enums) does not yield a POD any more
|
||||||
|
// - that older compilers do not correctly perform EBCO
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#ifdef WANT_MACH_HEADER_ENUM /*{*/
|
||||||
|
#undef WANT_MACH_HEADER_ENUM
|
||||||
|
enum { // magic
|
||||||
|
MH_MAGIC = 0xfeedface
|
||||||
|
};
|
||||||
|
enum { // cputype
|
||||||
|
CPU_TYPE_I386 = 7,
|
||||||
|
CPU_TYPE_POWERPC = 0x00000012,
|
||||||
|
CPU_TYPE_POWERPC64 = 0x01000012
|
||||||
|
};
|
||||||
|
enum { // filetype
|
||||||
|
MH_EXECUTE = 2
|
||||||
|
};
|
||||||
|
enum { // flags
|
||||||
|
MH_NOUNDEFS = 1
|
||||||
|
};
|
||||||
|
#endif /*}*/
|
||||||
|
|
||||||
|
#ifdef WANT_MACH_SEGMENT_ENUM /*{*/
|
||||||
|
#undef WANT_MACH_SEGMENT_ENUM
|
||||||
|
enum { // cmd
|
||||||
|
LC_SEGMENT = 0x1,
|
||||||
|
LC_THREAD = 0x4,
|
||||||
|
LC_UNIXTHREAD = 0x5,
|
||||||
|
LC_LOAD_DYLINKER = 0xe,
|
||||||
|
LC_SEGMENT_64 = 0x19
|
||||||
|
};
|
||||||
|
enum { // maxprot
|
||||||
|
VM_PROT_READ = 1,
|
||||||
|
VM_PROT_WRITE = 2,
|
||||||
|
VM_PROT_EXECUTE = 4
|
||||||
|
};
|
||||||
|
#endif /*}*/
|
||||||
|
|
||||||
|
#ifdef WANT_MACH_SECTION_ENUM /*{*/
|
||||||
|
#undef WANT_MACH_SECTION_ENUM
|
||||||
|
enum { // section flags
|
||||||
|
S_REGULAR = 0,
|
||||||
|
S_ZEROFILL,
|
||||||
|
S_CSTRING_LITERALS,
|
||||||
|
S_4BYTE_LITERALS,
|
||||||
|
S_8BYTE_LITERALS,
|
||||||
|
S_LITERAL_POINTERS,
|
||||||
|
S_NON_LAZY_SYMBOL_POINTERS,
|
||||||
|
S_LAZY_SYMBOL_POINTERS,
|
||||||
|
S_SYMBOL_STUBS,
|
||||||
|
S_MOD_INIT_FUNC_POINTERS,
|
||||||
|
S_MOD_TERM_FNC_POINTERS,
|
||||||
|
S_COALESCED
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
S_ATTR_PURE_INSTRUCTIONS = 0x80000000,
|
||||||
|
S_ATTR_NO_TOC = 0x40000000,
|
||||||
|
S_ATTR_STRIP_STATIC_SYMS = 0x20000000,
|
||||||
|
S_ATTR_SOME_INSTRUCTIONS = 0x00000400,
|
||||||
|
S_ATTR_EXT_RELOC = 0x00000200,
|
||||||
|
S_ATTR_LOC_RELOC = 0x00000100
|
||||||
|
};
|
||||||
|
#endif /*}*/
|
||||||
|
|
||||||
|
#ifdef WANT_MACH_THREAD_ENUM /*{*/
|
||||||
|
#undef WANT_MACH_THREAD_ENUM
|
||||||
|
enum { // thread flavor
|
||||||
|
PPC_THREAD_STATE = 1,
|
||||||
|
i386_THREAD_STATE = 1,
|
||||||
|
i386_OLD_THREAD_STATE = -1
|
||||||
|
};
|
||||||
|
#endif /*}*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
vi:ts=4:et
|
||||||
|
*/
|
||||||
|
|
||||||
+26
-9
@@ -194,6 +194,8 @@ bool PackPs1::getBkupHeader(unsigned char *p, unsigned char *dst)
|
|||||||
unsigned sz_bh = SZ_IH_BKUP;
|
unsigned sz_bh = SZ_IH_BKUP;
|
||||||
int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len,
|
int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len,
|
||||||
unc_bh, &sz_bh, M_NRV2E_8, NULL );
|
unc_bh, &sz_bh, M_NRV2E_8, NULL );
|
||||||
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
|
throwOutOfMemoryException();
|
||||||
if (r != UPX_E_OK || sz_bh != SZ_IH_BKUP)
|
if (r != UPX_E_OK || sz_bh != SZ_IH_BKUP)
|
||||||
throwInternalError("header decompression failed");
|
throwInternalError("header decompression failed");
|
||||||
unsigned ad = upx_adler32(unc_bh, SZ_IH_BKUP);
|
unsigned ad = upx_adler32(unc_bh, SZ_IH_BKUP);
|
||||||
@@ -254,8 +256,9 @@ bool PackPs1::canPack()
|
|||||||
fi->readx(buf, sizeof(buf));
|
fi->readx(buf, sizeof(buf));
|
||||||
checkAlreadyPacked(buf, sizeof(buf));
|
checkAlreadyPacked(buf, sizeof(buf));
|
||||||
|
|
||||||
for (unsigned i = 0; i < sizeof(buf); i++)
|
for (size_t i = 0; i < sizeof(buf); i++)
|
||||||
if (buf[i] != 0)
|
if (buf[i] != 0)
|
||||||
|
{
|
||||||
if (!opt->force)
|
if (!opt->force)
|
||||||
throwCantPack("unknown data in header (try --force)");
|
throwCantPack("unknown data in header (try --force)");
|
||||||
else
|
else
|
||||||
@@ -265,6 +268,7 @@ bool PackPs1::canPack()
|
|||||||
opt->backup = 1;
|
opt->backup = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!checkFileHeader())
|
if (!checkFileHeader())
|
||||||
throwCantPack("unsupported header flags (try --force)");
|
throwCantPack("unsupported header flags (try --force)");
|
||||||
if (!opt->force && file_size < PS_MIN_SIZE)
|
if (!opt->force && file_size < PS_MIN_SIZE)
|
||||||
@@ -318,7 +322,8 @@ void PackPs1::buildLoader(const Filter *)
|
|||||||
sa_tmp += overlap = ALIGN_UP((ph.overlap_overhead - sa_tmp), 4u);
|
sa_tmp += overlap = ALIGN_UP((ph.overlap_overhead - sa_tmp), 4u);
|
||||||
}
|
}
|
||||||
|
|
||||||
foundBss = findBssSection();
|
if (isCon || M_IS_LZMA(ph.method))
|
||||||
|
foundBss = findBssSection();
|
||||||
|
|
||||||
if (M_IS_LZMA(ph.method) && !buildPart2)
|
if (M_IS_LZMA(ph.method) && !buildPart2)
|
||||||
{
|
{
|
||||||
@@ -370,16 +375,20 @@ void PackPs1::buildLoader(const Filter *)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (M_IS_LZMA(ph.method))
|
if (M_IS_LZMA(ph.method))
|
||||||
addLoader("cdb.start.lzma", "pad.code", "cdb.entry.lzma", method, "cdb.lzma.cpr",
|
addLoader(!foundBss ? "cdb.start.lzma" : "bss.cdb.start.lzma", "pad.code",
|
||||||
|
!foundBss ? "cdb.entry.lzma" : "bss.cdb.entry.lzma",
|
||||||
|
method, "cdb.lzma.cpr",
|
||||||
ih.tx_ptr & 0xffff ? "dec.ptr" : "dec.ptr.hi",
|
ih.tx_ptr & 0xffff ? "dec.ptr" : "dec.ptr.hi",
|
||||||
"lzma.exec", NULL);
|
"lzma.exec", NULL);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
assert(foundBss != true);
|
||||||
addLoader("cdb.start", "pad.code", "cdb.entry",
|
addLoader("cdb.start", "pad.code", "cdb.entry",
|
||||||
ih.tx_ptr & 0xffff ? "cdb.dec.ptr" : "cdb.dec.ptr.hi",
|
ih.tx_ptr & 0xffff ? "cdb.dec.ptr" : "cdb.dec.ptr.hi",
|
||||||
method,
|
method,
|
||||||
sa_cnt ? sa_cnt > (0x10000 << 2) ? "memset.long" : "memset.short" : "",
|
sa_cnt ? sa_cnt > (0x10000 << 2) ? "memset.long" : "memset.short" : "",
|
||||||
!foundBss ? "cdb.exit" : "bss.exit",
|
"cdb.exit", NULL);
|
||||||
"pad.code", NULL);
|
}
|
||||||
}
|
}
|
||||||
addLoader("UPX1HEAD", "IDENTSTR", NULL);
|
addLoader("UPX1HEAD", "IDENTSTR", NULL);
|
||||||
}
|
}
|
||||||
@@ -554,7 +563,9 @@ void PackPs1::pack(OutputFile *fo)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
d_len = (lsize - h_len) - getLoaderSectionStart(M_IS_LZMA(ph.method) ? "cdb.entry.lzma" : "cdb.entry");
|
const char* entry_lzma = !foundBss ? "cdb.entry.lzma" : "bss.cdb.entry.lzma";
|
||||||
|
|
||||||
|
d_len = (lsize - h_len) - getLoaderSectionStart(M_IS_LZMA(ph.method) ? entry_lzma : "cdb.entry");
|
||||||
e_len = (lsize - d_len) - h_len;
|
e_len = (lsize - d_len) - h_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -565,11 +576,13 @@ void PackPs1::pack(OutputFile *fo)
|
|||||||
linker->defineSymbol("ldr_sz", M_IS_LZMA(ph.method) ? sz_lunc + 16 : (d_len-pad_code));
|
linker->defineSymbol("ldr_sz", M_IS_LZMA(ph.method) ? sz_lunc + 16 : (d_len-pad_code));
|
||||||
|
|
||||||
if (foundBss)
|
if (foundBss)
|
||||||
|
{
|
||||||
if (M_IS_LZMA(ph.method))
|
if (M_IS_LZMA(ph.method))
|
||||||
linker->defineSymbol("wrkmem", bss_end - 160 - getDecompressorWrkmemSize()
|
linker->defineSymbol("wrkmem", bss_end - 160 - getDecompressorWrkmemSize()
|
||||||
- (sz_lunc + 16));
|
- (sz_lunc + 16));
|
||||||
else
|
else
|
||||||
linker->defineSymbol("wrkmem", bss_end - 16 - (d_len - pad_code));
|
linker->defineSymbol("wrkmem", bss_end - 16 - (d_len - pad_code));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const unsigned entry = comp_data_start - e_len;
|
const unsigned entry = comp_data_start - e_len;
|
||||||
@@ -578,7 +591,7 @@ void PackPs1::pack(OutputFile *fo)
|
|||||||
|
|
||||||
unsigned pad = 0;
|
unsigned pad = 0;
|
||||||
|
|
||||||
if (!opt->ps1_exe.no_align)
|
if (!opt->ps1_exe.no_align || !isCon)
|
||||||
{
|
{
|
||||||
pad = oh.tx_len;
|
pad = oh.tx_len;
|
||||||
oh.tx_len = ALIGN_UP(oh.tx_len, CD_SEC);
|
oh.tx_len = ALIGN_UP(oh.tx_len, CD_SEC);
|
||||||
@@ -611,8 +624,12 @@ void PackPs1::pack(OutputFile *fo)
|
|||||||
linker->defineSymbol("PSVR", FIX_PSVR);
|
linker->defineSymbol("PSVR", FIX_PSVR);
|
||||||
linker->defineSymbol("CPDO", comp_data_start);
|
linker->defineSymbol("CPDO", comp_data_start);
|
||||||
if (M_IS_LZMA(ph.method))
|
if (M_IS_LZMA(ph.method))
|
||||||
linker->defineSymbol("lzma_cpr", getLoaderSectionStart("lzma.exec")
|
{
|
||||||
- getLoaderSectionStart("cdb.entry.lzma"));
|
unsigned entry_lzma = getLoaderSectionStart( !foundBss ? "cdb.entry.lzma" :
|
||||||
|
"bss.cdb.entry.lzma");
|
||||||
|
|
||||||
|
linker->defineSymbol("lzma_cpr", getLoaderSectionStart("lzma.exec") - entry_lzma);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
relocateLoader();
|
relocateLoader();
|
||||||
|
|||||||
+2
-1
@@ -42,7 +42,8 @@ public:
|
|||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_DOS_SYS; }
|
virtual int getFormat() const { return UPX_F_DOS_SYS; }
|
||||||
virtual const char *getName() const { return "dos/sys"; }
|
virtual const char *getName() const { return "dos/sys"; }
|
||||||
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.sys" : "i286-dos16.sys"; }
|
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.sys" : "i286-dos16.sys"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "i086-dos16.sys"; }
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -67,11 +67,12 @@ const int *PackTmt::getFilters() const
|
|||||||
|
|
||||||
|
|
||||||
unsigned PackTmt::findOverlapOverhead(const upx_bytep buf,
|
unsigned PackTmt::findOverlapOverhead(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned range,
|
unsigned range,
|
||||||
unsigned upper_limit) const
|
unsigned upper_limit) const
|
||||||
{
|
{
|
||||||
// make sure the decompressor will be paragraph aligned
|
// make sure the decompressor will be paragraph aligned
|
||||||
unsigned o = super::findOverlapOverhead(buf, range, upper_limit);
|
unsigned o = super::findOverlapOverhead(buf, tbuf, range, upper_limit);
|
||||||
o = ((o + 0x20) &~ 0xf) - (ph.u_len & 0xf);
|
o = ((o + 0x20) &~ 0xf) - (ph.u_len & 0xf);
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -42,7 +42,7 @@ public:
|
|||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_TMT_ADAM; }
|
virtual int getFormat() const { return UPX_F_TMT_ADAM; }
|
||||||
virtual const char *getName() const { return "tmt/adam"; }
|
virtual const char *getName() const { return "tmt/adam"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i386-dos32.tmt"; }
|
virtual const char *getFullName(const options_t *) const { return "i386-dos32.tmt.adam"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
@@ -56,6 +56,7 @@ protected:
|
|||||||
virtual int readFileHeader();
|
virtual int readFileHeader();
|
||||||
|
|
||||||
virtual unsigned findOverlapOverhead(const upx_bytep buf,
|
virtual unsigned findOverlapOverhead(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned range = 0,
|
unsigned range = 0,
|
||||||
unsigned upper_limit = ~0u) const;
|
unsigned upper_limit = ~0u) const;
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
|||||||
+7
-3
@@ -173,8 +173,10 @@ void PackUnix::pack2(OutputFile *fo, Filter &ft)
|
|||||||
compressWithFilters(&ft, OVERHEAD, NULL_cconf, filter_strategy);
|
compressWithFilters(&ft, OVERHEAD, NULL_cconf, filter_strategy);
|
||||||
|
|
||||||
if (ph.c_len < ph.u_len) {
|
if (ph.c_len < ph.u_len) {
|
||||||
|
const upx_bytep tbuf = NULL;
|
||||||
|
if (ft.id == 0) tbuf = ibuf;
|
||||||
ph.overlap_overhead = OVERHEAD;
|
ph.overlap_overhead = OVERHEAD;
|
||||||
if (!testOverlappingDecompression(obuf, ph.overlap_overhead)) {
|
if (!testOverlappingDecompression(obuf, tbuf, ph.overlap_overhead)) {
|
||||||
// not in-place compressible
|
// not in-place compressible
|
||||||
ph.c_len = ph.u_len;
|
ph.c_len = ph.u_len;
|
||||||
}
|
}
|
||||||
@@ -353,8 +355,10 @@ void PackUnix::packExtent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ph.c_len < ph.u_len) {
|
if (ph.c_len < ph.u_len) {
|
||||||
|
const upx_bytep tbuf = NULL;
|
||||||
|
if (ft == NULL || ft->id == 0) tbuf = ibuf;
|
||||||
ph.overlap_overhead = OVERHEAD;
|
ph.overlap_overhead = OVERHEAD;
|
||||||
if (!testOverlappingDecompression(obuf, ph.overlap_overhead)) {
|
if (!testOverlappingDecompression(obuf, tbuf, ph.overlap_overhead)) {
|
||||||
// not in-place compressible
|
// not in-place compressible
|
||||||
ph.c_len = ph.u_len;
|
ph.c_len = ph.u_len;
|
||||||
}
|
}
|
||||||
@@ -499,7 +503,7 @@ int PackUnix::canUnpack()
|
|||||||
|
|
||||||
fi->seek(-bufsize, SEEK_END);
|
fi->seek(-bufsize, SEEK_END);
|
||||||
fi->readx(buf, bufsize);
|
fi->readx(buf, bufsize);
|
||||||
if (!getPackHeader(buf, bufsize))
|
if (!getPackHeader(buf, bufsize, true)) // allow incompressible extents
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int l = ph.buf_offset + ph.getPackHeaderSize();
|
int l = ph.buf_offset + ph.getPackHeaderSize();
|
||||||
|
|||||||
+1
-1
@@ -235,7 +235,7 @@ public:
|
|||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual const upx_byte *getLoader() const;
|
virtual upx_byte *getLoader() const;
|
||||||
virtual int getLoaderSize() const;
|
virtual int getLoaderSize() const;
|
||||||
|
|
||||||
virtual void patchLoader();
|
virtual void patchLoader();
|
||||||
|
|||||||
+414
-17
@@ -44,6 +44,10 @@ static const
|
|||||||
#include "stub/amd64-linux.kernel.vmlinux.h"
|
#include "stub/amd64-linux.kernel.vmlinux.h"
|
||||||
static const
|
static const
|
||||||
#include "stub/arm-linux.kernel.vmlinux.h"
|
#include "stub/arm-linux.kernel.vmlinux.h"
|
||||||
|
static const
|
||||||
|
#include "stub/armeb-linux.kernel.vmlinux.h"
|
||||||
|
static const
|
||||||
|
#include "stub/powerpc-linux.kernel.vmlinux.h"
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@@ -66,9 +70,9 @@ PackVmlinuxBase<T>::PackVmlinuxBase(InputFile *f,
|
|||||||
template <class T>
|
template <class T>
|
||||||
PackVmlinuxBase<T>::~PackVmlinuxBase()
|
PackVmlinuxBase<T>::~PackVmlinuxBase()
|
||||||
{
|
{
|
||||||
delete [] shstrtab;
|
|
||||||
delete [] phdri;
|
delete [] phdri;
|
||||||
delete [] shdri;
|
delete [] shdri;
|
||||||
|
delete [] shstrtab;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
@@ -201,6 +205,7 @@ bool PackVmlinuxBase<T>::canPack()
|
|||||||
return 0 < n_ptload;
|
return 0 < n_ptload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "p_elf.h"
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
||||||
@@ -265,13 +270,224 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
|||||||
upx_compress_config_t cconf; cconf.reset();
|
upx_compress_config_t cconf; cconf.reset();
|
||||||
// limit stack size needed for runtime decompression
|
// limit stack size needed for runtime decompression
|
||||||
cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack
|
cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack
|
||||||
compressWithFilters(&ft, 512, &cconf, getStrategy(ft));
|
|
||||||
|
unsigned ppc32_extra = 0;
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
// output layout:
|
||||||
|
// .long UPX_MAGIC_LE32
|
||||||
|
// .long L20 - L10
|
||||||
|
// L10:
|
||||||
|
// b_info for Ehdr; compressed Ehdr; .balign 4 // one block only
|
||||||
|
// b_info for LOAD; compressed LOAD; .balign 4 // possibly many blocks
|
||||||
|
// // This allows per-block filters!
|
||||||
|
// L20:
|
||||||
|
// b f_decompress
|
||||||
|
// +4: f_unfilter(char *buf, unsigned len, unsigned cto8, unsigned ftid)
|
||||||
|
// // Code for multiple filters can "daisy chain" on ftid.
|
||||||
|
// f_decompress(char const *src, unsigned src_len,
|
||||||
|
// char *dst, unsigned *dst_len, int method)
|
||||||
|
unsigned tmp;
|
||||||
|
tmp = UPX_MAGIC_LE32; fo->write(&tmp, sizeof(tmp)); fo_off += sizeof(tmp);
|
||||||
|
tmp = 0; fo->write(&tmp, sizeof(tmp)); fo_off += sizeof(tmp);
|
||||||
|
ppc32_extra += 2*sizeof(tmp);
|
||||||
|
unsigned const len_unc = sizeof(ehdri) + sizeof(Phdr) * ehdri.e_phnum;
|
||||||
|
MemBuffer unc_hdr(len_unc);
|
||||||
|
MemBuffer cpr_hdr; cpr_hdr.allocForCompression(len_unc);
|
||||||
|
memcpy(&unc_hdr[0], &ehdri, sizeof(ehdri));
|
||||||
|
memcpy(&unc_hdr[sizeof(ehdri)], phdri, sizeof(Phdr) * ehdri.e_phnum);
|
||||||
|
unsigned len_cpr = 0;
|
||||||
|
int const r = upx_compress(unc_hdr, len_unc, cpr_hdr, &len_cpr,
|
||||||
|
NULL, ph.method, 10, NULL, NULL );
|
||||||
|
if (UPX_E_OK!=r || len_unc<=len_cpr) // FIXME: allow no compression
|
||||||
|
throwInternalError("Ehdr compression failed");
|
||||||
|
|
||||||
|
struct b_info { // 12-byte header before each compressed block
|
||||||
|
unsigned sz_unc; // uncompressed_size
|
||||||
|
unsigned sz_cpr; // compressed_size
|
||||||
|
unsigned char b_method; // compression algorithm
|
||||||
|
unsigned char b_ftid; // filter id
|
||||||
|
unsigned char b_cto8; // filter parameter
|
||||||
|
unsigned char b_unused; // FIXME: !=0 for partial-block unfilter
|
||||||
|
// unsigned f_offset, f_len; // only if partial-block unfilter
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
struct b_info hdr_info;
|
||||||
|
set_be32(&hdr_info.sz_unc, len_unc);
|
||||||
|
set_be32(&hdr_info.sz_cpr, len_cpr);
|
||||||
|
hdr_info.b_method = ph.method;
|
||||||
|
hdr_info.b_ftid = 0;
|
||||||
|
hdr_info.b_cto8 = 0;
|
||||||
|
hdr_info.b_unused = 0;
|
||||||
|
fo->write(&hdr_info, sizeof(hdr_info)); fo_off += sizeof(hdr_info);
|
||||||
|
unsigned const frag = (3& (0u-len_cpr));
|
||||||
|
ppc32_extra += sizeof(hdr_info) + len_cpr + frag;
|
||||||
|
fo_off += len_cpr + frag;
|
||||||
|
fo->write(cpr_hdr, len_cpr + frag);
|
||||||
|
|
||||||
|
// Partial filter: .text and following contiguous SHF_EXECINSTR
|
||||||
|
upx_bytep f_ptr = ibuf;
|
||||||
|
unsigned f_len = 0;
|
||||||
|
Shdr const *shdr = 1+ shdri; // skip empty shdr[0]
|
||||||
|
if (ft.buf_len==0 // not specified yet FIXME: was set near construction
|
||||||
|
&& (Shdr::SHF_ALLOC & shdr->sh_flags)
|
||||||
|
&& (Shdr::SHF_EXECINSTR & shdr->sh_flags)) {
|
||||||
|
// shdr[1] is instructions (probably .text)
|
||||||
|
f_ptr = ibuf + (unsigned) (shdr->sh_offset - phdri[0].p_offset);
|
||||||
|
f_len = shdr->sh_size;
|
||||||
|
++shdr;
|
||||||
|
for (int j= ehdri.e_shnum - 2; --j>=0; ++shdr) {
|
||||||
|
unsigned prev_end = shdr[-1].sh_size + shdr[-1].sh_offset;
|
||||||
|
prev_end += ~(0u-shdr[0].sh_addralign) & (0u-prev_end); // align_up
|
||||||
|
if ((Shdr::SHF_ALLOC & shdr->sh_flags)
|
||||||
|
&& (Shdr::SHF_EXECINSTR & shdr->sh_flags)
|
||||||
|
&& shdr[0].sh_offset==prev_end) {
|
||||||
|
f_len += shdr->sh_size;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else { // ft.buf_len already specified, or Shdr[1] not instructions
|
||||||
|
f_ptr = ibuf;
|
||||||
|
f_len = ph.u_len;
|
||||||
|
}
|
||||||
|
compressWithFilters(ibuf, ph.u_len, obuf,
|
||||||
|
f_ptr, f_len, // filter range
|
||||||
|
NULL, 0, // hdr_ptr, hdr_len
|
||||||
|
&ft, 512, &cconf, getStrategy(ft));
|
||||||
|
|
||||||
|
set_be32(&hdr_info.sz_unc, ph.u_len);
|
||||||
|
set_be32(&hdr_info.sz_cpr, ph.c_len);
|
||||||
|
hdr_info.b_ftid = ft.id;
|
||||||
|
hdr_info.b_cto8 = ft.cto;
|
||||||
|
if (ph.u_len!=f_len) {
|
||||||
|
hdr_info.b_unused = 1; // flag for partial filter
|
||||||
|
}
|
||||||
|
fo->write(&hdr_info, sizeof(hdr_info)); fo_off += sizeof(hdr_info);
|
||||||
|
ppc32_extra += sizeof(hdr_info);
|
||||||
|
if (ph.u_len!=f_len) {
|
||||||
|
set_be32(&hdr_info.sz_unc, f_ptr - (upx_bytep) ibuf);
|
||||||
|
set_be32(&hdr_info.sz_cpr, f_len);
|
||||||
|
fo->write(&hdr_info, 2*sizeof(unsigned)); fo_off += 2*sizeof(unsigned);
|
||||||
|
ppc32_extra += 2*sizeof(unsigned);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0 /*{ Documentation: changes to arch/powerpc/boot/main.c */
|
||||||
|
struct b_info {
|
||||||
|
unsigned sz_unc;
|
||||||
|
unsigned sz_cpr;
|
||||||
|
unsigned char b_method;
|
||||||
|
unsigned char b_ftid;
|
||||||
|
unsigned char b_cto8;
|
||||||
|
unsigned char b_unused;
|
||||||
|
};
|
||||||
|
typedef int (*upx_f_unc)( /* uncompress */
|
||||||
|
unsigned char const *src, unsigned src_len,
|
||||||
|
unsigned char *dst, unsigned *dst_len,
|
||||||
|
int method
|
||||||
|
);
|
||||||
|
typedef int (*upx_f_unf)( /* unfilter */
|
||||||
|
unsigned char *buf,
|
||||||
|
unsigned len,
|
||||||
|
unsigned cto8,
|
||||||
|
unsigned ftid
|
||||||
|
);
|
||||||
|
|
||||||
|
unsigned char const *upx_expand( // return updated src [aligned, too]
|
||||||
|
unsigned char const *src,
|
||||||
|
unsigned char *dst,
|
||||||
|
unsigned *const dst_len,
|
||||||
|
upx_f_unc const f_unc
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (0==*dst_len) {
|
||||||
|
*dst_len = ((struct b_info const *)src)->sz_unc;
|
||||||
|
}
|
||||||
|
upx_f_unf const f_unf = (upx_f_unf)(sizeof(int) + (char *)f_unc);
|
||||||
|
unsigned total_len = 0;
|
||||||
|
unsigned need = *dst_len;
|
||||||
|
while (0 < need) {
|
||||||
|
struct b_info const *const b_hdr = (struct b_info const *)src;
|
||||||
|
src = (unsigned char const *)(1+ b_hdr);
|
||||||
|
unsigned blk_len = b_hdr->sz_unc;
|
||||||
|
int const rv = (*f_unc)(src, b_hdr->sz_cpr, dst, &blk_len, b_hdr->b_method);
|
||||||
|
if (0!=rv) {
|
||||||
|
printf("decompress error %d\n\r", rv);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
if (b_hdr->b_ftid) {
|
||||||
|
(*f_unf)(dst, b_hdr->sz_unc, b_hdr->b_cto8, b_hdr->b_ftid);
|
||||||
|
}
|
||||||
|
src += b_hdr->sz_cpr;
|
||||||
|
src += (3& -(int)src); // 4-byte align
|
||||||
|
dst += b_hdr->sz_unc;
|
||||||
|
total_len += b_hdr->sz_unc;
|
||||||
|
need -= b_hdr->sz_unc;
|
||||||
|
}
|
||||||
|
*dst_len = total_len;
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void prep_kernel(unsigned long a1, unsigned long a2)
|
||||||
|
{
|
||||||
|
upx_f_unc f_unc = (upx_f_unc)0;
|
||||||
|
|
||||||
|
vmlinuz.addr = (unsigned long)_vmlinux_start;
|
||||||
|
vmlinuz.size = (unsigned long)(_vmlinux_end - _vmlinux_start);
|
||||||
|
|
||||||
|
if (0x55505821 == *(unsigned *)vmlinuz.addr) {
|
||||||
|
/* was compressed by upx */
|
||||||
|
/* Uncompress elfheader */
|
||||||
|
unsigned const *const fwa = (unsigned *)vmlinuz.addr;
|
||||||
|
f_unc = (upx_f_unc)((char *)&fwa[2] + fwa[1]);
|
||||||
|
unsigned dst_len = 0;
|
||||||
|
unsigned char const *src = (unsigned char const *)&fwa[2];
|
||||||
|
src = upx_expand(src, (unsigned char *)elfheader, &dst_len, f_unc);
|
||||||
|
unsigned const src_len = src - (unsigned char const *)&fwa[0];
|
||||||
|
vmlinuz.addr += src_len;
|
||||||
|
vmlinuz.size -= src_len;
|
||||||
|
} else {
|
||||||
|
memcpy(elfheader, (const void *)vmlinuz.addr,
|
||||||
|
sizeof(elfheader));
|
||||||
|
}
|
||||||
|
=====
|
||||||
|
/* Eventually gunzip the kernel */
|
||||||
|
if (f_unc) {
|
||||||
|
/* was compressed by upx */
|
||||||
|
printf("upx_expand (0x%lx <- 0x%lx:0x%0lx)...",
|
||||||
|
vmlinux.addr, vmlinuz.addr, vmlinuz.addr+vmlinuz.size);
|
||||||
|
unsigned dst_len = vmlinux.size - elfoffset;
|
||||||
|
upx_expand((unsigned char const *)vmlinuz.addr,
|
||||||
|
(unsigned char *)vmlinux.addr, &dst_len, f_unc);
|
||||||
|
printf("done 0x%lx bytes\n\r", len);
|
||||||
|
} else {
|
||||||
|
memmove((void *)vmlinux.addr,(void *)vmlinuz.addr,
|
||||||
|
vmlinuz.size);
|
||||||
|
/* Skip over the ELF header */
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("... skipping 0x%lx bytes of ELF header\n\r",
|
||||||
|
elfoffset);
|
||||||
|
#endif
|
||||||
|
vmlinux.addr += elfoffset;
|
||||||
|
}
|
||||||
|
=====
|
||||||
|
}
|
||||||
|
#endif /*}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
compressWithFilters(&ft, 512, &cconf, getStrategy(ft));
|
||||||
|
}
|
||||||
unsigned const txt_c_len = ph.c_len;
|
unsigned const txt_c_len = ph.c_len;
|
||||||
|
|
||||||
const unsigned lsize = getLoaderSize();
|
const unsigned lsize = getLoaderSize();
|
||||||
|
|
||||||
defineDecompressorSymbols();
|
defineDecompressorSymbols();
|
||||||
defineFilterSymbols(&ft);
|
if (ft.id!=0) {
|
||||||
|
defineFilterSymbols(&ft);
|
||||||
|
}
|
||||||
relocateLoader();
|
relocateLoader();
|
||||||
|
|
||||||
MemBuffer loader(lsize);
|
MemBuffer loader(lsize);
|
||||||
@@ -285,13 +501,13 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
|||||||
shdro[1].sh_name = ptr_diff(p, shstrtab);
|
shdro[1].sh_name = ptr_diff(p, shstrtab);
|
||||||
shdro[1].sh_type = Shdr::SHT_PROGBITS;
|
shdro[1].sh_type = Shdr::SHT_PROGBITS;
|
||||||
shdro[1].sh_flags = Shdr::SHF_ALLOC | Shdr::SHF_EXECINSTR;
|
shdro[1].sh_flags = Shdr::SHF_ALLOC | Shdr::SHF_EXECINSTR;
|
||||||
shdro[1].sh_offset = fo_off;
|
shdro[1].sh_offset = fo_off - ppc32_extra;
|
||||||
shdro[1].sh_size = txt_c_len + lsize; // plus more ...
|
shdro[1].sh_size = ppc32_extra + txt_c_len + lsize; // plus more ...
|
||||||
shdro[1].sh_addralign = 1; // default
|
shdro[1].sh_addralign = 1; // default
|
||||||
|
|
||||||
fo_off += write_vmlinux_head(fo, &shdro[1]);
|
fo_off += write_vmlinux_head(fo, &shdro[1]);
|
||||||
fo->write(obuf, txt_c_len); fo_off += txt_c_len;
|
fo->write(obuf, txt_c_len); fo_off += txt_c_len;
|
||||||
unsigned const a = (shdro[1].sh_addralign -1) & (0u-txt_c_len);
|
unsigned const a = (shdro[1].sh_addralign -1) & (0u-(ppc32_extra + txt_c_len));
|
||||||
if (0!=a) { // align
|
if (0!=a) { // align
|
||||||
fo_off += a;
|
fo_off += a;
|
||||||
shdro[1].sh_size += a;
|
shdro[1].sh_size += a;
|
||||||
@@ -359,7 +575,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
|||||||
shdro[5].sh_name = ptr_diff(p, shstrtab);
|
shdro[5].sh_name = ptr_diff(p, shstrtab);
|
||||||
shdro[5].sh_type = Shdr::SHT_SYMTAB;
|
shdro[5].sh_type = Shdr::SHT_SYMTAB;
|
||||||
shdro[5].sh_offset = fo_off;
|
shdro[5].sh_offset = fo_off;
|
||||||
shdro[5].sh_size = 5*sizeof(Sym);
|
shdro[5].sh_size = ((Ehdr::EM_PPC==my_e_machine) + 5)*sizeof(Sym);
|
||||||
//shdro[5].sh_flags = Shdr::SHF_INFO_LINK;
|
//shdro[5].sh_flags = Shdr::SHF_INFO_LINK;
|
||||||
shdro[5].sh_link = 6; // to .strtab for symbols
|
shdro[5].sh_link = 6; // to .strtab for symbols
|
||||||
shdro[5].sh_info = 1+3; // number of non-global symbols [binutils/bfd/elf.c]
|
shdro[5].sh_info = 1+3; // number of non-global symbols [binutils/bfd/elf.c]
|
||||||
@@ -386,26 +602,40 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
|||||||
Sym unc_ker;
|
Sym unc_ker;
|
||||||
unc_ker.st_name = 1; // 1 byte into strtab
|
unc_ker.st_name = 1; // 1 byte into strtab
|
||||||
unc_ker.st_value = 0;
|
unc_ker.st_value = 0;
|
||||||
unc_ker.st_size = txt_c_len;
|
unc_ker.st_size = ppc32_extra + txt_c_len;
|
||||||
unc_ker.st_info = unc_ker.make_st_info(Sym::STB_GLOBAL, Sym::STT_FUNC);
|
unc_ker.st_info = unc_ker.make_st_info(Sym::STB_GLOBAL, Sym::STT_FUNC);
|
||||||
unc_ker.st_other = Sym::STV_DEFAULT;
|
unc_ker.st_other = Sym::STV_DEFAULT;
|
||||||
unc_ker.st_shndx = 1; // .text
|
unc_ker.st_shndx = 1; // .text
|
||||||
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
|
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
|
||||||
|
|
||||||
unsigned const lablen = strlen(my_boot_label);
|
unsigned const lablen = strlen(my_boot_label);
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
unc_ker.st_name += 1+ lablen;
|
||||||
|
unc_ker.st_value = unc_ker.st_size;
|
||||||
|
unc_ker.st_size = 0;
|
||||||
|
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
|
||||||
|
}
|
||||||
while (0!=*p++) ;
|
while (0!=*p++) ;
|
||||||
shdro[6].sh_name = ptr_diff(p, shstrtab);
|
shdro[6].sh_name = ptr_diff(p, shstrtab);
|
||||||
shdro[6].sh_type = Shdr::SHT_STRTAB;
|
shdro[6].sh_type = Shdr::SHT_STRTAB;
|
||||||
shdro[6].sh_offset = fo_off;
|
shdro[6].sh_offset = fo_off;
|
||||||
shdro[6].sh_size = 2+ lablen; // '\0' before and after
|
shdro[6].sh_size = 2+ lablen + (Ehdr::EM_PPC==my_e_machine)*(1+ 12); // '\0' before and after
|
||||||
shdro[6].sh_addralign = 1;
|
shdro[6].sh_addralign = 1;
|
||||||
fo->seek(1, SEEK_CUR); // the '\0' before
|
fo->seek(1, SEEK_CUR); // the '\0' before
|
||||||
fo->write(my_boot_label, 1+ lablen); // include the '\0' terminator
|
fo->write(my_boot_label, 1+ lablen); // include the '\0' terminator
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
fo->write("_vmlinux_end", 1+ 12); fo_off += 1+ 12;
|
||||||
|
}
|
||||||
fo_off += 2+ lablen;
|
fo_off += 2+ lablen;
|
||||||
|
|
||||||
fo->seek(0, SEEK_SET);
|
fo->seek(0, SEEK_SET);
|
||||||
fo->write(&ehdro, sizeof(ehdro));
|
fo->write(&ehdro, sizeof(ehdro));
|
||||||
fo->write(&shdro, sizeof(shdro));
|
fo->write(&shdro, sizeof(shdro));
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
fo->seek(sizeof(unsigned), SEEK_CUR);
|
||||||
|
set_be32(&ppc32_extra, ppc32_extra - 2*sizeof(unsigned) + txt_c_len);
|
||||||
|
fo->write(&ppc32_extra, sizeof(ppc32_extra));
|
||||||
|
}
|
||||||
|
|
||||||
if (!checkFinalCompressionRatio(fo))
|
if (!checkFinalCompressionRatio(fo))
|
||||||
throwNotCompressible();
|
throwNotCompressible();
|
||||||
@@ -547,18 +777,41 @@ const int *PackVmlinuxI386::getFilters() const
|
|||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int *PackVmlinuxARM::getCompressionMethods(int method, int level) const
|
const int *PackVmlinuxARMEL::getCompressionMethods(int method, int level) const
|
||||||
{
|
{
|
||||||
return Packer::getDefaultCompressionMethods_8(method, level);
|
return Packer::getDefaultCompressionMethods_8(method, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int *PackVmlinuxARMEB::getCompressionMethods(int method, int level) const
|
||||||
|
{
|
||||||
|
return Packer::getDefaultCompressionMethods_8(method, level);
|
||||||
|
}
|
||||||
|
|
||||||
const int *PackVmlinuxARM::getFilters() const
|
const int *PackVmlinuxPPC32::getCompressionMethods(int method, int level) const
|
||||||
|
{
|
||||||
|
// No real dependency on LE32.
|
||||||
|
return Packer::getDefaultCompressionMethods_le32(method, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const int *PackVmlinuxARMEL::getFilters() const
|
||||||
{
|
{
|
||||||
static const int f50[] = { 0x50, FT_END };
|
static const int f50[] = { 0x50, FT_END };
|
||||||
return f50;
|
return f50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int *PackVmlinuxARMEB::getFilters() const
|
||||||
|
{
|
||||||
|
static const int f51[] = { 0x51, FT_END };
|
||||||
|
return f51;
|
||||||
|
}
|
||||||
|
|
||||||
|
const int *PackVmlinuxPPC32::getFilters() const
|
||||||
|
{
|
||||||
|
static const int fd0[] = { 0xd0, FT_END };
|
||||||
|
return fd0;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]:
|
// Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]:
|
||||||
//
|
//
|
||||||
@@ -646,18 +899,39 @@ void PackVmlinuxAMD64::buildLoader(const Filter *ft)
|
|||||||
"LINUX992,IDENTSTR,UPX1HEAD", NULL);
|
"LINUX992,IDENTSTR,UPX1HEAD", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PackVmlinuxARM::is_valid_e_entry(Addr e_entry)
|
bool PackVmlinuxARMEL::is_valid_e_entry(Addr e_entry)
|
||||||
{
|
{
|
||||||
return 0xc0008000==e_entry;
|
return 0xc0008000==e_entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
Linker* PackVmlinuxARM::newLinker() const
|
bool PackVmlinuxARMEB::is_valid_e_entry(Addr e_entry)
|
||||||
|
{
|
||||||
|
return 0xc0008000==e_entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PackVmlinuxPPC32::is_valid_e_entry(Addr e_entry)
|
||||||
|
{
|
||||||
|
return 0xc0000000==e_entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
Linker* PackVmlinuxARMEL::newLinker() const
|
||||||
{
|
{
|
||||||
return new ElfLinkerArmLE;
|
return new ElfLinkerArmLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Linker* PackVmlinuxARMEB::newLinker() const
|
||||||
|
{
|
||||||
|
return new ElfLinkerArmBE;
|
||||||
|
}
|
||||||
|
|
||||||
void PackVmlinuxARM::buildLoader(const Filter *ft)
|
Linker* PackVmlinuxPPC32::newLinker() const
|
||||||
|
{
|
||||||
|
return new ElfLinkerPpc32;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void PackVmlinuxARMEL::buildLoader(const Filter *ft)
|
||||||
{
|
{
|
||||||
// prepare loader
|
// prepare loader
|
||||||
initLoader(stub_arm_linux_kernel_vmlinux, sizeof(stub_arm_linux_kernel_vmlinux));
|
initLoader(stub_arm_linux_kernel_vmlinux, sizeof(stub_arm_linux_kernel_vmlinux));
|
||||||
@@ -679,6 +953,50 @@ void PackVmlinuxARM::buildLoader(const Filter *ft)
|
|||||||
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackVmlinuxARMEB::buildLoader(const Filter *ft)
|
||||||
|
{
|
||||||
|
// prepare loader
|
||||||
|
initLoader(stub_armeb_linux_kernel_vmlinux, sizeof(stub_armeb_linux_kernel_vmlinux));
|
||||||
|
addLoader("LINUX000", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
assert(ft->calls > 0);
|
||||||
|
addLoader("LINUX010", NULL);
|
||||||
|
}
|
||||||
|
addLoader("LINUX020", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
addFilter32(ft->id);
|
||||||
|
}
|
||||||
|
addLoader("LINUX030", NULL);
|
||||||
|
if (ph.method == M_NRV2E_8) addLoader("NRV2E", NULL);
|
||||||
|
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", NULL);
|
||||||
|
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", NULL);
|
||||||
|
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
|
||||||
|
else throwBadLoader();
|
||||||
|
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackVmlinuxPPC32::buildLoader(const Filter *ft)
|
||||||
|
{
|
||||||
|
// prepare loader
|
||||||
|
initLoader(stub_powerpc_linux_kernel_vmlinux, sizeof(stub_powerpc_linux_kernel_vmlinux));
|
||||||
|
addLoader("LINUX000", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
assert(ft->calls > 0);
|
||||||
|
addLoader("LINUX010", NULL);
|
||||||
|
}
|
||||||
|
addLoader("LINUX020", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
addFilter32(ft->id);
|
||||||
|
}
|
||||||
|
addLoader("LINUX030", NULL);
|
||||||
|
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E", NULL);
|
||||||
|
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B", NULL);
|
||||||
|
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D", NULL);
|
||||||
|
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
|
||||||
|
else throwBadLoader();
|
||||||
|
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const
|
static const
|
||||||
#include "stub/i386-linux.kernel.vmlinux-head.h"
|
#include "stub/i386-linux.kernel.vmlinux-head.h"
|
||||||
@@ -686,6 +1004,10 @@ static const
|
|||||||
#include "stub/amd64-linux.kernel.vmlinux-head.h"
|
#include "stub/amd64-linux.kernel.vmlinux-head.h"
|
||||||
static const
|
static const
|
||||||
#include "stub/arm-linux.kernel.vmlinux-head.h"
|
#include "stub/arm-linux.kernel.vmlinux-head.h"
|
||||||
|
static const
|
||||||
|
#include "stub/armeb-linux.kernel.vmlinux-head.h"
|
||||||
|
static const
|
||||||
|
#include "stub/powerpc-linux.kernel.vmlinux-head.h"
|
||||||
|
|
||||||
unsigned PackVmlinuxI386::write_vmlinux_head(
|
unsigned PackVmlinuxI386::write_vmlinux_head(
|
||||||
OutputFile *const fo,
|
OutputFile *const fo,
|
||||||
@@ -719,7 +1041,7 @@ printf("UnCompressed length=0x%x\n", ph.u_len);
|
|||||||
return sizeof(stub_amd64_linux_kernel_vmlinux_head);
|
return sizeof(stub_amd64_linux_kernel_vmlinux_head);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackVmlinuxARM::defineDecompressorSymbols()
|
void PackVmlinuxARMEL::defineDecompressorSymbols()
|
||||||
{
|
{
|
||||||
super::defineDecompressorSymbols();
|
super::defineDecompressorSymbols();
|
||||||
linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
|
linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
|
||||||
@@ -727,6 +1049,22 @@ void PackVmlinuxARM::defineDecompressorSymbols()
|
|||||||
linker->defineSymbol("METHOD", ph.method);
|
linker->defineSymbol("METHOD", ph.method);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackVmlinuxARMEB::defineDecompressorSymbols()
|
||||||
|
{
|
||||||
|
super::defineDecompressorSymbols();
|
||||||
|
linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
|
||||||
|
linker->defineSymbol("UNCOMPRESSED_LENGTH", ph.u_len);
|
||||||
|
linker->defineSymbol("METHOD", ph.method);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PackVmlinuxPPC32::defineDecompressorSymbols()
|
||||||
|
{
|
||||||
|
super::defineDecompressorSymbols();
|
||||||
|
// linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
|
||||||
|
// linker->defineSymbol("UNCOMPRESSED_LENGTH", ph.u_len);
|
||||||
|
// linker->defineSymbol("METHOD", ph.method);
|
||||||
|
}
|
||||||
|
|
||||||
void PackVmlinuxI386::defineDecompressorSymbols()
|
void PackVmlinuxI386::defineDecompressorSymbols()
|
||||||
{
|
{
|
||||||
super::defineDecompressorSymbols();
|
super::defineDecompressorSymbols();
|
||||||
@@ -744,7 +1082,7 @@ void PackVmlinuxAMD64::defineDecompressorSymbols()
|
|||||||
linker->defineSymbol("PHYSICAL_START", phdri[0].p_paddr);
|
linker->defineSymbol("PHYSICAL_START", phdri[0].p_paddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned PackVmlinuxARM::write_vmlinux_head(
|
unsigned PackVmlinuxARMEL::write_vmlinux_head(
|
||||||
OutputFile *const fo,
|
OutputFile *const fo,
|
||||||
Shdr *const stxt
|
Shdr *const stxt
|
||||||
)
|
)
|
||||||
@@ -766,8 +1104,38 @@ unsigned PackVmlinuxARM::write_vmlinux_head(
|
|||||||
return sizeof(stub_arm_linux_kernel_vmlinux_head);
|
return sizeof(stub_arm_linux_kernel_vmlinux_head);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned PackVmlinuxARMEB::write_vmlinux_head(
|
||||||
|
OutputFile *const fo,
|
||||||
|
Shdr *const stxt
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// First word from vmlinux-head.S
|
||||||
|
fo->write(&stub_armeb_linux_kernel_vmlinux_head[0], 4);
|
||||||
|
|
||||||
bool PackVmlinuxARM::has_valid_vmlinux_head()
|
// Second word
|
||||||
|
U32 tmp_u32;
|
||||||
|
unsigned const t = (0xff000000 &
|
||||||
|
BeLePolicy::get32(&stub_armeb_linux_kernel_vmlinux_head[4]))
|
||||||
|
| (0x00ffffff & (0u - 1 + ((3+ ph.c_len)>>2)));
|
||||||
|
tmp_u32 = t;
|
||||||
|
fo->write(&tmp_u32, 4);
|
||||||
|
|
||||||
|
stxt->sh_addralign = 4;
|
||||||
|
stxt->sh_size += sizeof(stub_armeb_linux_kernel_vmlinux_head);
|
||||||
|
|
||||||
|
return sizeof(stub_armeb_linux_kernel_vmlinux_head);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned PackVmlinuxPPC32::write_vmlinux_head(
|
||||||
|
OutputFile * /*const fo*/,
|
||||||
|
Shdr * /*const stxt*/
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PackVmlinuxARMEL::has_valid_vmlinux_head()
|
||||||
{
|
{
|
||||||
U32 buf[2];
|
U32 buf[2];
|
||||||
fi->seek(p_text->sh_offset + sizeof(stub_arm_linux_kernel_vmlinux_head) -8, SEEK_SET);
|
fi->seek(p_text->sh_offset + sizeof(stub_arm_linux_kernel_vmlinux_head) -8, SEEK_SET);
|
||||||
@@ -781,6 +1149,34 @@ bool PackVmlinuxARM::has_valid_vmlinux_head()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PackVmlinuxARMEB::has_valid_vmlinux_head()
|
||||||
|
{
|
||||||
|
U32 buf[2];
|
||||||
|
fi->seek(p_text->sh_offset + sizeof(stub_armeb_linux_kernel_vmlinux_head) -8, SEEK_SET);
|
||||||
|
fi->readx(buf, sizeof(buf));
|
||||||
|
//unsigned const word0 = buf[0];
|
||||||
|
unsigned const word1 = buf[1];
|
||||||
|
if (0xeb==(word1>>24)
|
||||||
|
&& (0x00ffffff& word1)==(0u - 1 + ((3+ ph.c_len)>>2))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PackVmlinuxPPC32::has_valid_vmlinux_head()
|
||||||
|
{
|
||||||
|
U32 buf[2];
|
||||||
|
fi->seek(p_text->sh_offset + sizeof(stub_powerpc_linux_kernel_vmlinux_head) -8, SEEK_SET);
|
||||||
|
fi->readx(buf, sizeof(buf));
|
||||||
|
//unsigned const word0 = buf[0];
|
||||||
|
unsigned const word1 = buf[1];
|
||||||
|
if (0xeb==(word1>>24)
|
||||||
|
&& (0x00ffffff& word1)==(0u - 1 + ((3+ ph.c_len)>>2))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool PackVmlinuxI386::has_valid_vmlinux_head()
|
bool PackVmlinuxI386::has_valid_vmlinux_head()
|
||||||
{
|
{
|
||||||
unsigned char buf[5];
|
unsigned char buf[5];
|
||||||
@@ -1058,6 +1454,7 @@ Linker* PackVmlinuxAMD64::newLinker() const
|
|||||||
|
|
||||||
// instantiate instances
|
// instantiate instances
|
||||||
template class PackVmlinuxBase<ElfClass_LE32>;
|
template class PackVmlinuxBase<ElfClass_LE32>;
|
||||||
|
template class PackVmlinuxBase<ElfClass_BE32>;
|
||||||
template class PackVmlinuxBase<ElfClass_LE64>;
|
template class PackVmlinuxBase<ElfClass_LE64>;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+52
-4
@@ -119,14 +119,14 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class PackVmlinuxARM : public PackVmlinuxBase<ElfClass_LE32>
|
class PackVmlinuxARMEL : public PackVmlinuxBase<ElfClass_LE32>
|
||||||
{
|
{
|
||||||
typedef PackVmlinuxBase<ElfClass_LE32> super;
|
typedef PackVmlinuxBase<ElfClass_LE32> super;
|
||||||
public:
|
public:
|
||||||
PackVmlinuxARM(InputFile *f) : super(f, Ehdr::EM_ARM,
|
PackVmlinuxARMEL(InputFile *f) : super(f, Ehdr::EM_ARM,
|
||||||
Ehdr::ELFCLASS32, Ehdr::ELFDATA2LSB, "decompress_kernel") { }
|
Ehdr::ELFCLASS32, Ehdr::ELFDATA2LSB, "decompress_kernel") { }
|
||||||
virtual int getFormat() const { return UPX_F_VMLINUX_ARM; }
|
virtual int getFormat() const { return UPX_F_VMLINUX_ARMEL; }
|
||||||
virtual const char *getName() const { return "vmlinux/ARM"; }
|
virtual const char *getName() const { return "vmlinux/armel"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "arm-linux.kernel.vmlinux"; }
|
virtual const char *getFullName(const options_t *) const { return "arm-linux.kernel.vmlinux"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
@@ -143,6 +143,54 @@ protected:
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PackVmlinuxARMEB : public PackVmlinuxBase<ElfClass_BE32>
|
||||||
|
{
|
||||||
|
typedef PackVmlinuxBase<ElfClass_BE32> super;
|
||||||
|
public:
|
||||||
|
PackVmlinuxARMEB(InputFile *f) : super(f, Ehdr::EM_ARM,
|
||||||
|
Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB, "decompress_kernel") { }
|
||||||
|
virtual int getFormat() const { return UPX_F_VMLINUX_ARMEB; }
|
||||||
|
virtual const char *getName() const { return "vmlinux/armeb"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "armeb-linux.kernel.vmlinux"; }
|
||||||
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
virtual void defineDecompressorSymbols();
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual bool is_valid_e_entry(Addr);
|
||||||
|
virtual bool has_valid_vmlinux_head();
|
||||||
|
virtual unsigned write_vmlinux_head(
|
||||||
|
OutputFile *const fo,
|
||||||
|
Shdr *const stxt
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
class PackVmlinuxPPC32 : public PackVmlinuxBase<ElfClass_BE32>
|
||||||
|
{
|
||||||
|
typedef PackVmlinuxBase<ElfClass_BE32> super;
|
||||||
|
public:
|
||||||
|
PackVmlinuxPPC32(InputFile *f) : super(f, Ehdr::EM_PPC,
|
||||||
|
Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB, "_vmlinux_start") { }
|
||||||
|
virtual int getFormat() const { return UPX_F_VMLINUX_PPC32; }
|
||||||
|
virtual const char *getName() const { return "vmlinux/ppc32"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "powerpc-linux.kernel.vmlinux"; }
|
||||||
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
virtual void defineDecompressorSymbols();
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual bool is_valid_e_entry(Addr);
|
||||||
|
virtual bool has_valid_vmlinux_head();
|
||||||
|
virtual unsigned write_vmlinux_head(
|
||||||
|
OutputFile *const fo,
|
||||||
|
Shdr *const stxt
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64>
|
class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64>
|
||||||
{
|
{
|
||||||
|
|||||||
+14
-5
@@ -208,15 +208,24 @@ int PackVmlinuzI386::decompressKernel()
|
|||||||
if (fd_pos != file_size)
|
if (fd_pos != file_size)
|
||||||
{
|
{
|
||||||
//printf("fd_pos: %ld, file_size: %ld\n", (long)fd_pos, (long)file_size);
|
//printf("fd_pos: %ld, file_size: %ld\n", (long)fd_pos, (long)file_size);
|
||||||
throwCantPack("trailing bytes after kernel image; use option '-f' to force packing");
|
|
||||||
|
// linux-2.6.21.5/arch/i386/boot/compressed/vmlinux.lds
|
||||||
|
// puts .data.compressed ahead of .text, .rodata, etc;
|
||||||
|
// so piggy.o need not be last in bzImage. Alas.
|
||||||
|
//throwCantPack("trailing bytes after kernel image; use option '-f' to force packing");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// see /usr/src/linux/arch/i386/kernel/head.S
|
// see /usr/src/linux/arch/i386/kernel/head.S
|
||||||
// 2.4.x: cld; mov $...,%eax
|
// 2.4.x: [cli;] cld; mov $...,%eax
|
||||||
if (memcmp(ibuf, "\xFC\xB8", 2) == 0) goto head_ok;
|
if (memcmp(ibuf, "\xFC\xB8", 2) == 0) goto head_ok;
|
||||||
// 2.6.x: cld; lgdt ...
|
if (memcmp(ibuf, "\xFA\xFC\xB8", 3) == 0) goto head_ok;
|
||||||
if (memcmp(ibuf, "\xFC\x0F\x01", 3) == 0) goto head_ok;
|
// 2.6.21.5 CONFIG_PARAVIRT mov %cs,%eax; test $3,%eax; jne ...;
|
||||||
|
if (memcmp(ibuf, "\x8c\xc8\xa9\x03\x00\x00\x00\x0f\x85", 9) == 0) goto head_ok;
|
||||||
|
if (memcmp(ibuf, "\x8c\xc8\xa8\x03\x0f\x85", 6) == 0) goto head_ok;
|
||||||
|
// 2.6.x: [cli;] cld; lgdt ...
|
||||||
|
if (memcmp(ibuf, "\xFC\x0F\x01", 3) == 0) goto head_ok;
|
||||||
|
if (memcmp(ibuf, "\xFA\xFC\x0F\x01", 4) == 0) goto head_ok;
|
||||||
// 2.6.x+grsecurity+strongswan+openwall+trustix: ljmp $0x10,...
|
// 2.6.x+grsecurity+strongswan+openwall+trustix: ljmp $0x10,...
|
||||||
if (ibuf[0] == 0xEA && memcmp(ibuf+5, "\x10\x00", 2) == 0) goto head_ok;
|
if (ibuf[0] == 0xEA && memcmp(ibuf+5, "\x10\x00", 2) == 0) goto head_ok;
|
||||||
// x86_64 2.6.x
|
// x86_64 2.6.x
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ protected:
|
|||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft);
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const;
|
||||||
|
|
||||||
// virtual const upx_byte *getLoader() const;
|
// virtual upx_byte *getLoader() const;
|
||||||
// virtual int getLoaderSize() const;
|
// virtual int getLoaderSize() const;
|
||||||
|
|
||||||
struct boot_sect_t
|
struct boot_sect_t
|
||||||
|
|||||||
+2
-1
@@ -42,7 +42,8 @@ public:
|
|||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_WIN16_NE; }
|
virtual int getFormat() const { return UPX_F_WIN16_NE; }
|
||||||
virtual const char *getName() const { return "win16/ne"; }
|
virtual const char *getName() const { return "win16/ne"; }
|
||||||
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_286 ? "i286-win16.ne" : "i386-win16.ne"; }
|
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_286 ? "i286-win16.ne" : "i386-win16.ne"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "i286-win16.ne"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
|||||||
+14
-2
@@ -592,6 +592,10 @@ void PackW32Pe::buildLoader(const Filter *ft)
|
|||||||
|
|
||||||
void PackW32Pe::pack(OutputFile *fo)
|
void PackW32Pe::pack(OutputFile *fo)
|
||||||
{
|
{
|
||||||
|
// FIXME: we need to think about better support for --exact
|
||||||
|
if (opt->exact)
|
||||||
|
throwCantPackExact();
|
||||||
|
|
||||||
const unsigned objs = ih.objects;
|
const unsigned objs = ih.objects;
|
||||||
isection = new pe_section_t[objs];
|
isection = new pe_section_t[objs];
|
||||||
fi->seek(pe_offset+sizeof(ih),SEEK_SET);
|
fi->seek(pe_offset+sizeof(ih),SEEK_SET);
|
||||||
@@ -607,7 +611,8 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
(ih.cpu < 0x14c || ih.cpu > 0x150)
|
(ih.cpu < 0x14c || ih.cpu > 0x150)
|
||||||
|| (ih.opthdrsize != 0xe0)
|
|| (ih.opthdrsize != 0xe0)
|
||||||
|| ((ih.flags & EXECUTABLE) == 0)
|
|| ((ih.flags & EXECUTABLE) == 0)
|
||||||
|| (ih.subsystem != 2 && ih.subsystem != 3 && ih.subsystem != 1)
|
|| (ih.subsystem != 2 && ih.subsystem != 3
|
||||||
|
&& ih.subsystem != 1 && ih.subsystem != 9)
|
||||||
|| (ih.entry == 0 && !isdll)
|
|| (ih.entry == 0 && !isdll)
|
||||||
|| (ih.ddirsentries != 16)
|
|| (ih.ddirsentries != 16)
|
||||||
|| IDSIZE(PEDIR_EXCEPTION) // is this used on i386?
|
|| IDSIZE(PEDIR_EXCEPTION) // is this used on i386?
|
||||||
@@ -615,6 +620,9 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
))
|
))
|
||||||
throwCantPack("unexpected value in PE header (try --force)");
|
throwCantPack("unexpected value in PE header (try --force)");
|
||||||
|
|
||||||
|
if (ih.subsystem == 9)
|
||||||
|
throwCantPack("x86/wince files are not yet supported");
|
||||||
|
|
||||||
if (IDSIZE(PEDIR_SEC))
|
if (IDSIZE(PEDIR_SEC))
|
||||||
IDSIZE(PEDIR_SEC) = IDADDR(PEDIR_SEC) = 0;
|
IDSIZE(PEDIR_SEC) = IDADDR(PEDIR_SEC) = 0;
|
||||||
if (IDSIZE(PEDIR_COMRT))
|
if (IDSIZE(PEDIR_COMRT))
|
||||||
@@ -625,10 +633,12 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
else if (opt->win32_pe.strip_relocs < 0)
|
else if (opt->win32_pe.strip_relocs < 0)
|
||||||
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x400000);
|
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x400000);
|
||||||
if (opt->win32_pe.strip_relocs)
|
if (opt->win32_pe.strip_relocs)
|
||||||
|
{
|
||||||
if (ih.imagebase < 0x400000)
|
if (ih.imagebase < 0x400000)
|
||||||
throwCantPack("--strip-relocs is not allowed when imagebase < 0x400000");
|
throwCantPack("--strip-relocs is not allowed when imagebase < 0x400000");
|
||||||
else
|
else
|
||||||
ih.flags |= RELOCS_STRIPPED;
|
ih.flags |= RELOCS_STRIPPED;
|
||||||
|
}
|
||||||
|
|
||||||
if (memcmp(isection[0].name,"UPX",3) == 0)
|
if (memcmp(isection[0].name,"UPX",3) == 0)
|
||||||
throwAlreadyPackedByUPX();
|
throwAlreadyPackedByUPX();
|
||||||
@@ -717,7 +727,7 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
|
|
||||||
//OutputFile::dump("x1", ibuf, usize);
|
//OutputFile::dump("x1", ibuf, usize);
|
||||||
|
|
||||||
// some checks for broken linkers - disable filter if neccessary
|
// some checks for broken linkers - disable filter if necessary
|
||||||
bool allow_filter = true;
|
bool allow_filter = true;
|
||||||
if (ih.codebase == ih.database
|
if (ih.codebase == ih.database
|
||||||
|| ih.codebase + ih.codesize > ih.imagesize
|
|| ih.codebase + ih.codesize > ih.imagesize
|
||||||
@@ -1017,6 +1027,8 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
oh.codebase = osection[1].vaddr;
|
oh.codebase = osection[1].vaddr;
|
||||||
// oh.headersize = osection[0].rawdataptr;
|
// oh.headersize = osection[0].rawdataptr;
|
||||||
oh.headersize = rvamin;
|
oh.headersize = rvamin;
|
||||||
|
if (rvamin < osection[0].rawdataptr)
|
||||||
|
throwCantPack("object alignment too small");
|
||||||
|
|
||||||
if (opt->win32_pe.strip_relocs && !isdll)
|
if (opt->win32_pe.strip_relocs && !isdll)
|
||||||
oh.flags |= RELOCS_STRIPPED;
|
oh.flags |= RELOCS_STRIPPED;
|
||||||
|
|||||||
+39
-29
@@ -46,7 +46,7 @@ Packer::Packer(InputFile *f) :
|
|||||||
last_patch(NULL), last_patch_len(0), last_patch_off(0)
|
last_patch(NULL), last_patch_len(0), last_patch_off(0)
|
||||||
{
|
{
|
||||||
if (fi != NULL)
|
if (fi != NULL)
|
||||||
file_size = fi->st.st_size;
|
file_size = fi->st_size();
|
||||||
uip = new UiPacker(this);
|
uip = new UiPacker(this);
|
||||||
memset(&ph, 0, sizeof(ph));
|
memset(&ph, 0, sizeof(ph));
|
||||||
}
|
}
|
||||||
@@ -67,8 +67,9 @@ void Packer::assertPacker() const
|
|||||||
assert(getVersion() >= 11);
|
assert(getVersion() >= 11);
|
||||||
assert(getVersion() <= 14);
|
assert(getVersion() <= 14);
|
||||||
assert(strlen(getName()) <= 13);
|
assert(strlen(getName()) <= 13);
|
||||||
assert(strlen(getFullName(opt)) <= 26); // "i386-linux.kernel.bvmlinuz"
|
// info: 32 is limit for show_all_packers() in help.cpp
|
||||||
assert(strlen(getFullName(NULL)) <= 26); // "i386-linux.kernel.bvmlinuz"
|
assert(strlen(getFullName(opt)) <= 28);
|
||||||
|
assert(strlen(getFullName(NULL)) <= 28);
|
||||||
if (bele == NULL) fprintf(stderr, "%s\n", getName());
|
if (bele == NULL) fprintf(stderr, "%s\n", getName());
|
||||||
assert(bele != NULL);
|
assert(bele != NULL);
|
||||||
#if 1
|
#if 1
|
||||||
@@ -245,7 +246,7 @@ bool Packer::compress(upx_bytep i_ptr, unsigned i_len, upx_bytep o_ptr,
|
|||||||
uip->endCallback();
|
uip->endCallback();
|
||||||
|
|
||||||
if (r == UPX_E_OUT_OF_MEMORY)
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
throwCantPack("out of memory");
|
throwOutOfMemoryException();
|
||||||
if (r != UPX_E_OK)
|
if (r != UPX_E_OK)
|
||||||
throwInternalError("compression failed");
|
throwInternalError("compression failed");
|
||||||
|
|
||||||
@@ -282,6 +283,8 @@ bool Packer::compress(upx_bytep i_ptr, unsigned i_len, upx_bytep o_ptr,
|
|||||||
// decompress
|
// decompress
|
||||||
unsigned new_len = ph.u_len;
|
unsigned new_len = ph.u_len;
|
||||||
r = upx_decompress(o_ptr, ph.c_len, i_ptr, &new_len, ph.method, &ph.compress_result);
|
r = upx_decompress(o_ptr, ph.c_len, i_ptr, &new_len, ph.method, &ph.compress_result);
|
||||||
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
|
throwOutOfMemoryException();
|
||||||
//printf("%d %d: %d %d %d\n", ph.method, r, ph.c_len, ph.u_len, new_len);
|
//printf("%d %d: %d %d %d\n", ph.method, r, ph.c_len, ph.u_len, new_len);
|
||||||
if (r != UPX_E_OK)
|
if (r != UPX_E_OK)
|
||||||
throwInternalError("decompression failed");
|
throwInternalError("decompression failed");
|
||||||
@@ -360,6 +363,8 @@ void ph_decompress(PackHeader &ph, const upx_bytep in, upx_bytep out,
|
|||||||
// decompress
|
// decompress
|
||||||
unsigned new_len = ph.u_len;
|
unsigned new_len = ph.u_len;
|
||||||
int r = upx_decompress(in, ph.c_len, out, &new_len, ph.method, &ph.compress_result);
|
int r = upx_decompress(in, ph.c_len, out, &new_len, ph.method, &ph.compress_result);
|
||||||
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
|
throwOutOfMemoryException();
|
||||||
if (r != UPX_E_OK || new_len != ph.u_len)
|
if (r != UPX_E_OK || new_len != ph.u_len)
|
||||||
throwCompressedDataViolation();
|
throwCompressedDataViolation();
|
||||||
|
|
||||||
@@ -386,13 +391,16 @@ void Packer::decompress(const upx_bytep in, upx_bytep out,
|
|||||||
// overlapping decompression
|
// overlapping decompression
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
bool ph_testOverlappingDecompression(const PackHeader &ph, const upx_bytep buf,
|
bool ph_testOverlappingDecompression(const PackHeader &ph,
|
||||||
|
const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned overlap_overhead)
|
unsigned overlap_overhead)
|
||||||
{
|
{
|
||||||
if (ph.c_len >= ph.u_len)
|
if (ph.c_len >= ph.u_len)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
assert((int)overlap_overhead >= 0);
|
assert((int) overlap_overhead >= 0);
|
||||||
|
assert((int) (ph.u_len + overlap_overhead) >= 0);
|
||||||
|
|
||||||
// Because upx_test_overlap() does not use the asm_fast decompressor
|
// Because upx_test_overlap() does not use the asm_fast decompressor
|
||||||
// we must account for extra 3 bytes that asm_fast does use,
|
// we must account for extra 3 bytes that asm_fast does use,
|
||||||
@@ -406,16 +414,19 @@ bool ph_testOverlappingDecompression(const PackHeader &ph, const upx_bytep buf,
|
|||||||
|
|
||||||
unsigned src_off = ph.u_len + overlap_overhead - ph.c_len;
|
unsigned src_off = ph.u_len + overlap_overhead - ph.c_len;
|
||||||
unsigned new_len = ph.u_len;
|
unsigned new_len = ph.u_len;
|
||||||
int r = upx_test_overlap(buf - src_off, src_off,
|
int r = upx_test_overlap(buf - src_off, tbuf,
|
||||||
ph.c_len, &new_len, ph.method, &ph.compress_result);
|
src_off, ph.c_len, &new_len,
|
||||||
|
ph.method, &ph.compress_result);
|
||||||
|
if (r == UPX_E_OUT_OF_MEMORY)
|
||||||
|
throwOutOfMemoryException();
|
||||||
return (r == UPX_E_OK && new_len == ph.u_len);
|
return (r == UPX_E_OK && new_len == ph.u_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Packer::testOverlappingDecompression(const upx_bytep buf,
|
bool Packer::testOverlappingDecompression(const upx_bytep buf, const upx_bytep tbuf,
|
||||||
unsigned overlap_overhead) const
|
unsigned overlap_overhead) const
|
||||||
{
|
{
|
||||||
return ph_testOverlappingDecompression(ph, buf, overlap_overhead);
|
return ph_testOverlappingDecompression(ph, buf, tbuf, overlap_overhead);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -474,6 +485,7 @@ void Packer::verifyOverlappingDecompression(upx_bytep o_ptr, unsigned o_size, Fi
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
unsigned Packer::findOverlapOverhead(const upx_bytep buf,
|
unsigned Packer::findOverlapOverhead(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned range,
|
unsigned range,
|
||||||
unsigned upper_limit) const
|
unsigned upper_limit) const
|
||||||
{
|
{
|
||||||
@@ -481,7 +493,7 @@ unsigned Packer::findOverlapOverhead(const upx_bytep buf,
|
|||||||
|
|
||||||
// prepare to deal with very pessimistic values
|
// prepare to deal with very pessimistic values
|
||||||
unsigned low = 1;
|
unsigned low = 1;
|
||||||
unsigned high = UPX_MIN(ph.u_len / 4 + 512, upper_limit);
|
unsigned high = UPX_MIN(ph.u_len + 512, upper_limit);
|
||||||
// but be optimistic for first try (speedup)
|
// but be optimistic for first try (speedup)
|
||||||
unsigned m = UPX_MIN(16u, high);
|
unsigned m = UPX_MIN(16u, high);
|
||||||
//
|
//
|
||||||
@@ -493,21 +505,23 @@ unsigned Packer::findOverlapOverhead(const upx_bytep buf,
|
|||||||
assert(m >= low); assert(m <= high);
|
assert(m >= low); assert(m <= high);
|
||||||
assert(m < overhead || overhead == 0);
|
assert(m < overhead || overhead == 0);
|
||||||
nr++;
|
nr++;
|
||||||
bool success = testOverlappingDecompression(buf, m);
|
bool success = testOverlappingDecompression(buf, tbuf, m);
|
||||||
//printf("testOverlapOverhead: %d %d -> %d\n", nr, m, (int)success);
|
//printf("testOverlapOverhead(%d): %d %d: %d -> %d\n", nr, low, high, m, (int)success);
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
overhead = m;
|
overhead = m;
|
||||||
// Succeed early if m lies in [low .. low+range-1], i.e. if
|
// Succeed early if m lies in [low .. low+range-1], i.e. if
|
||||||
// if the range of the current interval is <= range.
|
// if the range of the current interval is <= range.
|
||||||
//if (m <= low + range - 1)
|
// if (m <= low + range - 1)
|
||||||
if (m + 1 <= low + range) // avoid underflow
|
// if (m < low + range)
|
||||||
|
if (m - low < range) // avoid underflow
|
||||||
break;
|
break;
|
||||||
high = m - 1;
|
high = m - 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
low = m + 1;
|
low = m + 1;
|
||||||
m = (low + high) / 2;
|
////m = (low + high) / 2;
|
||||||
|
m = (low & high) + ((low ^ high) >> 1); // avoid overflow
|
||||||
}
|
}
|
||||||
|
|
||||||
//printf("findOverlapOverhead: %d (%d tries)\n", overhead, nr);
|
//printf("findOverlapOverhead: %d (%d tries)\n", overhead, nr);
|
||||||
@@ -684,7 +698,7 @@ int Packer::patchPackHeader(void *b, int blen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Packer::getPackHeader(void *b, int blen)
|
bool Packer::getPackHeader(void *b, int blen, bool allow_incompressible)
|
||||||
{
|
{
|
||||||
if (!ph.fillPackHeader((unsigned char *)b, blen))
|
if (!ph.fillPackHeader((unsigned char *)b, blen))
|
||||||
return false;
|
return false;
|
||||||
@@ -697,7 +711,9 @@ bool Packer::getPackHeader(void *b, int blen)
|
|||||||
if (!testUnpackVersion(ph.version))
|
if (!testUnpackVersion(ph.version))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (ph.c_len >= ph.u_len || (off_t)ph.c_len >= file_size
|
if (ph.c_len > ph.u_len
|
||||||
|
|| (ph.c_len == ph.u_len && !allow_incompressible)
|
||||||
|
|| (off_t)ph.c_len >= file_size
|
||||||
|| ph.version <= 0 || ph.version >= 0xff)
|
|| ph.version <= 0 || ph.version >= 0xff)
|
||||||
throwCantUnpack("header corrupted");
|
throwCantUnpack("header corrupted");
|
||||||
else if ((off_t)ph.u_len > ph.u_file_size)
|
else if ((off_t)ph.u_len > ph.u_file_size)
|
||||||
@@ -722,14 +738,14 @@ bool Packer::getPackHeader(void *b, int blen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Packer::readPackHeader(int len)
|
bool Packer::readPackHeader(int len, bool allow_incompressible)
|
||||||
{
|
{
|
||||||
assert((int)len > 0);
|
assert((int)len > 0);
|
||||||
MemBuffer buf(len);
|
MemBuffer buf(len);
|
||||||
len = fi->read(buf, len);
|
len = fi->read(buf, len);
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
return false;
|
return false;
|
||||||
return getPackHeader(buf, len);
|
return getPackHeader(buf, len, allow_incompressible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1082,14 +1098,8 @@ void Packer::addLoader(C a, C b, C c, C d, C e, C f, C g, C h, C i, C j)
|
|||||||
void __acc_cdecl_va Packer::addLoaderVA(const char *s, ...)
|
void __acc_cdecl_va Packer::addLoaderVA(const char *s, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
const char *t = s;
|
|
||||||
|
|
||||||
va_start(ap, s);
|
va_start(ap, s);
|
||||||
while (t != NULL)
|
linker->addLoader(s, ap);
|
||||||
{
|
|
||||||
linker->addLoader(t);
|
|
||||||
t = va_arg(ap, const char *);
|
|
||||||
}
|
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1196,7 +1206,7 @@ void Packer::relocateLoader()
|
|||||||
// The workaround is for hdr_buf and hdr_u_len to describe the Elf headers
|
// The workaround is for hdr_buf and hdr_u_len to describe the Elf headers
|
||||||
// (typically less than 512 bytes) when .text is passed in, and include
|
// (typically less than 512 bytes) when .text is passed in, and include
|
||||||
// them in the calculation of shortest output. Then the result
|
// them in the calculation of shortest output. Then the result
|
||||||
// this->ph.method will say which [single] method to use for everthing.
|
// this->ph.method will say which [single] method to use for everything.
|
||||||
// The Elf headers are never filtered. They are short enough (< 512 bytes)
|
// The Elf headers are never filtered. They are short enough (< 512 bytes)
|
||||||
// that compressing them more than once per method (once here when choosing,
|
// that compressing them more than once per method (once here when choosing,
|
||||||
// once again just before writing [because compressWithFilters discards])
|
// once again just before writing [because compressWithFilters discards])
|
||||||
@@ -1415,7 +1425,7 @@ void Packer::compressWithFilters(upx_bytep i_ptr, unsigned i_len,
|
|||||||
if (ph.c_len + lsize + hdr_c_len <= best_ph.c_len + best_ph_lsize + best_hdr_c_len)
|
if (ph.c_len + lsize + hdr_c_len <= best_ph.c_len + best_ph_lsize + best_hdr_c_len)
|
||||||
{
|
{
|
||||||
// get results
|
// get results
|
||||||
ph.overlap_overhead = findOverlapOverhead(o_tmp, overlap_range);
|
ph.overlap_overhead = findOverlapOverhead(o_tmp, i_ptr, overlap_range);
|
||||||
buildLoader(&ft);
|
buildLoader(&ft);
|
||||||
lsize = getLoaderSize();
|
lsize = getLoaderSize();
|
||||||
assert(lsize > 0);
|
assert(lsize > 0);
|
||||||
|
|||||||
+4
-2
@@ -203,9 +203,11 @@ protected:
|
|||||||
// util for verifying overlapping decompresion
|
// util for verifying overlapping decompresion
|
||||||
// non-destructive test
|
// non-destructive test
|
||||||
virtual bool testOverlappingDecompression(const upx_bytep buf,
|
virtual bool testOverlappingDecompression(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned overlap_overhead) const;
|
unsigned overlap_overhead) const;
|
||||||
// non-destructive find
|
// non-destructive find
|
||||||
virtual unsigned findOverlapOverhead(const upx_bytep buf,
|
virtual unsigned findOverlapOverhead(const upx_bytep buf,
|
||||||
|
const upx_bytep tbuf,
|
||||||
unsigned range = 0,
|
unsigned range = 0,
|
||||||
unsigned upper_limit = ~0u) const;
|
unsigned upper_limit = ~0u) const;
|
||||||
// destructive decompress + verify
|
// destructive decompress + verify
|
||||||
@@ -214,8 +216,8 @@ protected:
|
|||||||
|
|
||||||
// packheader handling
|
// packheader handling
|
||||||
virtual int patchPackHeader(void *b, int blen);
|
virtual int patchPackHeader(void *b, int blen);
|
||||||
virtual bool getPackHeader(void *b, int blen);
|
virtual bool getPackHeader(void *b, int blen, bool allow_incompressible=false);
|
||||||
virtual bool readPackHeader(int len);
|
virtual bool readPackHeader(int len, bool allow_incompressible=false);
|
||||||
virtual void checkAlreadyPacked(const void *b, int blen);
|
virtual void checkAlreadyPacked(const void *b, int blen);
|
||||||
|
|
||||||
// loader core
|
// loader core
|
||||||
|
|||||||
+23
-6
@@ -208,11 +208,15 @@ const char *Packer::getDecompressorSections() const
|
|||||||
if (UPX_F_LINUX_ELF_i386 ==ph.format
|
if (UPX_F_LINUX_ELF_i386 ==ph.format
|
||||||
|| UPX_F_LINUX_ELFI_i386 ==ph.format
|
|| UPX_F_LINUX_ELFI_i386 ==ph.format
|
||||||
|| UPX_F_LINUX_ELF64_AMD ==ph.format
|
|| UPX_F_LINUX_ELF64_AMD ==ph.format
|
||||||
|| UPX_F_LINUX_ELF32_ARMLE==ph.format
|
|| UPX_F_LINUX_ELF32_ARMEL==ph.format
|
||||||
|| UPX_F_LINUX_ELFPPC32 ==ph.format
|
|| UPX_F_LINUX_ELFPPC32 ==ph.format
|
||||||
|| UPX_F_LINUX_ELF32_ARMBE==ph.format
|
|| UPX_F_LINUX_ELF32_ARMEB==ph.format
|
||||||
|| UPX_F_BSD_ELF_i386 ==ph.format
|
|| UPX_F_BSD_ELF_i386 ==ph.format
|
||||||
|| UPX_F_VMLINUX_ARM ==ph.format
|
|| UPX_F_VMLINUX_ARMEL ==ph.format
|
||||||
|
|| UPX_F_VMLINUX_ARMEB ==ph.format
|
||||||
|
|| UPX_F_VMLINUX_PPC32 ==ph.format
|
||||||
|
|| UPX_F_MACH_PPC32 ==ph.format
|
||||||
|
|| UPX_F_MACH_i386 ==ph.format
|
||||||
) {
|
) {
|
||||||
return opt->small ? lzma_elf_small : lzma_elf_fast;
|
return opt->small ? lzma_elf_small : lzma_elf_fast;
|
||||||
}
|
}
|
||||||
@@ -242,11 +246,15 @@ void Packer::defineDecompressorSymbols()
|
|||||||
if (UPX_F_LINUX_ELF_i386 ==ph.format
|
if (UPX_F_LINUX_ELF_i386 ==ph.format
|
||||||
|| UPX_F_LINUX_ELFI_i386 ==ph.format
|
|| UPX_F_LINUX_ELFI_i386 ==ph.format
|
||||||
|| UPX_F_LINUX_ELF64_AMD ==ph.format
|
|| UPX_F_LINUX_ELF64_AMD ==ph.format
|
||||||
|| UPX_F_LINUX_ELF32_ARMLE==ph.format
|
|| UPX_F_LINUX_ELF32_ARMEL==ph.format
|
||||||
|| UPX_F_LINUX_ELFPPC32 ==ph.format
|
|| UPX_F_LINUX_ELFPPC32 ==ph.format
|
||||||
|| UPX_F_LINUX_ELF32_ARMBE==ph.format
|
|| UPX_F_LINUX_ELF32_ARMEB==ph.format
|
||||||
|| UPX_F_BSD_ELF_i386 ==ph.format
|
|| UPX_F_BSD_ELF_i386 ==ph.format
|
||||||
|| UPX_F_VMLINUX_ARM ==ph.format
|
|| UPX_F_VMLINUX_ARMEL ==ph.format
|
||||||
|
|| UPX_F_VMLINUX_ARMEB ==ph.format
|
||||||
|
|| UPX_F_VMLINUX_PPC32 ==ph.format
|
||||||
|
|| UPX_F_MACH_PPC32 ==ph.format
|
||||||
|
|| UPX_F_MACH_i386 ==ph.format
|
||||||
) {
|
) {
|
||||||
// ELF calls the decompressor many times; the parameters change!
|
// ELF calls the decompressor many times; the parameters change!
|
||||||
return;
|
return;
|
||||||
@@ -268,6 +276,15 @@ void Packer::defineDecompressorSymbols()
|
|||||||
linker->defineSymbol("lzma_u_len", ph.u_len);
|
linker->defineSymbol("lzma_u_len", ph.u_len);
|
||||||
unsigned stack = getDecompressorWrkmemSize();
|
unsigned stack = getDecompressorWrkmemSize();
|
||||||
linker->defineSymbol("lzma_stack_adjust", 0u - stack);
|
linker->defineSymbol("lzma_stack_adjust", 0u - stack);
|
||||||
|
|
||||||
|
if (ph.format == UPX_F_DOS_EXE)
|
||||||
|
{
|
||||||
|
linker->defineSymbol("lzma_properties_hi", properties / 65536);
|
||||||
|
// -2 for properties
|
||||||
|
linker->defineSymbol("lzma_c_len_hi", (ph.c_len - 2) / 65536);
|
||||||
|
linker->defineSymbol("lzma_u_len_hi", ph.u_len / 65536);
|
||||||
|
linker->defineSymbol("lzma_u_len_segment", (ph.u_len & 0xf0000) >> 4);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-2
@@ -192,7 +192,11 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
|||||||
//
|
//
|
||||||
// linux kernel
|
// linux kernel
|
||||||
//
|
//
|
||||||
if ((p = func(new PackVmlinuxARM(f), user)) != NULL)
|
if ((p = func(new PackVmlinuxARMEL(f), user)) != NULL)
|
||||||
|
return p;
|
||||||
|
if ((p = func(new PackVmlinuxARMEB(f), user)) != NULL)
|
||||||
|
return p;
|
||||||
|
if ((p = func(new PackVmlinuxPPC32(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
|
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
@@ -239,12 +243,16 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
|||||||
return p;
|
return p;
|
||||||
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
|
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
|
if ((p = func(new PackLinuxElf32mipsel(f), user)) != NULL)
|
||||||
|
return p;
|
||||||
if ((p = func(new PackLinuxI386sh(f), user)) != NULL)
|
if ((p = func(new PackLinuxI386sh(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
if ((p = func(new PackBSDI386(f), user)) != NULL)
|
if ((p = func(new PackBSDI386(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
if ((p = func(new PackLinuxI386(f), user)) != NULL)
|
if ((p = func(new PackMachFat(f), user)) != NULL) // cafebabe conflict
|
||||||
|
return p;
|
||||||
|
if ((p = func(new PackLinuxI386(f), user)) != NULL) // cafebabe conflict
|
||||||
return p;
|
return p;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -264,6 +272,8 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
|||||||
// Mach (MacOS X PowerPC)
|
// Mach (MacOS X PowerPC)
|
||||||
if ((p = func(new PackMachPPC32(f), user)) != NULL)
|
if ((p = func(new PackMachPPC32(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
|
if ((p = func(new PackMachI386(f), user)) != NULL)
|
||||||
|
return p;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
+44
-32
@@ -50,18 +50,6 @@
|
|||||||
# define strcpy(a,b) strcpy((char *)(a),(const char *)(b))
|
# define strcpy(a,b) strcpy((char *)(a),(const char *)(b))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Unicode string compare
|
|
||||||
static bool ustrsame(const void *s1, const void *s2)
|
|
||||||
{
|
|
||||||
unsigned len1 = get_le16(s1);
|
|
||||||
unsigned len2 = get_le16(s2);
|
|
||||||
if (len1 != len2)
|
|
||||||
return false;
|
|
||||||
return memcmp(s1, s2, 2 + 2*len1) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#if (__ACC_CXX_HAVE_PLACEMENT_DELETE) || defined(__DJGPP__)
|
#if (__ACC_CXX_HAVE_PLACEMENT_DELETE) || defined(__DJGPP__)
|
||||||
#include "bptr.h"
|
#include "bptr.h"
|
||||||
#define IPTR(type, var) BoundedPtr<type> var(ibuf, ibuf.getSize())
|
#define IPTR(type, var) BoundedPtr<type> var(ibuf, ibuf.getSize())
|
||||||
@@ -1245,6 +1233,12 @@ upx_byte *PeFile::Resource::build()
|
|||||||
newstart = new upx_byte [dirsize()];
|
newstart = new upx_byte [dirsize()];
|
||||||
unsigned bpos = 0,spos = dsize;
|
unsigned bpos = 0,spos = dsize;
|
||||||
build(root,bpos,spos,0);
|
build(root,bpos,spos,0);
|
||||||
|
|
||||||
|
// dirsize() is 4 bytes aligned, so we may need to zero
|
||||||
|
// up to 2 bytes to make valgrind happy
|
||||||
|
while (spos < dirsize())
|
||||||
|
newstart[spos++] = 0;
|
||||||
|
|
||||||
return newstart;
|
return newstart;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1349,7 +1343,7 @@ static bool match(unsigned itype, const unsigned char *ntype,
|
|||||||
if (unistr[2 + ic * 2] != (unsigned char) mkeep[ic])
|
if (unistr[2 + ic * 2] != (unsigned char) mkeep[ic])
|
||||||
return false;
|
return false;
|
||||||
return mkeep[ic] == 0 || mkeep[ic] == ',' || mkeep[ic] == '/';
|
return mkeep[ic] == 0 || mkeep[ic] == ',' || mkeep[ic] == '/';
|
||||||
};
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME this comparison is not too exact
|
// FIXME this comparison is not too exact
|
||||||
@@ -1404,15 +1398,31 @@ void PeFile::processResources(Resource *res)
|
|||||||
oresources = new upx_byte[soresources];
|
oresources = new upx_byte[soresources];
|
||||||
upx_byte *ores = oresources + res->dirsize();
|
upx_byte *ores = oresources + res->dirsize();
|
||||||
|
|
||||||
|
char *keep_icons = NULL; // icon ids in the first icon group
|
||||||
unsigned iconsin1stdir = 0;
|
unsigned iconsin1stdir = 0;
|
||||||
if (opt->win32_pe.compress_icons == 2)
|
if (opt->win32_pe.compress_icons == 2)
|
||||||
while (res->next()) // there is no rewind() in Resource
|
while (res->next()) // there is no rewind() in Resource
|
||||||
if (res->itype() == RT_GROUP_ICON && iconsin1stdir == 0)
|
if (res->itype() == RT_GROUP_ICON && iconsin1stdir == 0)
|
||||||
|
{
|
||||||
iconsin1stdir = get_le16(ibuf + res->offs() + 4);
|
iconsin1stdir = get_le16(ibuf + res->offs() + 4);
|
||||||
|
keep_icons = new char[1 + iconsin1stdir * 9];
|
||||||
|
*keep_icons = 0;
|
||||||
|
for (unsigned ic = 0; ic < iconsin1stdir; ic++)
|
||||||
|
snprintf(keep_icons + strlen(keep_icons), 9, "3/%u,",
|
||||||
|
get_le16(ibuf + res->offs() + 6 + ic * 14 + 12));
|
||||||
|
if (*keep_icons)
|
||||||
|
keep_icons[strlen(keep_icons) - 1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool compress_icon = opt->win32_pe.compress_icons == 3;
|
// the icon id which should not be compressed when compress_icons == 1
|
||||||
bool compress_idir = false;
|
unsigned first_icon_id = (unsigned) -1;
|
||||||
unsigned iconcnt = 0;
|
if (opt->win32_pe.compress_icons == 1)
|
||||||
|
while (res->next())
|
||||||
|
if (res->itype() == RT_GROUP_ICON && first_icon_id == (unsigned) -1)
|
||||||
|
first_icon_id = get_le16(ibuf + res->offs() + 6 + 12);
|
||||||
|
|
||||||
|
bool compress_icon = opt->win32_pe.compress_icons > 1;
|
||||||
|
bool compress_idir = opt->win32_pe.compress_icons == 3;
|
||||||
|
|
||||||
// some statistics
|
// some statistics
|
||||||
unsigned usize = 0;
|
unsigned usize = 0;
|
||||||
@@ -1426,26 +1436,27 @@ void PeFile::processResources(Resource *res)
|
|||||||
bool do_compress = true;
|
bool do_compress = true;
|
||||||
if (!opt->win32_pe.compress_resources)
|
if (!opt->win32_pe.compress_resources)
|
||||||
do_compress = false;
|
do_compress = false;
|
||||||
else if (rtype == RT_VERSION) // version info
|
|
||||||
do_compress = false;
|
|
||||||
else if (rtype == RT_ICON) // icon
|
else if (rtype == RT_ICON) // icon
|
||||||
do_compress = compress_icon && opt->win32_pe.compress_icons;
|
{
|
||||||
|
if (opt->win32_pe.compress_icons == 0)
|
||||||
|
do_compress = false;
|
||||||
|
else if (opt->win32_pe.compress_icons == 1)
|
||||||
|
if ((first_icon_id == (unsigned) -1
|
||||||
|
|| first_icon_id == res->iname()))
|
||||||
|
do_compress = compress_icon;
|
||||||
|
}
|
||||||
else if (rtype == RT_GROUP_ICON) // icon directory
|
else if (rtype == RT_GROUP_ICON) // icon directory
|
||||||
do_compress = compress_idir && opt->win32_pe.compress_icons;
|
do_compress = compress_idir && opt->win32_pe.compress_icons;
|
||||||
else if (rtype > 0 && rtype < RT_LAST)
|
else if (rtype > 0 && rtype < RT_LAST)
|
||||||
do_compress = opt->win32_pe.compress_rt[rtype] ? true : false;
|
do_compress = opt->win32_pe.compress_rt[rtype] ? true : false;
|
||||||
else if (res->ntype()) // named resource type
|
|
||||||
{
|
|
||||||
const upx_byte * const t = res->ntype();
|
|
||||||
if (ustrsame(t, "\x7\x0T\x0Y\x0P\x0""E\x0L\x0I\x0""B\x0"))
|
|
||||||
do_compress = false; // u"TYPELIB"
|
|
||||||
else if (ustrsame(t, "\x8\x0R\x0""E\x0G\x0I\x0S\x0T\x0R\x0Y\x0"))
|
|
||||||
do_compress = false; // u"REGISTRY"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_compress && opt->win32_pe.keep_resource[0])
|
if (keep_icons)
|
||||||
do_compress ^= match(res->itype(), res->ntype(), res->iname(),
|
do_compress &= !match(res->itype(), res->ntype(), res->iname(),
|
||||||
res->nname(), opt->win32_pe.keep_resource);
|
res->nname(), keep_icons);
|
||||||
|
do_compress &= !match(res->itype(), res->ntype(), res->iname(),
|
||||||
|
res->nname(), "TYPELIB,REGISTRY,16");
|
||||||
|
do_compress &= !match(res->itype(), res->ntype(), res->iname(),
|
||||||
|
res->nname(), opt->win32_pe.keep_resource);
|
||||||
|
|
||||||
if (do_compress)
|
if (do_compress)
|
||||||
{
|
{
|
||||||
@@ -1463,8 +1474,8 @@ void PeFile::processResources(Resource *res)
|
|||||||
memcpy(ores, ibuf + res->offs(), res->size());
|
memcpy(ores, ibuf + res->offs(), res->size());
|
||||||
ibuf.fill(res->offs(), res->size(), FILLVAL);
|
ibuf.fill(res->offs(), res->size(), FILLVAL);
|
||||||
res->newoffs() = ptr_diff(ores,oresources);
|
res->newoffs() = ptr_diff(ores,oresources);
|
||||||
if (rtype == RT_ICON)
|
if (rtype == RT_ICON && opt->win32_pe.compress_icons == 1)
|
||||||
compress_icon = (++iconcnt >= iconsin1stdir || opt->win32_pe.compress_icons == 1);
|
compress_icon = true;
|
||||||
else if (rtype == RT_GROUP_ICON)
|
else if (rtype == RT_GROUP_ICON)
|
||||||
{
|
{
|
||||||
if (opt->win32_pe.compress_icons == 1)
|
if (opt->win32_pe.compress_icons == 1)
|
||||||
@@ -1479,6 +1490,7 @@ void PeFile::processResources(Resource *res)
|
|||||||
}
|
}
|
||||||
soresources = ptr_diff(ores,oresources);
|
soresources = ptr_diff(ores,oresources);
|
||||||
|
|
||||||
|
delete[] keep_icons;
|
||||||
if (!res->clear())
|
if (!res->clear())
|
||||||
{
|
{
|
||||||
// The area occupied by the resource directory is not continuous
|
// The area occupied by the resource directory is not continuous
|
||||||
|
|||||||
+162
-29
@@ -9,6 +9,7 @@
|
|||||||
MAKEFLAGS += -rR
|
MAKEFLAGS += -rR
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SECONDEXPANSION:
|
.SECONDEXPANSION:
|
||||||
|
.NOTPARALLEL:
|
||||||
export LC_ALL = C
|
export LC_ALL = C
|
||||||
export SHELL = /bin/sh
|
export SHELL = /bin/sh
|
||||||
|
|
||||||
@@ -18,10 +19,19 @@ empty :=
|
|||||||
space := $(empty) $(empty)
|
space := $(empty) $(empty)
|
||||||
tab := $(empty) $(empty)
|
tab := $(empty) $(empty)
|
||||||
|
|
||||||
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.79 3.79.1 3.80),)
|
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.77 3.78 3.78.1 3.79 3.79.1 3.80),)
|
||||||
$(error GNU make 3.81 or better is required)
|
$(error GNU make 3.81 or better is required)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifndef srcdir
|
||||||
|
srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
|
||||||
|
srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,')
|
||||||
|
endif
|
||||||
|
ifndef top_srcdir
|
||||||
|
top_srcdir := $(srcdir)/../..
|
||||||
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
|
|
||||||
# update $PATH for our special stub build tools
|
# update $PATH for our special stub build tools
|
||||||
ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),)
|
ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),)
|
||||||
export PATH := $(HOME)/local/bin/bin-upx:$(PATH)
|
export PATH := $(HOME)/local/bin/bin-upx:$(PATH)
|
||||||
@@ -35,14 +45,6 @@ endif
|
|||||||
# //
|
# //
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
ifndef srcdir
|
|
||||||
srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
|
|
||||||
srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,')
|
|
||||||
endif
|
|
||||||
ifndef top_srcdir
|
|
||||||
top_srcdir := $(srcdir)/../..
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef STUBS
|
ifndef STUBS
|
||||||
STUBS += amd64-linux.elf-entry.h
|
STUBS += amd64-linux.elf-entry.h
|
||||||
STUBS += amd64-linux.elf-fold.h
|
STUBS += amd64-linux.elf-fold.h
|
||||||
@@ -55,6 +57,8 @@ STUBS += arm-linux.kernel.vmlinux.h
|
|||||||
STUBS += arm-linux.kernel.vmlinux-head.h
|
STUBS += arm-linux.kernel.vmlinux-head.h
|
||||||
STUBS += armeb-linux.elf-entry.h
|
STUBS += armeb-linux.elf-entry.h
|
||||||
STUBS += armeb-linux.elf-fold.h
|
STUBS += armeb-linux.elf-fold.h
|
||||||
|
STUBS += armeb-linux.kernel.vmlinux.h
|
||||||
|
STUBS += armeb-linux.kernel.vmlinux-head.h
|
||||||
STUBS += arm.v4a-wince.pe.h
|
STUBS += arm.v4a-wince.pe.h
|
||||||
STUBS += arm.v4t-wince.pe.h
|
STUBS += arm.v4t-wince.pe.h
|
||||||
STUBS += i086-dos16.com.h
|
STUBS += i086-dos16.com.h
|
||||||
@@ -64,6 +68,8 @@ STUBS += i386-bsd.elf-entry.h
|
|||||||
STUBS += i386-bsd.elf-fold.h
|
STUBS += i386-bsd.elf-fold.h
|
||||||
STUBS += i386-bsd.elf.execve-entry.h
|
STUBS += i386-bsd.elf.execve-entry.h
|
||||||
STUBS += i386-bsd.elf.execve-fold.h
|
STUBS += i386-bsd.elf.execve-fold.h
|
||||||
|
STUBS += i386-darwin.macho-entry.h
|
||||||
|
STUBS += i386-darwin.macho-fold.h
|
||||||
STUBS += i386-openbsd.elf-fold.h
|
STUBS += i386-openbsd.elf-fold.h
|
||||||
STUBS += i386-dos32.djgpp2.h
|
STUBS += i386-dos32.djgpp2.h
|
||||||
STUBS += i386-dos32.djgpp2-stubify.h
|
STUBS += i386-dos32.djgpp2-stubify.h
|
||||||
@@ -83,10 +89,14 @@ STUBS += i386-linux.kernel.vmlinuz.h
|
|||||||
STUBS += i386-win32.pe.h
|
STUBS += i386-win32.pe.h
|
||||||
STUBS += m68k-atari.tos.h
|
STUBS += m68k-atari.tos.h
|
||||||
STUBS += mipsel.r3000-ps1.h
|
STUBS += mipsel.r3000-ps1.h
|
||||||
|
STUBS += mipsel.r3000-linux.elf-entry.h
|
||||||
|
STUBS += mipsel.r3000-linux.elf-fold.h
|
||||||
STUBS += powerpc-darwin.macho-entry.h
|
STUBS += powerpc-darwin.macho-entry.h
|
||||||
STUBS += powerpc-darwin.macho-fold.h
|
STUBS += powerpc-darwin.macho-fold.h
|
||||||
STUBS += powerpc-linux.elf-entry.h
|
STUBS += powerpc-linux.elf-entry.h
|
||||||
STUBS += powerpc-linux.elf-fold.h
|
STUBS += powerpc-linux.elf-fold.h
|
||||||
|
STUBS += powerpc-linux.kernel.vmlinux.h
|
||||||
|
STUBS += powerpc-linux.kernel.vmlinux-head.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@@ -101,14 +111,16 @@ default: $$(default.targets)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
all.targets ?= .upx-stubtools-stamp tmp/.tmp-stamp .all-stamp
|
all.targets ?= .upx-stubtools-stamp tmp/.tmp-stamp .all-stamp
|
||||||
all: $$(all.targets)
|
all: $$(all.targets)
|
||||||
.upx-stubtools-stamp: $(MAKEFILE_LIST)
|
.upx-stubtools-stamp: $(MAKEFILE_LIST)
|
||||||
upx-stubtools-check-version 20060823
|
upx-stubtools-check-version 20060823
|
||||||
@echo "timestamp" > $@
|
@echo "timestamp" > $@
|
||||||
tmp/.tmp-stamp:
|
%/.tmp-stamp:
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@echo "timestamp" > $@
|
@echo "timestamp" > $@
|
||||||
|
.PRECIOUS: %/.tmp-stamp
|
||||||
.all-stamp: $$(STUBS)
|
.all-stamp: $$(STUBS)
|
||||||
@echo "timestamp" > $@
|
@echo "timestamp" > $@
|
||||||
|
|
||||||
@@ -131,13 +143,6 @@ maintainer-clean:
|
|||||||
# util var for use in the rules - basename of the current target
|
# util var for use in the rules - basename of the current target
|
||||||
override T = $(basename $(notdir $@))
|
override T = $(basename $(notdir $@))
|
||||||
|
|
||||||
# trim (strip) trailing whitespace
|
|
||||||
RTRIM := sed -e 's/[ $(tab)]*$$//'
|
|
||||||
# squeeze duplicate blank lines, delete empty first & last line
|
|
||||||
BLSQUEEZE := $(RTRIM) | cat --squeeze-blank | sed -e '1{/^$$/d}' -e '$${/^$$/d}'
|
|
||||||
# delete blank lines
|
|
||||||
BLDEL := $(RTRIM) | sed -e '/^$$/d'
|
|
||||||
|
|
||||||
# clear some vars, just in case
|
# clear some vars, just in case
|
||||||
LABEL_PREFIX =
|
LABEL_PREFIX =
|
||||||
PP_FLAGS =
|
PP_FLAGS =
|
||||||
@@ -146,6 +151,24 @@ tc_bfdname =
|
|||||||
tc_list =
|
tc_list =
|
||||||
tc_objdump_disasm_options =
|
tc_objdump_disasm_options =
|
||||||
|
|
||||||
|
# commands
|
||||||
|
ECHO_e = /bin/echo -e
|
||||||
|
ECHO_E = /bin/echo -E
|
||||||
|
PERL = perl
|
||||||
|
PYTHON = python
|
||||||
|
UNIX2DOS := $(PERL) -i -pe 's/$$/\r/;'
|
||||||
|
|
||||||
|
# trim (strip) trailing whitespace
|
||||||
|
RTRIM := sed -e 's/[ $(tab)]*$$//'
|
||||||
|
# squeeze duplicate blank lines, delete empty first & last line
|
||||||
|
BLSQUEEZE := $(RTRIM) | cat --squeeze-blank | sed -e '1{/^$$/d}' -e '$${/^$$/d}'
|
||||||
|
# delete blank lines
|
||||||
|
BLDEL := $(RTRIM) | sed -e '/^$$/d'
|
||||||
|
# delete blank lines at top (beginning) of file
|
||||||
|
BLDELTOP := sed -e '/./,$$!d'
|
||||||
|
# delete blank lines at bottom (end) of file
|
||||||
|
BLDELBOT := sed -e ':a' -e '/^\n*$$/{$$d;N;ba' -e '}'
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // setup toolchain globals
|
# // setup toolchain globals
|
||||||
@@ -165,17 +188,18 @@ define tc
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
# default tools
|
# default tools
|
||||||
tc.default.bin2h = python $(top_srcdir)/src/stub/scripts/bin2h.py --ident=auto-stub
|
tc.default.bin2h = $(PYTHON) $(top_srcdir)/src/stub/scripts/bin2h.py --ident=auto-stub
|
||||||
##tc.default.bin2h-c = $(call tc,bin2h) --compress=14,15,0
|
##tc.default.bin2h-c = $(call tc,bin2h) --compress=14,15,0
|
||||||
tc.default.bin2h-c = $(call tc,bin2h) --compress=0
|
tc.default.bin2h-c = $(call tc,bin2h) --compress=0
|
||||||
tc.default.brandelf = python $(top_srcdir)/src/stub/scripts/brandelf.py $(if $(tc_bfdname),--bfdname=$(tc_bfdname))
|
tc.default.brandelf = $(PYTHON) $(top_srcdir)/src/stub/scripts/brandelf.py $(if $(tc_bfdname),--bfdname=$(tc_bfdname))
|
||||||
tc.default.gpp_inc = python $(top_srcdir)/src/stub/scripts/gpp_inc.py
|
tc.default.gpp_inc = $(PYTHON) $(top_srcdir)/src/stub/scripts/gpp_inc.py
|
||||||
tc.default.gpp_mkdep = python $(top_srcdir)/src/stub/scripts/gpp_inc.py -o /dev/null
|
tc.default.gpp_mkdep = $(PYTHON) $(top_srcdir)/src/stub/scripts/gpp_inc.py -o /dev/null
|
||||||
tc.default.pp-as = i386-linux-gcc-3.4.6 -E -nostdinc -x assembler-with-cpp -Wall
|
tc.default.pp-as = i386-linux-gcc-3.4.6 -E -nostdinc -x assembler-with-cpp -Wall
|
||||||
tc.default.sstrip = sstrip
|
tc.default.sstrip = sstrip
|
||||||
tc.default.xstrip = python $(top_srcdir)/src/stub/scripts/xstrip.py
|
tc.default.xstrip = $(PYTHON) $(top_srcdir)/src/stub/scripts/xstrip.py
|
||||||
|
|
||||||
# default multiarch-binutils
|
# default multiarch-binutils
|
||||||
|
tc.default.m-ar = multiarch-ar-2.17
|
||||||
tc.default.m-ld = multiarch-ld-2.17 $(if $(tc_bfdname),-b $(tc_bfdname))
|
tc.default.m-ld = multiarch-ld-2.17 $(if $(tc_bfdname),-b $(tc_bfdname))
|
||||||
tc.default.m-nm = multiarch-nm-2.17 $(if $(tc_bfdname),--target=$(tc_bfdname))
|
tc.default.m-nm = multiarch-nm-2.17 $(if $(tc_bfdname),--target=$(tc_bfdname))
|
||||||
tc.default.m-objcopy = multiarch-objcopy-2.17 $(if $(tc_bfdname),-F $(tc_bfdname))
|
tc.default.m-objcopy = multiarch-objcopy-2.17 $(if $(tc_bfdname),-F $(tc_bfdname))
|
||||||
@@ -207,6 +231,7 @@ endef
|
|||||||
|
|
||||||
# some common arch settings
|
# some common arch settings
|
||||||
tc.arch-i086.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
|
tc.arch-i086.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
|
||||||
|
tc.arch-i086.wdis = $(WATCOM)/binl/wdis
|
||||||
tc.arch-i386.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
|
tc.arch-i386.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
|
||||||
tc.arch-i386.djasm = djasm
|
tc.arch-i386.djasm = djasm
|
||||||
|
|
||||||
@@ -220,7 +245,7 @@ amd64-linux.elf%.h : tc_bfdname = elf64-x86-64
|
|||||||
|
|
||||||
tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -m64 -nostdinc -MMD -MT $@
|
tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -m64 -nostdinc -MMD -MT $@
|
||||||
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S
|
amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||||
@@ -274,7 +299,7 @@ arm-linux.elf%.h : tc_bfdname = elf32-littlearm
|
|||||||
|
|
||||||
tc.arm-linux.elf.gcc = arm-linux-gcc-4.1.0 -march=armv4 -nostdinc -MMD -MT $@
|
tc.arm-linux.elf.gcc = arm-linux-gcc-4.1.0 -march=armv4 -nostdinc -MMD -MT $@
|
||||||
tc.arm-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.arm-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.arm-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.arm-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
arm-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
arm-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -march=armv4 -c $< -o tmp/$T.bin
|
$(call tc,gcc) -march=armv4 -c $< -o tmp/$T.bin
|
||||||
@@ -308,7 +333,7 @@ arm-linux.kernel.vmlinu%.h : tc_bfdname = elf32-littlearm
|
|||||||
|
|
||||||
tc.arm-linux.kernel.gcc = arm-linux-gcc-4.1.0 -march=armv5 -nostdinc -MMD -MT $@
|
tc.arm-linux.kernel.gcc = arm-linux-gcc-4.1.0 -march=armv5 -nostdinc -MMD -MT $@
|
||||||
tc.arm-linux.kernel.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.arm-linux.kernel.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.arm-linux.kernel.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.arm-linux.kernel.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
arm-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
|
arm-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||||
@@ -321,6 +346,28 @@ arm-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
|||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // armeb-linux.kernel.vmlinux
|
||||||
|
# // armeb-linux.kernel.vmlinuz
|
||||||
|
# // armeb-linux.kernel.vmlinux-head
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
armeb-linux.kernel.vmlinu%.h : tc_list = armeb-linux.kernel default
|
||||||
|
armeb-linux.kernel.vmlinu%.h : tc_bfdname = elf32-bigarm
|
||||||
|
|
||||||
|
tc.armeb-linux.kernel.gcc = $(tc.arm-linux.elf.gcc) -mbig-endian
|
||||||
|
|
||||||
|
armeb-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||||
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||||
|
|
||||||
|
armeb-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||||
|
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // armeb-linux.elf
|
# // armeb-linux.elf
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
@@ -507,6 +554,34 @@ tmp/i386-bsd.elf.execve-upx_itoa.o : $(srcdir)/src/$$T.S
|
|||||||
$(call tc,f-objstrip,$@)
|
$(call tc,f-objstrip,$@)
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // i386-darwin.macho
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
# info: we use the tc settings from i386-linux.elf
|
||||||
|
i386-darwin.macho%.h : tc_list = i386-linux.elf default
|
||||||
|
i386-darwin.macho%.h : tc_bfdname = elf32-i386
|
||||||
|
|
||||||
|
i386-darwin.macho-entry.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c $< -o tmp/$T.bin
|
||||||
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
i386-darwin.macho-fold.h : tmp/$$T.o tmp/i386-darwin.macho-main.o
|
||||||
|
$(call tc,ld) --no-warn-mismatch --strip-all --oformat binary -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||||
|
chmod a-x tmp/$T.bin
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
tmp/i386-darwin.macho-fold.o : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c $< -o $@
|
||||||
|
$(call tc,f-objstrip,$@)
|
||||||
|
|
||||||
|
tmp/i386-darwin.macho-main.o : $(srcdir)/src/$$T.c
|
||||||
|
$(call tc,gcc) -c -Os $< -o $@
|
||||||
|
$(call tc,f-objstrip,$@)
|
||||||
|
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // i386-dos32.djgpp2
|
# // i386-dos32.djgpp2
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
@@ -560,7 +635,7 @@ i386-linux.elf%.h : tc_bfdname = elf32-i386
|
|||||||
|
|
||||||
tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
|
tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
|
||||||
tc.i386-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.i386-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.i386-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.i386-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
tc.i386-linux.elf.gcc += -mtune=k6
|
tc.i386-linux.elf.gcc += -mtune=k6
|
||||||
tc.i386-linux.elf.gcc += -Os -fno-omit-frame-pointer
|
tc.i386-linux.elf.gcc += -Os -fno-omit-frame-pointer
|
||||||
tc.i386-linux.elf.gcc += -momit-leaf-frame-pointer
|
tc.i386-linux.elf.gcc += -momit-leaf-frame-pointer
|
||||||
@@ -721,7 +796,7 @@ m68k-atari.tos.h : tc_objdump_disasm_options = -m m68k:68040
|
|||||||
|
|
||||||
tc.m68k-atari.tos.gcc = m68k-linux-gcc-4.1.1 -m68000 -malign-int -nostdinc -MMD -MT $@
|
tc.m68k-atari.tos.gcc = m68k-linux-gcc-4.1.1 -m68000 -malign-int -nostdinc -MMD -MT $@
|
||||||
tc.m68k-atari.tos.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.m68k-atari.tos.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
m68k-atari.tos.h : $(srcdir)/src/$$T.S
|
m68k-atari.tos.h : $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68000,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
|
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68000,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
|
||||||
@@ -740,7 +815,7 @@ tc.mipsel.r3000-ps1.as = mipsel-elf-as-20060406 -O -mno-pdr
|
|||||||
##tc.mipsel.r3000-ps1.as = mipsel-linux-as-2.16.1 -O -mno-pdr
|
##tc.mipsel.r3000-ps1.as = mipsel-linux-as-2.16.1 -O -mno-pdr
|
||||||
tc.mipsel.r3000-ps1.gcc = mipsel-linux-gcc-4.1.1 -mel -march=r3000 -mno-abicalls -mabi=eabi -G0 -nostdinc -MMD -MT $@
|
tc.mipsel.r3000-ps1.gcc = mipsel-linux-gcc-4.1.1 -mel -march=r3000 -mno-abicalls -mabi=eabi -G0 -nostdinc -MMD -MT $@
|
||||||
tc.mipsel.r3000-ps1.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.mipsel.r3000-ps1.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.mipsel.r3000-ps1.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.mipsel.r3000-ps1.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
mipsel.r3000-ps1.h : $(srcdir)/src/$$T.S
|
mipsel.r3000-ps1.h : $(srcdir)/src/$$T.S
|
||||||
ifeq (1,1)
|
ifeq (1,1)
|
||||||
@@ -756,6 +831,45 @@ endif
|
|||||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // mipsel.r3000-linux.elf
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
mipsel.r3000-linux.elf%.h : tc_list = mipsel.r3000-ps1 default
|
||||||
|
mipsel.r3000-linux.elf%.h : tc_bfdname = elf32-littlemips
|
||||||
|
|
||||||
|
mipsel.r3000-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
||||||
|
ifeq (1,1)
|
||||||
|
# info: we really need as-2.17 here
|
||||||
|
$(call tc,pp-as) -D_TARGET_LINUX_ $< -o - | $(RTRIM) > tmp/$T.i
|
||||||
|
$(call tc,as) tmp/$T.i -o tmp/$T.bin
|
||||||
|
$(call tc,gpp_mkdep) --mode=c --MMD=$@ $< --MF=tmp/$T.d
|
||||||
|
else
|
||||||
|
# info: as-2.16.1 as used by gcc-4.1.1 does _not_ work
|
||||||
|
$(call tc,gcc) -c -D_TARGET_LINUX_ -Wa,-O,-mno-pdr $< -o tmp/$T.bin
|
||||||
|
endif
|
||||||
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||||
|
|
||||||
|
mipsel.r3000-linux.elf-fold.h : tmp/$$T.o tmp/mipsel.r3000-linux.elf-main.o $(srcdir)/src/$$T.lds
|
||||||
|
$(call tc,ld) --strip-all -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||||
|
$(call tc,f-objstrip,tmp/$T.bin)
|
||||||
|
$(call tc,sstrip) tmp/$T.bin
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
tmp/mipsel.r3000-linux.elf-fold.o : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -D_TARGET_LINUX_ $< -o $@
|
||||||
|
$(call tc,f-objstrip,$@)
|
||||||
|
|
||||||
|
tmp/mipsel.r3000-linux.elf-main.o : $(srcdir)/src/$$T.c
|
||||||
|
$(call tc,gcc) -S -Os -MF tmp/$T.d $< -o - | $(RTRIM) > tmp/$T.i
|
||||||
|
sed -e 's/ j[ ][ ]*$$L/ b $$L/' \
|
||||||
|
-e 's/ jal[ ][ ]*\([^\$$]\)/ bal \1/' < tmp/$T.i > tmp/$T.s
|
||||||
|
$(call tc,gcc) -c -Wa,-O,-mno-pdr tmp/$T.s -o $@
|
||||||
|
$(call tc,f-objstrip,$@)
|
||||||
|
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // powerpc-darwin.macho
|
# // powerpc-darwin.macho
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
@@ -793,7 +907,7 @@ powerpc-linux.elf%.h : tc_bfdname = elf32-powerpc
|
|||||||
|
|
||||||
tc.powerpc-linux.elf.gcc = powerpc.405-linux-gcc-3.4.5 -m32 -mbig-endian -mcpu=405 -nostdinc -MMD -MT $@
|
tc.powerpc-linux.elf.gcc = powerpc.405-linux-gcc-3.4.5 -m32 -mbig-endian -mcpu=405 -nostdinc -MMD -MT $@
|
||||||
tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||||
tc.powerpc-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
tc.powerpc-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||||
|
|
||||||
powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c $< -o tmp/$T.bin
|
$(call tc,gcc) -c $< -o tmp/$T.bin
|
||||||
@@ -816,6 +930,25 @@ tmp/powerpc-linux.elf-main.o : $(srcdir)/src/$$T.c
|
|||||||
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // powerpc-linux.kernel.vmlinux
|
||||||
|
# ************************************************************************/
|
||||||
|
powerpc-linux.kernel.vmlinu%.h : tc_list = powerpc-linux.kernel default
|
||||||
|
powerpc-linux.kernel.vmlinu%.h : tc_bfdname = elf32-powerpc
|
||||||
|
|
||||||
|
tc.powerpc-linux.kernel.gcc = $(tc.powerpc-linux.elf.gcc)
|
||||||
|
|
||||||
|
powerpc-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||||
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||||
|
|
||||||
|
powerpc-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||||
|
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // dependencies
|
# // dependencies
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_ARM_LINUX_ELF_ENTRY_SIZE 16296
|
#define STUB_ARM_LINUX_ELF_ENTRY_SIZE 16296
|
||||||
#define STUB_ARM_LINUX_ELF_ENTRY_ADLER32 0x9b815c2e
|
#define STUB_ARM_LINUX_ELF_ENTRY_ADLER32 0xdf115bee
|
||||||
#define STUB_ARM_LINUX_ELF_ENTRY_CRC32 0x3b801af9
|
#define STUB_ARM_LINUX_ELF_ENTRY_CRC32 0x8704e1a1
|
||||||
|
|
||||||
unsigned char stub_arm_linux_elf_entry[16296] = {
|
unsigned char stub_arm_linux_elf_entry[16296] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
@@ -44,7 +44,7 @@ unsigned char stub_arm_linux_elf_entry[16296] = {
|
|||||||
254, 1,160,232, 15, 0, 0, 58, 9, 64, 64,224, 80, 80,143,226, /* 0x 80 */
|
254, 1,160,232, 15, 0, 0, 58, 9, 64, 64,224, 80, 80,143,226, /* 0x 80 */
|
||||||
0,224,160,225, 4, 80,133,224, 5, 0,160,225, 4, 16,137,224, /* 0x 90 */
|
0,224,160,225, 4, 80,133,224, 5, 0,160,225, 4, 16,137,224, /* 0x 90 */
|
||||||
0, 32,160,227, 2, 0,159,239, 0,144,156,229,140,144, 73,226, /* 0x a0 */
|
0, 32,160,227, 2, 0,159,239, 0,144,156,229,140,144, 73,226, /* 0x a0 */
|
||||||
9,160, 76,224, 4,160,138,224, 8, 0,219,229, 1, 64, 45,233, /* 0x b0 */
|
9,160, 76,224, 4,160,138,224, 8, 0,155,229, 1, 64, 45,233, /* 0x b0 */
|
||||||
0, 48,155,229, 12, 0,139,226, 4, 16,155,229, 14, 32,160,225, /* 0x c0 */
|
0, 48,155,229, 12, 0,139,226, 4, 16,155,229, 14, 32,160,225, /* 0x c0 */
|
||||||
8, 48,141,229, 8, 48,141,226, 15,224,160,225, 5,240,160,225, /* 0x d0 */
|
8, 48,141,229, 8, 48,141,226, 15,224,160,225, 5,240,160,225, /* 0x d0 */
|
||||||
2,128,189,232,252, 64, 45,233, 0,112,129,224, 0, 80,224,227, /* 0x e0 */
|
2,128,189,232,252, 64, 45,233, 0,112,129,224, 0, 80,224,227, /* 0x e0 */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* arm-linux.elf-fold.h
|
/* arm-linux.elf-fold.h
|
||||||
created from arm-linux.elf-fold.bin, 2108 (0x83c) bytes
|
created from arm-linux.elf-fold.bin, 2128 (0x850) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,17 +28,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_ARM_LINUX_ELF_FOLD_SIZE 2108
|
#define STUB_ARM_LINUX_ELF_FOLD_SIZE 2128
|
||||||
#define STUB_ARM_LINUX_ELF_FOLD_ADLER32 0x3e40608e
|
#define STUB_ARM_LINUX_ELF_FOLD_ADLER32 0xf3eb5f7c
|
||||||
#define STUB_ARM_LINUX_ELF_FOLD_CRC32 0xb5be5c29
|
#define STUB_ARM_LINUX_ELF_FOLD_CRC32 0x79cd3b89
|
||||||
|
|
||||||
unsigned char stub_arm_linux_elf_fold[2108] = {
|
unsigned char stub_arm_linux_elf_fold[2128] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||||
0, 0, 0, 0, 2, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
|
0, 0, 0, 0, 2, 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,128, 0, 0, /* 0x 30 */
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, /* 0x 30 */
|
||||||
0,128, 0, 0, 60, 8, 0, 0, 60, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
0,128, 0, 0, 80, 8, 0, 0, 80, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||||
0,128, 0, 0, 1, 0, 0, 0, 60, 8, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
0,128, 0, 0, 1, 0, 0, 0, 80, 8, 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 60 */
|
||||||
0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||||
12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */
|
12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */
|
||||||
@@ -46,7 +46,7 @@ unsigned char stub_arm_linux_elf_fold[2108] = {
|
|||||||
0, 0, 80,227,252,255,255, 26, 8, 32,141,229, 10,220, 77,226, /* 0x a0 */
|
0, 0, 80,227,252,255,255, 26, 8, 32,141,229, 10,220, 77,226, /* 0x a0 */
|
||||||
9, 64,160,225, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x b0 */
|
9, 64,160,225, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x b0 */
|
||||||
36, 96,143,226, 12,144,137,226, 0,176,160,227,248, 15, 45,233, /* 0x c0 */
|
36, 96,143,226, 12,144,137,226, 0,176,160,227,248, 15, 45,233, /* 0x c0 */
|
||||||
15, 0,189,232,132, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */
|
15, 0,189,232,131, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */
|
||||||
10,220,141,226, 7, 0,189,232, 4,240, 18,229,255, 48, 3,226, /* 0x e0 */
|
10,220,141,226, 7, 0,189,232, 4,240, 18,229,255, 48, 3,226, /* 0x e0 */
|
||||||
80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x f0 */
|
80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x f0 */
|
||||||
14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x 100 */
|
14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x 100 */
|
||||||
@@ -91,78 +91,79 @@ unsigned char stub_arm_linux_elf_fold[2108] = {
|
|||||||
183,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 370 */
|
183,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 370 */
|
||||||
240, 79, 45,233, 1,160,160,225,176,193,218,225, 28, 16,145,229, /* 0x 380 */
|
240, 79, 45,233, 1,160,160,225,176,193,218,225, 28, 16,145,229, /* 0x 380 */
|
||||||
188,226,218,225, 48,208, 77,226, 2, 0, 92,227, 1, 96,138,224, /* 0x 390 */
|
188,226,218,225, 48,208, 77,226, 2, 0, 92,227, 1, 96,138,224, /* 0x 390 */
|
||||||
16, 0,141,229, 16,192,160, 3, 0,192,160, 19, 1,224, 78,226, /* 0x 3a0 */
|
16, 0,141,229, 50,192,160, 3, 34,192,160, 19, 1,224, 78,226, /* 0x 3a0 */
|
||||||
6, 16,160,225, 0, 64,224,227, 0, 0,160,227, 12, 32,141,229, /* 0x 3b0 */
|
6, 16,160,225, 0, 0,224,227, 0, 80,160,227, 12, 32,141,229, /* 0x 3b0 */
|
||||||
8, 48,141,229, 11, 0, 0,234, 0, 48,145,229, 1, 0, 83,227, /* 0x 3c0 */
|
8, 48,141,229, 11, 0, 0,234, 0, 48,145,229, 1, 0, 83,227, /* 0x 3c0 */
|
||||||
6, 0, 0, 26, 8, 32,145,229, 20, 48,145,229, 3, 48,130,224, /* 0x 3d0 */
|
6, 0, 0, 26, 8, 32,145,229, 20, 48,145,229, 3, 48,130,224, /* 0x 3d0 */
|
||||||
3, 0, 80,225, 3, 0,160, 49, 2, 0, 84,225, 2, 64,160, 33, /* 0x 3e0 */
|
3, 0, 85,225, 3, 80,160, 49, 2, 0, 80,225, 2, 0,160, 33, /* 0x 3e0 */
|
||||||
32, 16,129,226, 1,224, 78,226, 0, 0, 94,227,241,255,255,170, /* 0x 3f0 */
|
32, 16,129,226, 1,224, 78,226, 0, 0, 94,227,241,255,255,170, /* 0x 3f0 */
|
||||||
255, 78,196,227, 15, 64,196,227, 0, 48,100,224,255, 62,131,226, /* 0x 400 */
|
255, 78,192,227, 15, 64,196,227, 5, 48,100,224,255, 62,131,226, /* 0x 400 */
|
||||||
15, 48,131,226,255, 62,195,227, 15, 48,195,227, 36, 48,141,229, /* 0x 410 */
|
15, 48,131,226,255, 62,195,227, 16,224, 28,226, 15, 48,195,227, /* 0x 410 */
|
||||||
0, 80,160,227, 34, 48,140,226, 4, 0,160,225, 0,192,224,227, /* 0x 420 */
|
36, 48,141,229, 28, 64,141, 21, 7, 0, 0, 26, 12, 48,160,225, /* 0x 420 */
|
||||||
36, 16,157,229, 5, 32,160,225, 0,192,141,229, 4, 80,141,229, /* 0x 430 */
|
14, 32,160,225, 0,192,224,227, 4, 0,160,225, 36, 16,157,229, /* 0x 430 */
|
||||||
75,255,255,235, 52, 48,160,227, 0,176,100,224,155, 3, 3,224, /* 0x 440 */
|
0, 80,141,232, 74,255,255,235, 28, 0,141,229, 28, 16,157,229, /* 0x 440 */
|
||||||
28, 0,141,229, 32, 48,141,229, 24, 80,141,229,127, 0, 0,234, /* 0x 450 */
|
52, 48,160,227, 1,176,100,224,155, 3, 3,224, 0, 32,160,227, /* 0x 450 */
|
||||||
0, 48,150,229, 6, 0, 83,227, 5, 0, 0, 26, 8, 32,150,229, /* 0x 460 */
|
32, 80,134,226, 32, 48,141,229, 24, 32,141,229,127, 0, 0,234, /* 0x 460 */
|
||||||
8, 0,157,229, 2, 32,139,224, 3, 16,160,227, 69,255,255,235, /* 0x 470 */
|
12, 48,157,229, 0, 0, 83,227, 8, 0, 0, 10, 32, 48, 21,229, /* 0x 470 */
|
||||||
114, 0, 0,234, 1, 0, 83,227,112, 0, 0, 26, 24, 48,150,229, /* 0x 480 */
|
6, 0, 83,227, 5, 0, 0, 26, 24, 32, 21,229, 8, 0,157,229, /* 0x 480 */
|
||||||
72, 34,159,229, 7, 48, 3,226, 3, 49,160,225, 50, 35,160,225, /* 0x 490 */
|
2, 32,139,224, 3, 16,160,227, 62,255,255,235,111, 0, 0,234, /* 0x 490 */
|
||||||
8, 48,150,229, 12, 16,157,229, 3,144,139,224, 9, 10,160,225, /* 0x 4a0 */
|
32, 48, 21,229, 1, 0, 83,227,108, 0, 0, 26, 8, 48, 21,229, /* 0x 4a0 */
|
||||||
16, 48,150,229, 0, 0, 81,227, 32, 10,160,225, 4,192,150,229, /* 0x 4b0 */
|
36, 34,159,229, 7, 48, 3,226, 3, 49,160,225, 50, 35,160,225, /* 0x 4b0 */
|
||||||
7, 80, 2,226, 20, 32,150,229, 0,128,131,224, 16,224,157, 5, /* 0x 4c0 */
|
24, 48, 21,229, 3,144,139,224, 12, 48,157,229, 16,224, 21,229, /* 0x 4c0 */
|
||||||
9,112, 96,224, 40, 48,141,229, 20, 32,141,229, 0,224,224, 19, /* 0x 4d0 */
|
9, 26,160,225, 0, 0, 83,227, 33, 26,160,225, 28,192, 21,229, /* 0x 4d0 */
|
||||||
12,192, 96,224, 5, 32,160, 1, 18, 48,160, 3, 2, 32,133, 19, /* 0x 4e0 */
|
7, 96, 2,226, 12, 32, 21,229, 9,128, 97,224, 16, 64,157, 5, /* 0x 4e0 */
|
||||||
50, 48,160, 19, 7, 0,160,225, 8, 16,160,225, 44,144,141,229, /* 0x 4f0 */
|
1,112,142,224, 20, 32,141,229, 0, 64,224, 19, 12,192, 97,224, /* 0x 4f0 */
|
||||||
0,224,141,229, 4,192,141,229, 25,255,255,235, 0, 0, 87,225, /* 0x 500 */
|
6, 32,160, 1, 18, 48,160, 3, 2, 32,134, 19, 50, 48,160, 19, /* 0x 500 */
|
||||||
59, 0, 0, 26, 12, 48,157,229, 0, 0, 83,227, 6, 0, 0, 10, /* 0x 510 */
|
8, 0,160,225, 7, 16,160,225, 40,224,141,229, 16, 16,141,232, /* 0x 510 */
|
||||||
88, 16,157,229, 4, 48, 21,226, 1, 48,160, 17, 12, 0,157,229, /* 0x 520 */
|
44,144,141,229, 18,255,255,235, 0, 0, 88,225, 56, 0, 0, 26, /* 0x 520 */
|
||||||
40, 16,141,226, 16, 32,157,229, 62,255,255,235, 0, 48,104,226, /* 0x 530 */
|
12, 48,157,229, 0, 0, 83,227, 6, 0, 0, 10, 88, 16,157,229, /* 0x 530 */
|
||||||
3, 74,160,225, 2, 0, 21,227, 36, 74,160,225, 7, 0, 0, 10, /* 0x 540 */
|
4, 48, 22,226, 1, 48,160, 17, 12, 0,157,229, 40, 16,141,226, /* 0x 540 */
|
||||||
0, 0, 84,227, 5, 0, 0, 10, 8, 16,135,224, 4, 32,160,225, /* 0x 550 */
|
16, 32,157,229, 55,255,255,235, 0, 48,103,226, 3, 74,160,225, /* 0x 550 */
|
||||||
0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,251,255,255, 26, /* 0x 560 */
|
2, 0, 22,227, 36, 74,160,225, 7, 0, 0, 10, 0, 0, 84,227, /* 0x 560 */
|
||||||
12, 32,157,229, 0, 0, 82,227, 35, 0, 0, 10, 0, 48,150,229, /* 0x 570 */
|
5, 0, 0, 10, 7, 16,136,224, 4, 32,160,225, 0, 48,160,227, /* 0x 570 */
|
||||||
1, 0, 83,227, 24, 0, 0, 26, 24, 48,150,229, 1, 0, 19,227, /* 0x 580 */
|
1, 32, 82,226, 1, 48,193,228,251,255,255, 26, 12, 32,157,229, /* 0x 580 */
|
||||||
21, 0, 0, 10, 20, 32,150,229, 16, 48,150,229, 3, 0, 82,225, /* 0x 590 */
|
0, 0, 82,227, 32, 0, 0, 10, 32, 48, 21,229, 1, 0, 83,227, /* 0x 590 */
|
||||||
8, 16,150,229, 70, 0, 0, 26, 1, 48,130,224, 11, 32,131,224, /* 0x 5a0 */
|
21, 0, 0, 26, 8, 48, 21,229, 1, 0, 19,227, 18, 0, 0, 10, /* 0x 5a0 */
|
||||||
0, 48, 98,226, 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, /* 0x 5b0 */
|
12, 32, 21,229, 16, 48, 21,229, 3, 0, 82,225, 24, 16, 21,229, /* 0x 5b0 */
|
||||||
63, 0, 0,154, 24, 49,159,229, 0, 48,130,229, 20, 49,159,229, /* 0x 5c0 */
|
62, 0, 0, 26, 1, 48,130,224, 11, 32,131,224, 0, 48, 98,226, /* 0x 5c0 */
|
||||||
4, 48,130,229, 1, 0, 0,234, 0, 0, 82,227, 2, 0, 0, 10, /* 0x 5d0 */
|
3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, 55, 0, 0,154, /* 0x 5d0 */
|
||||||
8, 0,157,229, 0, 16,160,227,234,254,255,235, 7, 0,160,225, /* 0x 5e0 */
|
248, 48,159,229, 0, 48,130,229,244, 48,159,229, 8, 0,157,229, /* 0x 5e0 */
|
||||||
8, 16,160,225, 5, 32,160,225,219,254,255,235, 0, 0, 80,227, /* 0x 5f0 */
|
4, 48,130,229, 0, 16,160,227,230,254,255,235, 8, 0,160,225, /* 0x 5f0 */
|
||||||
1, 0, 0, 10,127, 0,160,227,202,254,255,235, 20, 32,157,229, /* 0x 600 */
|
7, 16,160,225, 6, 32,160,225,215,254,255,235, 0, 0, 80,227, /* 0x 600 */
|
||||||
4, 48,136,224, 2, 16,137,224, 3, 64,135,224, 1, 0, 84,225, /* 0x 610 */
|
1, 0, 0, 10,127, 0,160,227,198,254,255,235, 20, 32,157,229, /* 0x 610 */
|
||||||
10, 0, 0, 42, 0,192,224,227, 0,192,141,229, 1, 16,100,224, /* 0x 620 */
|
4, 48,135,224, 2, 16,137,224, 3, 64,136,224, 1, 0, 84,225, /* 0x 620 */
|
||||||
1,192,140,226, 5, 32,160,225, 4, 0,160,225, 50, 48,160,227, /* 0x 630 */
|
10, 0, 0, 42, 0,192,224,227, 0,192,141,229, 1, 16,100,224, /* 0x 630 */
|
||||||
4,192,141,229,202,254,255,235, 0, 0, 84,225,236,255,255, 26, /* 0x 640 */
|
1,192,140,226, 6, 32,160,225, 4, 0,160,225, 50, 48,160,227, /* 0x 640 */
|
||||||
24, 48,157,229, 1, 48,131,226, 24, 48,141,229, 32, 96,134,226, /* 0x 650 */
|
4,192,141,229,198,254,255,235, 0, 0, 84,225,236,255,255, 26, /* 0x 650 */
|
||||||
188, 50,218,225, 24, 16,157,229, 3, 0, 81,225,123,255,255,186, /* 0x 660 */
|
24, 48,157,229, 1, 48,131,226, 24, 48,141,229, 32, 80,133,226, /* 0x 660 */
|
||||||
12, 32,157,229, 0, 0, 82,227, 4, 0, 0, 26, 16, 0,157,229, /* 0x 670 */
|
188, 50,218,225, 24, 16,157,229, 3, 0, 81,225,123,255,255,186, /* 0x 670 */
|
||||||
179,254,255,235, 0, 0, 80,227,221,255,255, 26, 5, 0, 0,234, /* 0x 680 */
|
12, 32,157,229, 0, 0, 82,227, 5, 0, 0, 10,176, 49,218,225, /* 0x 680 */
|
||||||
176, 49,218,225, 3, 0, 83,227, 28, 48,157, 21, 36, 16,157, 21, /* 0x 690 */
|
3, 0, 83,227, 28, 48,157, 21, 36, 16,157, 21, 1, 0,131, 16, /* 0x 690 */
|
||||||
1, 0,131, 16,172,254,255, 27, 84, 32,157,229, 0, 0, 82,227, /* 0x 6a0 */
|
173,254,255, 27, 84, 32,157,229, 0, 0, 82,227, 0,176,130, 21, /* 0x 6a0 */
|
||||||
0,176,130, 21, 24, 0,154,229, 0, 0,139,224, 48,208,141,226, /* 0x 6b0 */
|
24, 0,154,229, 0, 0,139,224, 48,208,141,226,240,143,189,232, /* 0x 6b0 */
|
||||||
240,143,189,232, 4, 48,150,229, 32, 32,157,229, 0, 0, 83,227, /* 0x 6c0 */
|
28, 48, 21,229, 0, 0, 83,227, 32, 32,157, 5, 2, 48,129, 0, /* 0x 6c0 */
|
||||||
2, 48,129,224, 8, 32,131,226,185,255,255, 10,189,255,255,234, /* 0x 6d0 */
|
8, 32,131, 2,193,255,255, 10,199,255,255,234, 64, 98, 81,115, /* 0x 6d0 */
|
||||||
64, 98, 81,115, 91, 0,144,239, 14,240,160,225,240, 71, 45,233, /* 0x 6e0 */
|
91, 0,144,239, 14,240,160,225,240, 71, 45,233, 12,208, 77,226, /* 0x 6e0 */
|
||||||
12,208, 77,226, 52,112,141,226, 0, 80,160,225, 1, 96,160,225, /* 0x 6f0 */
|
52, 96,141,226, 0,144,160,225, 1, 80,160,225, 3,128,160,225, /* 0x 6f0 */
|
||||||
3,160,160,225, 7, 0,160,225, 0, 48,160,227, 44, 16,141,226, /* 0x 700 */
|
6, 0,160,225, 0, 48,160,227, 44, 16,141,226, 48,160,157,229, /* 0x 700 */
|
||||||
48,144,157,229, 2,128,160,225, 52, 64,157,229,197,254,255,235, /* 0x 710 */
|
2,112,160,225, 52, 64,157,229,198,254,255,235, 56, 48,157,229, /* 0x 710 */
|
||||||
56, 48,157,229, 5, 16,160,227, 3, 48,100,224,188, 34,217,225, /* 0x 720 */
|
5, 16,160,227, 3, 48,100,224,188, 34,218,225, 9, 0,160,225, /* 0x 720 */
|
||||||
5, 0,160,225, 56, 48,141,229, 52, 96,141,229,149,254,255,235, /* 0x 730 */
|
56, 48,141,229, 52, 80,141,229,150,254,255,235, 9, 0,160,225, /* 0x 730 */
|
||||||
5, 0,160,225, 4, 16,160,227,186, 34,217,225,145,254,255,235, /* 0x 740 */
|
4, 16,160,227,186, 34,218,225,146,254,255,235, 52, 64,138,226, /* 0x 740 */
|
||||||
52, 96,137,226, 60, 32,157,229, 8, 48,150,229, 52, 32,130,226, /* 0x 750 */
|
60, 32,157,229, 8, 48,148,229, 52, 32,130,226, 3, 32,130,224, /* 0x 750 */
|
||||||
3, 32,130,224, 5, 0,160,225, 3, 16,160,227,137,254,255,235, /* 0x 760 */
|
9, 0,160,225, 3, 16,160,227,138,254,255,235, 8,192,141,226, /* 0x 760 */
|
||||||
8,192,141,226, 7, 32,160,225, 9, 16,160,225, 5, 48,160,225, /* 0x 770 */
|
6, 32,160,225, 10, 16,160,225, 9, 48,160,225, 7, 0,160,225, /* 0x 770 */
|
||||||
8, 0,160,225, 0,192,141,229, 4,160,141,229,251,254,255,235, /* 0x 780 */
|
0,192,141,229, 4,128,141,229,252,254,255,235, 0, 80,160,225, /* 0x 780 */
|
||||||
0, 64,160,225, 9, 16,160,227, 4, 32,160,225, 5, 0,160,225, /* 0x 790 */
|
9, 16,160,227, 5, 32,160,225, 9, 0,160,225,125,254,255,235, /* 0x 790 */
|
||||||
124,254,255,235,188, 18,217,225, 0, 32,160,227, 29, 0, 0,234, /* 0x 7a0 */
|
188, 18,218,225, 0, 32,160,227, 35, 0, 0,234, 0, 48,148,229, /* 0x 7a0 */
|
||||||
0, 48,150,229, 3, 0, 83,227, 24, 0, 0, 26, 8, 48,150,229, /* 0x 7b0 */
|
3, 0, 83,227, 30, 0, 0, 26, 8, 48,148,229, 8, 0,157,229, /* 0x 7b0 */
|
||||||
8, 0,157,229, 0, 16,160,227, 0, 0,131,224, 1, 32,160,225, /* 0x 7c0 */
|
0, 16,160,227, 0, 0,131,224, 1, 32,160,225, 94,254,255,235, /* 0x 7c0 */
|
||||||
93,254,255,235, 0, 64, 80,226, 4, 0, 0,186, 9, 16,160,225, /* 0x 7d0 */
|
0, 64, 80,226, 4, 0, 0,186, 10, 16,160,225, 2, 44,160,227, /* 0x 7d0 */
|
||||||
2, 44,160,227, 84,254,255,235, 2, 12, 80,227, 1, 0, 0, 10, /* 0x 7e0 */
|
85,254,255,235, 2, 12, 80,227, 1, 0, 0, 10,127, 0,160,227, /* 0x 7e0 */
|
||||||
127, 0,160,227, 79,254,255,235, 0,192,160,227, 4, 0,160,225, /* 0x 7f0 */
|
80,254,255,235, 0,224,160,227, 14, 32,160,225, 8,192,141,226, /* 0x 7f0 */
|
||||||
12, 32,160,225, 9, 16,160,225, 12, 48,160,225, 0,192,141,229, /* 0x 800 */
|
10, 16,160,225, 9, 48,160,225, 4, 0,160,225, 0, 80,141,232, /* 0x 800 */
|
||||||
4,192,141,229,217,254,255,235, 0, 64,160,225, 3, 0, 0,234, /* 0x 810 */
|
218,254,255,235, 7, 16,160,227, 0, 80,160,225, 8, 32,157,229, /* 0x 810 */
|
||||||
32, 96,134,226, 1, 32,130,226, 1, 0, 82,225,223,255,255,186, /* 0x 820 */
|
9, 0,160,225, 91,254,255,235, 4, 0,160,225, 72,254,255,235, /* 0x 820 */
|
||||||
4, 0,160,225, 12,208,141,226,240,135,189,232 /* 0x 830 */
|
3, 0, 0,234, 32, 64,132,226, 1, 32,130,226, 1, 0, 82,225, /* 0x 830 */
|
||||||
|
217,255,255,186, 5, 0,160,225, 12,208,141,226,240,135,189,232 /* 0x 840 */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_ARM_LINUX_KERNEL_VMLINUX_SIZE 17091
|
#define STUB_ARM_LINUX_KERNEL_VMLINUX_SIZE 17091
|
||||||
#define STUB_ARM_LINUX_KERNEL_VMLINUX_ADLER32 0x3d6cea16
|
#define STUB_ARM_LINUX_KERNEL_VMLINUX_ADLER32 0x2af6ea3d
|
||||||
#define STUB_ARM_LINUX_KERNEL_VMLINUX_CRC32 0xab8eacad
|
#define STUB_ARM_LINUX_KERNEL_VMLINUX_CRC32 0x12d16cc6
|
||||||
|
|
||||||
unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
|
unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
@@ -570,7 +570,7 @@ unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
|
|||||||
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2160 */
|
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2160 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2170 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2170 */
|
||||||
69, 10, 48, 48, 48, 48, 48, 48, 49, 52, 32, 82, 95, 65, 82, 77, /* 0x2180 */
|
69, 10, 48, 48, 48, 48, 48, 48, 49, 52, 32, 82, 95, 65, 82, 77, /* 0x2180 */
|
||||||
95, 65, 66, 83, 56, 32, 32, 32, 32, 32, 32, 32, 32, 77, 69, 84, /* 0x2190 */
|
95, 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, 32, 32, 77, 69, 84, /* 0x2190 */
|
||||||
72, 79, 68, 10, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, /* 0x21a0 */
|
72, 79, 68, 10, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, /* 0x21a0 */
|
||||||
82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x21b0 */
|
82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x21b0 */
|
||||||
73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 51, 52, /* 0x21c0 */
|
73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 51, 52, /* 0x21c0 */
|
||||||
@@ -589,9 +589,9 @@ unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
|
|||||||
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2290 */
|
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2290 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x22a0 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x22a0 */
|
||||||
10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 65, 82, 77, 95, /* 0x22b0 */
|
10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 65, 82, 77, 95, /* 0x22b0 */
|
||||||
65, 66, 83, 56, 32, 32, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x22c0 */
|
65, 66, 83, 51, 50, 32, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x22c0 */
|
||||||
101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, /* 0x22d0 */
|
101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, /* 0x22d0 */
|
||||||
82, 95, 65, 82, 77, 95, 65, 66, 83, 56, 32, 32, 32, 32, 32, 32, /* 0x22e0 */
|
82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, /* 0x22e0 */
|
||||||
32, 32,102,105,108,116,101,114, 95,105,100, 10, 48, 48, 48, 48, /* 0x22f0 */
|
32, 32,102,105,108,116,101,114, 95,105,100, 10, 48, 48, 48, 48, /* 0x22f0 */
|
||||||
48, 48, 49, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x2300 */
|
48, 48, 49, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x2300 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 48, 48, /* 0x2310 */
|
32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 48, 48, /* 0x2310 */
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_SIZE 16295
|
#define STUB_ARMEB_LINUX_ELF_ENTRY_SIZE 16295
|
||||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_ADLER32 0x87435b9a
|
#define STUB_ARMEB_LINUX_ELF_ENTRY_ADLER32 0xcad35b5a
|
||||||
#define STUB_ARMEB_LINUX_ELF_ENTRY_CRC32 0x7cf93476
|
#define STUB_ARMEB_LINUX_ELF_ENTRY_CRC32 0xc07dcf2e
|
||||||
|
|
||||||
unsigned char stub_armeb_linux_elf_entry[16295] = {
|
unsigned char stub_armeb_linux_elf_entry[16295] = {
|
||||||
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
@@ -44,7 +44,7 @@ unsigned char stub_armeb_linux_elf_entry[16295] = {
|
|||||||
232,160, 1,254, 58, 0, 0, 15,224, 64, 64, 9,226,143, 80, 80, /* 0x 80 */
|
232,160, 1,254, 58, 0, 0, 15,224, 64, 64, 9,226,143, 80, 80, /* 0x 80 */
|
||||||
225,160,224, 0,224,133, 80, 4,225,160, 0, 5,224,137, 16, 4, /* 0x 90 */
|
225,160,224, 0,224,133, 80, 4,225,160, 0, 5,224,137, 16, 4, /* 0x 90 */
|
||||||
227,160, 32, 0,239,159, 0, 2,229,156,144, 0,226, 73,144,140, /* 0x a0 */
|
227,160, 32, 0,239,159, 0, 2,229,156,144, 0,226, 73,144,140, /* 0x a0 */
|
||||||
224, 76,160, 9,224,138,160, 4,229,219, 0, 8,233, 45, 64, 1, /* 0x b0 */
|
224, 76,160, 9,224,138,160, 4,229,155, 0, 8,233, 45, 64, 1, /* 0x b0 */
|
||||||
229,155, 48, 0,226,139, 0, 12,229,155, 16, 4,225,160, 32, 14, /* 0x c0 */
|
229,155, 48, 0,226,139, 0, 12,229,155, 16, 4,225,160, 32, 14, /* 0x c0 */
|
||||||
229,141, 48, 8,226,141, 48, 8,225,160,224, 15,225,160,240, 5, /* 0x d0 */
|
229,141, 48, 8,226,141, 48, 8,225,160,224, 15,225,160,240, 5, /* 0x d0 */
|
||||||
232,189,128, 2,233, 45, 64,252,224,129,112, 0,227,224, 80, 0, /* 0x e0 */
|
232,189,128, 2,233, 45, 64,252,224,129,112, 0,227,224, 80, 0, /* 0x e0 */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* armeb-linux.elf-fold.h
|
/* armeb-linux.elf-fold.h
|
||||||
created from armeb-linux.elf-fold.bin, 2108 (0x83c) bytes
|
created from armeb-linux.elf-fold.bin, 2128 (0x850) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,17 +28,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_ARMEB_LINUX_ELF_FOLD_SIZE 2108
|
#define STUB_ARMEB_LINUX_ELF_FOLD_SIZE 2128
|
||||||
#define STUB_ARMEB_LINUX_ELF_FOLD_ADLER32 0x65a66090
|
#define STUB_ARMEB_LINUX_ELF_FOLD_ADLER32 0x14dc5f7e
|
||||||
#define STUB_ARMEB_LINUX_ELF_FOLD_CRC32 0xdee2e92e
|
#define STUB_ARMEB_LINUX_ELF_FOLD_CRC32 0xf7b8b4af
|
||||||
|
|
||||||
unsigned char stub_armeb_linux_elf_fold[2108] = {
|
unsigned char stub_armeb_linux_elf_fold[2128] = {
|
||||||
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
0, 2, 0, 40, 0, 0, 0, 1, 0, 0,128,128, 0, 0, 0, 52, /* 0x 10 */
|
0, 2, 0, 40, 0, 0, 0, 1, 0, 0,128,128, 0, 0, 0, 52, /* 0x 10 */
|
||||||
0, 0, 0, 0, 0, 0, 0, 2, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
|
0, 0, 0, 0, 0, 0, 0, 2, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
|
||||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 0, /* 0x 30 */
|
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 0, /* 0x 30 */
|
||||||
0, 0,128, 0, 0, 0, 8, 60, 0, 0, 8, 60, 0, 0, 0, 5, /* 0x 40 */
|
0, 0,128, 0, 0, 0, 8, 80, 0, 0, 8, 80, 0, 0, 0, 5, /* 0x 40 */
|
||||||
0, 0,128, 0, 0, 0, 0, 1, 0, 0, 8, 60, 0, 0, 0, 0, /* 0x 50 */
|
0, 0,128, 0, 0, 0, 0, 1, 0, 0, 8, 80, 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 60 */
|
||||||
0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||||
229,157, 48, 12,224,141, 49, 3,226,131, 48, 20,228,147, 0, 4, /* 0x 80 */
|
229,157, 48, 12,224,141, 49, 3,226,131, 48, 20,228,147, 0, 4, /* 0x 80 */
|
||||||
@@ -46,7 +46,7 @@ unsigned char stub_armeb_linux_elf_fold[2108] = {
|
|||||||
227, 80, 0, 0, 26,255,255,252,229,141, 32, 8,226, 77,220, 10, /* 0x a0 */
|
227, 80, 0, 0, 26,255,255,252,229,141, 32, 8,226, 77,220, 10, /* 0x a0 */
|
||||||
225,160, 64, 9,229,154,144, 4,225,160,128, 13,229,154,112, 0, /* 0x b0 */
|
225,160, 64, 9,229,154,144, 4,225,160,128, 13,229,154,112, 0, /* 0x b0 */
|
||||||
226,143, 96, 36,226,137,144, 12,227,160,176, 0,233, 45, 15,248, /* 0x c0 */
|
226,143, 96, 36,226,137,144, 12,227,160,176, 0,233, 45, 15,248, /* 0x c0 */
|
||||||
232,189, 0, 15,235, 0, 1,132,225,160,224, 0,226,141,208, 20, /* 0x d0 */
|
232,189, 0, 15,235, 0, 1,131,225,160,224, 0,226,141,208, 20, /* 0x d0 */
|
||||||
226,141,220, 10,232,189, 0, 7,229, 18,240, 4,226, 3, 48,255, /* 0x e0 */
|
226,141,220, 10,232,189, 0, 7,229, 18,240, 4,226, 3, 48,255, /* 0x e0 */
|
||||||
227, 83, 0, 81, 17,160,240, 14,225,176, 17, 33, 19, 80, 0, 0, /* 0x f0 */
|
227, 83, 0, 81, 17,160,240, 14,225,176, 17, 33, 19, 80, 0, 0, /* 0x f0 */
|
||||||
1,160,240, 14,226, 65, 16, 1,231,144, 33, 1,226, 2, 52, 15, /* 0x 100 */
|
1,160,240, 14,226, 65, 16, 1,231,144, 33, 1,226, 2, 52, 15, /* 0x 100 */
|
||||||
@@ -91,78 +91,79 @@ unsigned char stub_armeb_linux_elf_fold[2108] = {
|
|||||||
26,255,255,183,226,141,208, 20,232,189,128,240, 33, 88, 80, 85, /* 0x 370 */
|
26,255,255,183,226,141,208, 20,232,189,128,240, 33, 88, 80, 85, /* 0x 370 */
|
||||||
233, 45, 79,240,225,160,160, 1,225,218,193,176,229,145, 16, 28, /* 0x 380 */
|
233, 45, 79,240,225,160,160, 1,225,218,193,176,229,145, 16, 28, /* 0x 380 */
|
||||||
225,218,226,188,226, 77,208, 48,227, 92, 0, 2,224,138, 96, 1, /* 0x 390 */
|
225,218,226,188,226, 77,208, 48,227, 92, 0, 2,224,138, 96, 1, /* 0x 390 */
|
||||||
229,141, 0, 16, 3,160,192, 16, 19,160,192, 0,226, 78,224, 1, /* 0x 3a0 */
|
229,141, 0, 16, 3,160,192, 50, 19,160,192, 34,226, 78,224, 1, /* 0x 3a0 */
|
||||||
225,160, 16, 6,227,224, 64, 0,227,160, 0, 0,229,141, 32, 12, /* 0x 3b0 */
|
225,160, 16, 6,227,224, 0, 0,227,160, 80, 0,229,141, 32, 12, /* 0x 3b0 */
|
||||||
229,141, 48, 8,234, 0, 0, 11,229,145, 48, 0,227, 83, 0, 1, /* 0x 3c0 */
|
229,141, 48, 8,234, 0, 0, 11,229,145, 48, 0,227, 83, 0, 1, /* 0x 3c0 */
|
||||||
26, 0, 0, 6,229,145, 32, 8,229,145, 48, 20,224,130, 48, 3, /* 0x 3d0 */
|
26, 0, 0, 6,229,145, 32, 8,229,145, 48, 20,224,130, 48, 3, /* 0x 3d0 */
|
||||||
225, 80, 0, 3, 49,160, 0, 3,225, 84, 0, 2, 33,160, 64, 2, /* 0x 3e0 */
|
225, 85, 0, 3, 49,160, 80, 3,225, 80, 0, 2, 33,160, 0, 2, /* 0x 3e0 */
|
||||||
226,129, 16, 32,226, 78,224, 1,227, 94, 0, 0,170,255,255,241, /* 0x 3f0 */
|
226,129, 16, 32,226, 78,224, 1,227, 94, 0, 0,170,255,255,241, /* 0x 3f0 */
|
||||||
227,196, 78,255,227,196, 64, 15,224,100, 48, 0,226,131, 62,255, /* 0x 400 */
|
227,192, 78,255,227,196, 64, 15,224,100, 48, 5,226,131, 62,255, /* 0x 400 */
|
||||||
226,131, 48, 15,227,195, 62,255,227,195, 48, 15,229,141, 48, 36, /* 0x 410 */
|
226,131, 48, 15,227,195, 62,255,226, 28,224, 16,227,195, 48, 15, /* 0x 410 */
|
||||||
227,160, 80, 0,226,140, 48, 34,225,160, 0, 4,227,224,192, 0, /* 0x 420 */
|
229,141, 48, 36, 21,141, 64, 28, 26, 0, 0, 7,225,160, 48, 12, /* 0x 420 */
|
||||||
229,157, 16, 36,225,160, 32, 5,229,141,192, 0,229,141, 80, 4, /* 0x 430 */
|
225,160, 32, 14,227,224,192, 0,225,160, 0, 4,229,157, 16, 36, /* 0x 430 */
|
||||||
235,255,255, 75,227,160, 48, 52,224,100,176, 0,224, 3, 3,155, /* 0x 440 */
|
232,141, 80, 0,235,255,255, 74,229,141, 0, 28,229,157, 16, 28, /* 0x 440 */
|
||||||
229,141, 0, 28,229,141, 48, 32,229,141, 80, 24,234, 0, 0,127, /* 0x 450 */
|
227,160, 48, 52,224,100,176, 1,224, 3, 3,155,227,160, 32, 0, /* 0x 450 */
|
||||||
229,150, 48, 0,227, 83, 0, 6, 26, 0, 0, 5,229,150, 32, 8, /* 0x 460 */
|
226,134, 80, 32,229,141, 48, 32,229,141, 32, 24,234, 0, 0,127, /* 0x 460 */
|
||||||
229,157, 0, 8,224,139, 32, 2,227,160, 16, 3,235,255,255, 69, /* 0x 470 */
|
229,157, 48, 12,227, 83, 0, 0, 10, 0, 0, 8,229, 21, 48, 32, /* 0x 470 */
|
||||||
234, 0, 0,114,227, 83, 0, 1, 26, 0, 0,112,229,150, 48, 24, /* 0x 480 */
|
227, 83, 0, 6, 26, 0, 0, 5,229, 21, 32, 24,229,157, 0, 8, /* 0x 480 */
|
||||||
229,159, 34, 72,226, 3, 48, 7,225,160, 49, 3,225,160, 35, 50, /* 0x 490 */
|
224,139, 32, 2,227,160, 16, 3,235,255,255, 62,234, 0, 0,111, /* 0x 490 */
|
||||||
229,150, 48, 8,229,157, 16, 12,224,139,144, 3,225,160, 10, 9, /* 0x 4a0 */
|
229, 21, 48, 32,227, 83, 0, 1, 26, 0, 0,108,229, 21, 48, 8, /* 0x 4a0 */
|
||||||
229,150, 48, 16,227, 81, 0, 0,225,160, 10, 32,229,150,192, 4, /* 0x 4b0 */
|
229,159, 34, 36,226, 3, 48, 7,225,160, 49, 3,225,160, 35, 50, /* 0x 4b0 */
|
||||||
226, 2, 80, 7,229,150, 32, 20,224,131,128, 0, 5,157,224, 16, /* 0x 4c0 */
|
229, 21, 48, 24,224,139,144, 3,229,157, 48, 12,229, 21,224, 16, /* 0x 4c0 */
|
||||||
224, 96,112, 9,229,141, 48, 40,229,141, 32, 20, 19,224,224, 0, /* 0x 4d0 */
|
225,160, 26, 9,227, 83, 0, 0,225,160, 26, 33,229, 21,192, 28, /* 0x 4d0 */
|
||||||
224, 96,192, 12, 1,160, 32, 5, 3,160, 48, 18, 19,133, 32, 2, /* 0x 4e0 */
|
226, 2, 96, 7,229, 21, 32, 12,224, 97,128, 9, 5,157, 64, 16, /* 0x 4e0 */
|
||||||
19,160, 48, 50,225,160, 0, 7,225,160, 16, 8,229,141,144, 44, /* 0x 4f0 */
|
224,142,112, 1,229,141, 32, 20, 19,224, 64, 0,224, 97,192, 12, /* 0x 4f0 */
|
||||||
229,141,224, 0,229,141,192, 4,235,255,255, 25,225, 87, 0, 0, /* 0x 500 */
|
1,160, 32, 6, 3,160, 48, 18, 19,134, 32, 2, 19,160, 48, 50, /* 0x 500 */
|
||||||
26, 0, 0, 59,229,157, 48, 12,227, 83, 0, 0, 10, 0, 0, 6, /* 0x 510 */
|
225,160, 0, 8,225,160, 16, 7,229,141,224, 40,232,141, 16, 16, /* 0x 510 */
|
||||||
229,157, 16, 88,226, 21, 48, 4, 17,160, 48, 1,229,157, 0, 12, /* 0x 520 */
|
229,141,144, 44,235,255,255, 18,225, 88, 0, 0, 26, 0, 0, 56, /* 0x 520 */
|
||||||
226,141, 16, 40,229,157, 32, 16,235,255,255, 62,226,104, 48, 0, /* 0x 530 */
|
229,157, 48, 12,227, 83, 0, 0, 10, 0, 0, 6,229,157, 16, 88, /* 0x 530 */
|
||||||
225,160, 74, 3,227, 21, 0, 2,225,160, 74, 36, 10, 0, 0, 7, /* 0x 540 */
|
226, 22, 48, 4, 17,160, 48, 1,229,157, 0, 12,226,141, 16, 40, /* 0x 540 */
|
||||||
227, 84, 0, 0, 10, 0, 0, 5,224,135, 16, 8,225,160, 32, 4, /* 0x 550 */
|
229,157, 32, 16,235,255,255, 55,226,103, 48, 0,225,160, 74, 3, /* 0x 550 */
|
||||||
227,160, 48, 0,226, 82, 32, 1,228,193, 48, 1, 26,255,255,251, /* 0x 560 */
|
227, 22, 0, 2,225,160, 74, 36, 10, 0, 0, 7,227, 84, 0, 0, /* 0x 560 */
|
||||||
229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 35,229,150, 48, 0, /* 0x 570 */
|
10, 0, 0, 5,224,136, 16, 7,225,160, 32, 4,227,160, 48, 0, /* 0x 570 */
|
||||||
227, 83, 0, 1, 26, 0, 0, 24,229,150, 48, 24,227, 19, 0, 1, /* 0x 580 */
|
226, 82, 32, 1,228,193, 48, 1, 26,255,255,251,229,157, 32, 12, /* 0x 580 */
|
||||||
10, 0, 0, 21,229,150, 32, 20,229,150, 48, 16,225, 82, 0, 3, /* 0x 590 */
|
227, 82, 0, 0, 10, 0, 0, 32,229, 21, 48, 32,227, 83, 0, 1, /* 0x 590 */
|
||||||
229,150, 16, 8, 26, 0, 0, 70,224,130, 48, 1,224,131, 32, 11, /* 0x 5a0 */
|
26, 0, 0, 21,229, 21, 48, 8,227, 19, 0, 1, 10, 0, 0, 18, /* 0x 5a0 */
|
||||||
226, 98, 48, 0,225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7, /* 0x 5b0 */
|
229, 21, 32, 12,229, 21, 48, 16,225, 82, 0, 3,229, 21, 16, 24, /* 0x 5b0 */
|
||||||
154, 0, 0, 63,229,159, 49, 24,229,130, 48, 0,229,159, 49, 20, /* 0x 5c0 */
|
26, 0, 0, 62,224,130, 48, 1,224,131, 32, 11,226, 98, 48, 0, /* 0x 5c0 */
|
||||||
229,130, 48, 4,234, 0, 0, 1,227, 82, 0, 0, 10, 0, 0, 2, /* 0x 5d0 */
|
225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7,154, 0, 0, 55, /* 0x 5d0 */
|
||||||
229,157, 0, 8,227,160, 16, 0,235,255,254,234,225,160, 0, 7, /* 0x 5e0 */
|
229,159, 48,248,229,130, 48, 0,229,159, 48,244,229,157, 0, 8, /* 0x 5e0 */
|
||||||
225,160, 16, 8,225,160, 32, 5,235,255,254,219,227, 80, 0, 0, /* 0x 5f0 */
|
229,130, 48, 4,227,160, 16, 0,235,255,254,230,225,160, 0, 8, /* 0x 5f0 */
|
||||||
10, 0, 0, 1,227,160, 0,127,235,255,254,202,229,157, 32, 20, /* 0x 600 */
|
225,160, 16, 7,225,160, 32, 6,235,255,254,215,227, 80, 0, 0, /* 0x 600 */
|
||||||
224,136, 48, 4,224,137, 16, 2,224,135, 64, 3,225, 84, 0, 1, /* 0x 610 */
|
10, 0, 0, 1,227,160, 0,127,235,255,254,198,229,157, 32, 20, /* 0x 610 */
|
||||||
42, 0, 0, 10,227,224,192, 0,229,141,192, 0,224,100, 16, 1, /* 0x 620 */
|
224,135, 48, 4,224,137, 16, 2,224,136, 64, 3,225, 84, 0, 1, /* 0x 620 */
|
||||||
226,140,192, 1,225,160, 32, 5,225,160, 0, 4,227,160, 48, 50, /* 0x 630 */
|
42, 0, 0, 10,227,224,192, 0,229,141,192, 0,224,100, 16, 1, /* 0x 630 */
|
||||||
229,141,192, 4,235,255,254,202,225, 84, 0, 0, 26,255,255,236, /* 0x 640 */
|
226,140,192, 1,225,160, 32, 6,225,160, 0, 4,227,160, 48, 50, /* 0x 640 */
|
||||||
229,157, 48, 24,226,131, 48, 1,229,141, 48, 24,226,134, 96, 32, /* 0x 650 */
|
229,141,192, 4,235,255,254,198,225, 84, 0, 0, 26,255,255,236, /* 0x 650 */
|
||||||
225,218, 50,188,229,157, 16, 24,225, 81, 0, 3,186,255,255,123, /* 0x 660 */
|
229,157, 48, 24,226,131, 48, 1,229,141, 48, 24,226,133, 80, 32, /* 0x 660 */
|
||||||
229,157, 32, 12,227, 82, 0, 0, 26, 0, 0, 4,229,157, 0, 16, /* 0x 670 */
|
225,218, 50,188,229,157, 16, 24,225, 81, 0, 3,186,255,255,123, /* 0x 670 */
|
||||||
235,255,254,179,227, 80, 0, 0, 26,255,255,221,234, 0, 0, 5, /* 0x 680 */
|
229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 5,225,218, 49,176, /* 0x 680 */
|
||||||
225,218, 49,176,227, 83, 0, 3, 21,157, 48, 28, 21,157, 16, 36, /* 0x 690 */
|
227, 83, 0, 3, 21,157, 48, 28, 21,157, 16, 36, 16,131, 0, 1, /* 0x 690 */
|
||||||
16,131, 0, 1, 27,255,254,172,229,157, 32, 84,227, 82, 0, 0, /* 0x 6a0 */
|
27,255,254,173,229,157, 32, 84,227, 82, 0, 0, 21,130,176, 0, /* 0x 6a0 */
|
||||||
21,130,176, 0,229,154, 0, 24,224,139, 0, 0,226,141,208, 48, /* 0x 6b0 */
|
229,154, 0, 24,224,139, 0, 0,226,141,208, 48,232,189,143,240, /* 0x 6b0 */
|
||||||
232,189,143,240,229,150, 48, 4,229,157, 32, 32,227, 83, 0, 0, /* 0x 6c0 */
|
229, 21, 48, 28,227, 83, 0, 0, 5,157, 32, 32, 0,129, 48, 2, /* 0x 6c0 */
|
||||||
224,129, 48, 2,226,131, 32, 8, 10,255,255,185,234,255,255,189, /* 0x 6d0 */
|
2,131, 32, 8, 10,255,255,193,234,255,255,199,115, 81, 98, 64, /* 0x 6d0 */
|
||||||
115, 81, 98, 64,239,144, 0, 91,225,160,240, 14,233, 45, 71,240, /* 0x 6e0 */
|
239,144, 0, 91,225,160,240, 14,233, 45, 71,240,226, 77,208, 12, /* 0x 6e0 */
|
||||||
226, 77,208, 12,226,141,112, 52,225,160, 80, 0,225,160, 96, 1, /* 0x 6f0 */
|
226,141, 96, 52,225,160,144, 0,225,160, 80, 1,225,160,128, 3, /* 0x 6f0 */
|
||||||
225,160,160, 3,225,160, 0, 7,227,160, 48, 0,226,141, 16, 44, /* 0x 700 */
|
225,160, 0, 6,227,160, 48, 0,226,141, 16, 44,229,157,160, 48, /* 0x 700 */
|
||||||
229,157,144, 48,225,160,128, 2,229,157, 64, 52,235,255,254,197, /* 0x 710 */
|
225,160,112, 2,229,157, 64, 52,235,255,254,198,229,157, 48, 56, /* 0x 710 */
|
||||||
229,157, 48, 56,227,160, 16, 5,224,100, 48, 3,225,217, 34,188, /* 0x 720 */
|
227,160, 16, 5,224,100, 48, 3,225,218, 34,188,225,160, 0, 9, /* 0x 720 */
|
||||||
225,160, 0, 5,229,141, 48, 56,229,141, 96, 52,235,255,254,149, /* 0x 730 */
|
229,141, 48, 56,229,141, 80, 52,235,255,254,150,225,160, 0, 9, /* 0x 730 */
|
||||||
225,160, 0, 5,227,160, 16, 4,225,217, 34,186,235,255,254,145, /* 0x 740 */
|
227,160, 16, 4,225,218, 34,186,235,255,254,146,226,138, 64, 52, /* 0x 740 */
|
||||||
226,137, 96, 52,229,157, 32, 60,229,150, 48, 8,226,130, 32, 52, /* 0x 750 */
|
229,157, 32, 60,229,148, 48, 8,226,130, 32, 52,224,130, 32, 3, /* 0x 750 */
|
||||||
224,130, 32, 3,225,160, 0, 5,227,160, 16, 3,235,255,254,137, /* 0x 760 */
|
225,160, 0, 9,227,160, 16, 3,235,255,254,138,226,141,192, 8, /* 0x 760 */
|
||||||
226,141,192, 8,225,160, 32, 7,225,160, 16, 9,225,160, 48, 5, /* 0x 770 */
|
225,160, 32, 6,225,160, 16, 10,225,160, 48, 9,225,160, 0, 7, /* 0x 770 */
|
||||||
225,160, 0, 8,229,141,192, 0,229,141,160, 4,235,255,254,251, /* 0x 780 */
|
229,141,192, 0,229,141,128, 4,235,255,254,252,225,160, 80, 0, /* 0x 780 */
|
||||||
225,160, 64, 0,227,160, 16, 9,225,160, 32, 4,225,160, 0, 5, /* 0x 790 */
|
227,160, 16, 9,225,160, 32, 5,225,160, 0, 9,235,255,254,125, /* 0x 790 */
|
||||||
235,255,254,124,225,217, 18,188,227,160, 32, 0,234, 0, 0, 29, /* 0x 7a0 */
|
225,218, 18,188,227,160, 32, 0,234, 0, 0, 35,229,148, 48, 0, /* 0x 7a0 */
|
||||||
229,150, 48, 0,227, 83, 0, 3, 26, 0, 0, 24,229,150, 48, 8, /* 0x 7b0 */
|
227, 83, 0, 3, 26, 0, 0, 30,229,148, 48, 8,229,157, 0, 8, /* 0x 7b0 */
|
||||||
229,157, 0, 8,227,160, 16, 0,224,131, 0, 0,225,160, 32, 1, /* 0x 7c0 */
|
227,160, 16, 0,224,131, 0, 0,225,160, 32, 1,235,255,254, 94, /* 0x 7c0 */
|
||||||
235,255,254, 93,226, 80, 64, 0,186, 0, 0, 4,225,160, 16, 9, /* 0x 7d0 */
|
226, 80, 64, 0,186, 0, 0, 4,225,160, 16, 10,227,160, 44, 2, /* 0x 7d0 */
|
||||||
227,160, 44, 2,235,255,254, 84,227, 80, 12, 2, 10, 0, 0, 1, /* 0x 7e0 */
|
235,255,254, 85,227, 80, 12, 2, 10, 0, 0, 1,227,160, 0,127, /* 0x 7e0 */
|
||||||
227,160, 0,127,235,255,254, 79,227,160,192, 0,225,160, 0, 4, /* 0x 7f0 */
|
235,255,254, 80,227,160,224, 0,225,160, 32, 14,226,141,192, 8, /* 0x 7f0 */
|
||||||
225,160, 32, 12,225,160, 16, 9,225,160, 48, 12,229,141,192, 0, /* 0x 800 */
|
225,160, 16, 10,225,160, 48, 9,225,160, 0, 4,232,141, 80, 0, /* 0x 800 */
|
||||||
229,141,192, 4,235,255,254,217,225,160, 64, 0,234, 0, 0, 3, /* 0x 810 */
|
235,255,254,218,227,160, 16, 7,225,160, 80, 0,229,157, 32, 8, /* 0x 810 */
|
||||||
226,134, 96, 32,226,130, 32, 1,225, 82, 0, 1,186,255,255,223, /* 0x 820 */
|
225,160, 0, 9,235,255,254, 91,225,160, 0, 4,235,255,254, 72, /* 0x 820 */
|
||||||
225,160, 0, 4,226,141,208, 12,232,189,135,240 /* 0x 830 */
|
234, 0, 0, 3,226,132, 64, 32,226,130, 32, 1,225, 82, 0, 1, /* 0x 830 */
|
||||||
|
186,255,255,217,225,160, 0, 5,226,141,208, 12,232,189,135,240 /* 0x 840 */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/* armeb-linux.kernel.vmlinux-head.h
|
||||||
|
created from armeb-linux.kernel.vmlinux-head.bin, 8 (0x8) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 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>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_ARMEB_LINUX_KERNEL_VMLINUX_HEAD_SIZE 8
|
||||||
|
#define STUB_ARMEB_LINUX_KERNEL_VMLINUX_HEAD_ADLER32 0x19db0637
|
||||||
|
#define STUB_ARMEB_LINUX_KERNEL_VMLINUX_HEAD_CRC32 0xb5ec5990
|
||||||
|
|
||||||
|
unsigned char stub_armeb_linux_kernel_vmlinux_head[8] = {
|
||||||
|
225,160,192, 14,235,255,255,254 /* 0x 0 */
|
||||||
|
};
|
||||||
File diff suppressed because it is too large
Load Diff
+1915
-817
File diff suppressed because it is too large
Load Diff
@@ -29,15 +29,15 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_I386_BSD_ELF_ENTRY_SIZE 37562
|
#define STUB_I386_BSD_ELF_ENTRY_SIZE 37562
|
||||||
#define STUB_I386_BSD_ELF_ENTRY_ADLER32 0xb6d5917d
|
#define STUB_I386_BSD_ELF_ENTRY_ADLER32 0x0c31915d
|
||||||
#define STUB_I386_BSD_ELF_ENTRY_CRC32 0x57a02d3a
|
#define STUB_I386_BSD_ELF_ENTRY_CRC32 0x68fd1b14
|
||||||
|
|
||||||
unsigned char stub_i386_bsd_elf_entry[37562] = {
|
unsigned char stub_i386_bsd_elf_entry[37562] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||||
116, 34, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */
|
116, 34, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */
|
||||||
243, 0,240, 0,232,123, 0, 0, 0, 96,139,116, 36, 40,139,124, /* 0x 30 */
|
243, 0,240, 0,232,123, 0, 0, 0, 96,139,116, 36, 36,139,124, /* 0x 30 */
|
||||||
36, 48,131,205,255,235, 3,164,235, 3,138, 6, 70,136, 7, 71, /* 0x 40 */
|
36, 44,131,205,255,235, 3,164,235, 3,138, 6, 70,136, 7, 71, /* 0x 40 */
|
||||||
1,219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, 64, /* 0x 50 */
|
1,219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, 64, /* 0x 50 */
|
||||||
138, 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131, /* 0x 60 */
|
138, 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131, /* 0x 60 */
|
||||||
238,252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x 70 */
|
238,252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x 70 */
|
||||||
@@ -88,10 +88,10 @@ unsigned char stub_i386_bsd_elf_entry[37562] = {
|
|||||||
4,119,241, 1,207,233,252,255,255,255,137,229,141,156, 36, 0, /* 0x 340 */
|
4,119,241, 1,207,233,252,255,255,255,137,229,141,156, 36, 0, /* 0x 340 */
|
||||||
0, 0, 0, 49,192, 80, 57,220,117,251, 70, 70, 83,104, 0, 0, /* 0x 350 */
|
0, 0, 0, 49,192, 80, 57,220,117,251, 70, 70, 83,104, 0, 0, /* 0x 350 */
|
||||||
0, 0, 87,131,195, 4, 83,104, 0, 0, 0, 0, 86,131,195, 4, /* 0x 360 */
|
0, 0, 87,131,195, 4, 83,104, 0, 0, 0, 0, 86,131,195, 4, /* 0x 360 */
|
||||||
83, 80,199, 3, 0, 0, 0, 0,137,229,139, 85, 44,172, 74,136, /* 0x 370 */
|
83, 80,199, 3, 0, 0, 0, 0,137,229,139, 85, 40,172, 74,136, /* 0x 370 */
|
||||||
193, 36, 7,192,233, 3,187, 0,253,255,255,211,227,141,164, 92, /* 0x 380 */
|
193, 36, 7,192,233, 3,187, 0,253,255,255,211,227,141,164, 92, /* 0x 380 */
|
||||||
144,241,255,255,131,228,224,106, 0,106, 0,137,227, 83,131,195, /* 0x 390 */
|
144,241,255,255,131,228,224,106, 0,106, 0,137,227, 83,131,195, /* 0x 390 */
|
||||||
4,139, 77, 52,255, 49, 87, 83,131,195, 4,136, 67, 2,172, 74, /* 0x 3a0 */
|
4,139, 77, 48,255, 49, 87, 83,131,195, 4,136, 67, 2,172, 74, /* 0x 3a0 */
|
||||||
136,193, 36, 15,136, 3,192,233, 4,136, 75, 1, 82, 86, 83, 80, /* 0x 3b0 */
|
136,193, 36, 15,136, 3,192,233, 4,136, 75, 1, 82, 86, 83, 80, /* 0x 3b0 */
|
||||||
85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68, /* 0x 3c0 */
|
85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68, /* 0x 3c0 */
|
||||||
36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0, /* 0x 3d0 */
|
36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0, /* 0x 3d0 */
|
||||||
@@ -431,8 +431,8 @@ unsigned char stub_i386_bsd_elf_entry[37562] = {
|
|||||||
148, 36,156, 0, 0, 0,139, 76, 36,116,137, 26,139,156, 36,168, /* 0x18b0 */
|
148, 36,156, 0, 0, 0,139, 76, 36,116,137, 26,139,156, 36,168, /* 0x18b0 */
|
||||||
0, 0, 0,137, 11,131,196,124, 91, 94, 95, 93, 3,115,252, 3, /* 0x18c0 */
|
0, 0, 0,137, 11,131,196,124, 91, 94, 95, 93, 3,115,252, 3, /* 0x18c0 */
|
||||||
123,248, 49,192,141,140, 36, 0,255,255,255,137,236, 80, 57,204, /* 0x18d0 */
|
123,248, 49,192,141,140, 36, 0,255,255,255,137,236, 80, 57,204, /* 0x18d0 */
|
||||||
117,251,137,236, 49,201,139, 84, 36, 40, 3, 84, 36, 44, 57,214, /* 0x18e0 */
|
117,251,137,236, 49,201,139, 84, 36, 36, 3, 84, 36, 40, 57,214, /* 0x18e0 */
|
||||||
116, 1, 72, 43,124, 36, 48,139, 84, 36, 52,137, 58,137, 68, 36, /* 0x18f0 */
|
116, 1, 72, 43,124, 36, 44,139, 84, 36, 48,137, 58,137, 68, 36, /* 0x18f0 */
|
||||||
28, 97,195,235, 4, 90, 88, 89,151, 96, 49,219,187, 0, 0, 0, /* 0x1900 */
|
28, 97,195,235, 4, 90, 88, 89,151, 96, 49,219,187, 0, 0, 0, /* 0x1900 */
|
||||||
0,106, 15, 88,138,100, 36, 32,106, 15, 91,138,124, 36, 32,138, /* 0x1910 */
|
0,106, 15, 88,138,100, 36, 32,106, 15, 91,138,124, 36, 32,138, /* 0x1910 */
|
||||||
84, 36, 32,233,252,255,255,255, 15,183, 47, 43,110, 12, 41,221, /* 0x1920 */
|
84, 36, 32,233,252,255,255,255, 15,183, 47, 43,110, 12, 41,221, /* 0x1920 */
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,106 @@
|
|||||||
|
/* i386-darwin.macho-fold.h
|
||||||
|
created from i386-darwin.macho-fold.bin, 1105 (0x451) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 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>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_I386_DARWIN_MACHO_FOLD_SIZE 1105
|
||||||
|
#define STUB_I386_DARWIN_MACHO_FOLD_ADLER32 0x5ad106a1
|
||||||
|
#define STUB_I386_DARWIN_MACHO_FOLD_CRC32 0x01a4878b
|
||||||
|
|
||||||
|
unsigned char stub_i386_darwin_macho_fold[1105] = {
|
||||||
|
106, 0,137,231,141,117, 2,139, 19,137,217, 41,209,139, 89, 24, /* 0x 0 */
|
||||||
|
184, 0, 8, 0, 0, 57,216,118, 2,137,195, 41,220, 96,232, 6, /* 0x 10 */
|
||||||
|
3, 0, 0,139, 76, 36, 16,141,100, 12, 32,255, 96, 40,139, 68, /* 0x 20 */
|
||||||
|
36, 4,139, 76, 36, 8,139, 16, 15,202,137, 16,131,233, 4,141, /* 0x 30 */
|
||||||
|
64, 4,115,242,195, 90, 15, 52,176, 1,235, 2,176, 74,235, 2, /* 0x 40 */
|
||||||
|
176, 73,235, 2,176,153,235, 2,176, 6,235, 2,176, 5,235, 2, /* 0x 50 */
|
||||||
|
176,197,235, 2,176, 3, 15,182,192,137,225,232,213,255,255,255, /* 0x 60 */
|
||||||
|
115, 3,131,200,255,195,144,144, 85,137,229, 87, 86,139,125, 8, /* 0x 70 */
|
||||||
|
83,137,195, 57, 56,139,112, 4,115, 7,106,127,232,183,255,255, /* 0x 80 */
|
||||||
|
255,133,255,116, 10,137,249,138, 6, 70,136, 2, 66,226,248, 1, /* 0x 90 */
|
||||||
|
123, 4, 41, 59,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, /* 0x a0 */
|
||||||
|
86,137,198, 83,137,211,131,236, 24,139, 69, 8,139,125, 12,137, /* 0x b0 */
|
||||||
|
69,220,131, 58, 0, 15,132,172, 0, 0, 0,141, 85,228,137,240, /* 0x c0 */
|
||||||
|
106, 12,232,161,255,255,255,139, 69,228, 90,133,192,139, 77,232, /* 0x d0 */
|
||||||
|
117, 19,129,249, 85, 80, 88, 33,117, 15,131, 62, 0, 15,132,132, /* 0x e0 */
|
||||||
|
0, 0, 0,235, 4,133,201,117, 7,106,127,232, 72,255,255,255, /* 0x f0 */
|
||||||
|
57,193,119,245, 59, 3,119,241, 57,193,115, 76,137, 69,224, 15, /* 0x 100 */
|
||||||
|
182, 69,236, 80,141, 69,224, 80,255,115, 4, 81,255,118, 4,255, /* 0x 110 */
|
||||||
|
85,220,131,196, 20,133,192,117,208,139, 85,224, 59, 85,228,117, /* 0x 120 */
|
||||||
|
200,138, 69,237,132,192,116, 22,133,255,116, 18, 15,182,192, 80, /* 0x 130 */
|
||||||
|
15,182, 69,238, 80, 82,255,115, 4,255,215,131,196, 16,139, 69, /* 0x 140 */
|
||||||
|
232, 1, 70, 4, 41, 6,235, 12,139, 83, 4, 81,137,240,232, 21, /* 0x 150 */
|
||||||
|
255,255,255, 88,139, 85,228,139, 3, 1, 83, 4, 41,208,133,192, /* 0x 160 */
|
||||||
|
137, 3,233, 78,255,255,255,141,101,244, 91, 94, 95,201,195, 85, /* 0x 170 */
|
||||||
|
137,229, 87, 86, 83,131,236, 48,137, 69,232,139, 69, 8,137, 85, /* 0x 180 */
|
||||||
|
228,139, 85, 12,199, 69,208, 0, 0, 0, 0,137, 69,224,139, 69, /* 0x 190 */
|
||||||
|
20,137, 85,220,139, 85, 24,137, 69,216,139, 93,232,139, 69,232, /* 0x 1a0 */
|
||||||
|
137, 85,212, 49,210,131,195, 28,199, 69,204, 0, 0, 0, 0, 59, /* 0x 1b0 */
|
||||||
|
80, 16, 15,131, 86, 1, 0, 0,139, 3,131,248, 1, 15,133, 29, /* 0x 1c0 */
|
||||||
|
1, 0, 0,139, 83, 24,139, 67, 28,139, 75, 36,137,214, 1,208, /* 0x 1d0 */
|
||||||
|
137, 85,240,137, 69,200,137,208, 37,255, 15, 0, 0,137,207, 41, /* 0x 1e0 */
|
||||||
|
198, 1,199,137, 77,236,116, 69,139, 69,228, 49,210, 3, 67, 32, /* 0x 1f0 */
|
||||||
|
82,133,201, 80,139, 69,220,117, 3,131,200,255,131,125,224, 0, /* 0x 200 */
|
||||||
|
80,117, 9,133,201,184, 18, 0, 0, 0,117, 5,184, 18, 16, 0, /* 0x 210 */
|
||||||
|
0,131,125,224, 0, 80,106, 3,137,248,116, 3,141, 71, 3, 80, /* 0x 220 */
|
||||||
|
86,232, 42,254,255,255,131,196, 28, 57,198,117, 94,131,125,224, /* 0x 230 */
|
||||||
|
0,116, 42,131,123, 36, 0,116, 36,131,123, 32, 0,117, 11,131, /* 0x 240 */
|
||||||
|
125, 16, 0,116, 5,139, 85, 16,137, 50,255,117,212,255,117,216, /* 0x 250 */
|
||||||
|
141, 85,236,139, 69,224,232, 65,254,255,255, 88, 90,137,248,141, /* 0x 260 */
|
||||||
|
20, 62,247,216, 37,255, 15, 0, 0,137, 69,196,116, 8,137,193, /* 0x 270 */
|
||||||
|
198, 2, 0, 66,226,250,133,255,116, 24,255,115, 44, 87, 86,232, /* 0x 280 */
|
||||||
|
184,253,255,255,131,196, 12,133,192,116, 7,106,127,232,166,253, /* 0x 290 */
|
||||||
|
255,255,139, 85,196,141, 4, 23, 1,198, 59,117,200,115, 35,106, /* 0x 2a0 */
|
||||||
|
0,106, 0,106,255,104, 18, 16, 0, 0,255,115, 44, 41,117,200, /* 0x 2b0 */
|
||||||
|
255,117,200, 86,232,151,253,255,255,131,196, 28, 57,198,116, 58, /* 0x 2c0 */
|
||||||
|
235,201,131,125,224, 0,116, 50,141, 71, 3, 37,255, 15, 0, 0, /* 0x 2d0 */
|
||||||
|
131,248, 3,119, 37, 80, 86,232,100,253,255,255, 89, 94,235, 26, /* 0x 2e0 */
|
||||||
|
131,232, 4,131,248, 1,119, 18,131,123, 8, 1,117, 12,131,123, /* 0x 2f0 */
|
||||||
|
12, 16,117, 6,141, 67, 16,137, 69,208,255, 69,204,139, 85,232, /* 0x 300 */
|
||||||
|
139, 69,204, 3, 91, 4, 59, 66, 16,233,164,254,255,255,139, 69, /* 0x 310 */
|
||||||
|
208,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83,131, /* 0x 320 */
|
||||||
|
236, 32,199, 69,212, 0, 0, 0, 0,139, 85, 32,139, 69, 24,139, /* 0x 330 */
|
||||||
|
93, 16,137, 69,216,139,117, 20,141, 66, 24,137,117,232,137, 69, /* 0x 340 */
|
||||||
|
240,139, 69, 28,131,232, 24,137, 69,236,139, 66, 24,139, 85,240, /* 0x 350 */
|
||||||
|
106, 0,137, 69,228,139, 69,236,137, 85,224,137, 69,220,141, 85, /* 0x 360 */
|
||||||
|
228,141, 69,236, 83,232, 50,253,255,255,255,117, 12, 83, 49,210, /* 0x 370 */
|
||||||
|
255,117, 8,141, 69,220,106,255, 80,137,240,232,239,253,255,255, /* 0x 380 */
|
||||||
|
49,210,137,195,141, 70, 28,131,196, 28,139, 78, 16, 57,202, 15, /* 0x 390 */
|
||||||
|
131,162, 0, 0, 0,131, 56, 14, 15,133,144, 0, 0, 0, 3, 64, /* 0x 3a0 */
|
||||||
|
8,106, 0,106, 0, 80,232,161,252,255,255,131,196, 12,133,192, /* 0x 3b0 */
|
||||||
|
137,199,120, 25, 49,210,139, 69,212, 82, 80,255,117,216, 86, 87, /* 0x 3c0 */
|
||||||
|
232,127,252,255,255,131,196, 20, 57, 69,216,116, 15,106,127,232, /* 0x 3d0 */
|
||||||
|
100,252,255,255,139, 91, 8,137, 93,212,235,216,129, 62,202,254, /* 0x 3e0 */
|
||||||
|
186,190,117, 42, 15,182, 70, 7,141, 94, 8,107,192, 20,131,192, /* 0x 3f0 */
|
||||||
|
8, 80, 86,232, 38,252,255,255, 89, 90, 49,192,139, 86, 4, 57, /* 0x 400 */
|
||||||
|
208,115, 11,131, 59, 7,116,204, 64,131,195, 20,235,241,106, 0, /* 0x 410 */
|
||||||
|
139, 85,212,106, 0,137,240,106, 0, 87,106, 0,232, 78,253,255, /* 0x 420 */
|
||||||
|
255, 87,137,195,232, 31,252,255,255,131,196, 24,235, 9, 3, 64, /* 0x 430 */
|
||||||
|
4, 66,233, 86,255,255,255,141,101,244,137,216, 91, 94, 95,201, /* 0x 440 */
|
||||||
|
195 /* 0x 450 */
|
||||||
|
};
|
||||||
@@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_I386_DOS32_TMT_SIZE 27032
|
#define STUB_I386_DOS32_TMT_SIZE 27032
|
||||||
#define STUB_I386_DOS32_TMT_ADLER32 0xe058a94c
|
#define STUB_I386_DOS32_TMT_ADLER32 0x60faa944
|
||||||
#define STUB_I386_DOS32_TMT_CRC32 0x76e13290
|
#define STUB_I386_DOS32_TMT_CRC32 0x1e38f90e
|
||||||
|
|
||||||
unsigned char stub_i386_dos32_tmt[27032] = {
|
unsigned char stub_i386_dos32_tmt[27032] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
@@ -444,7 +444,7 @@ unsigned char stub_i386_dos32_tmt[27032] = {
|
|||||||
0, 0,235, 30,138, 7,131,199, 1, 60,128,114, 10, 60,143,119, /* 0x1980 */
|
0, 0,235, 30,138, 7,131,199, 1, 60,128,114, 10, 60,143,119, /* 0x1980 */
|
||||||
6,128,127,254, 15,116, 5, 44,232, 60, 1,119,255,128, 63, 0, /* 0x1990 */
|
6,128,127,254, 15,116, 5, 44,232, 60, 1,119,255,128, 63, 0, /* 0x1990 */
|
||||||
117,255,139, 7,102,193,232, 8,193,192, 16,134,196, 41,248, 1, /* 0x19a0 */
|
117,255,139, 7,102,193,232, 8,193,192, 16,134,196, 41,248, 1, /* 0x19a0 */
|
||||||
240,137, 7,131,199, 4,131,233, 4,138, 7,131,199, 1,226, 13, /* 0x19b0 */
|
232,137, 7,131,199, 4,131,233, 4,138, 7,131,199, 1,226, 13, /* 0x19b0 */
|
||||||
131,233, 1,127, 6,141,125,252, 49,192,138, 6, 70, 9,192,116, /* 0x19c0 */
|
131,233, 1,127, 6,141,125,252, 49,192,138, 6, 70, 9,192,116, /* 0x19c0 */
|
||||||
1, 60,239,119, 17, 1,199,139, 7,134,196,193,192, 16,134,196, /* 0x19d0 */
|
1, 60,239,119, 17, 1,199,139, 7,134,196,193,192, 16,134,196, /* 0x19d0 */
|
||||||
1,232,137, 7,235,226, 36, 15,193,224, 16,102,139, 6,131,198, /* 0x19e0 */
|
1,232,137, 7,235,226, 36, 15,193,224, 16,102,139, 6,131,198, /* 0x19e0 */
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_I386_DOS32_WATCOM_LE_SIZE 27436
|
#define STUB_I386_DOS32_WATCOM_LE_SIZE 27436
|
||||||
#define STUB_I386_DOS32_WATCOM_LE_ADLER32 0x1fda144c
|
#define STUB_I386_DOS32_WATCOM_LE_ADLER32 0x946d1444
|
||||||
#define STUB_I386_DOS32_WATCOM_LE_CRC32 0xd84b8031
|
#define STUB_I386_DOS32_WATCOM_LE_CRC32 0x39b33888
|
||||||
|
|
||||||
unsigned char stub_i386_dos32_watcom_le[27436] = {
|
unsigned char stub_i386_dos32_watcom_le[27436] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
@@ -445,7 +445,7 @@ unsigned char stub_i386_dos32_watcom_le[27436] = {
|
|||||||
4,185, 0, 0, 0, 0,235, 30,138, 7,131,199, 1, 60,128,114, /* 0x1990 */
|
4,185, 0, 0, 0, 0,235, 30,138, 7,131,199, 1, 60,128,114, /* 0x1990 */
|
||||||
10, 60,143,119, 6,128,127,254, 15,116, 5, 44,232, 60, 1,119, /* 0x19a0 */
|
10, 60,143,119, 6,128,127,254, 15,116, 5, 44,232, 60, 1,119, /* 0x19a0 */
|
||||||
255,128, 63, 0,117,255,139, 7,102,193,232, 8,193,192, 16,134, /* 0x19b0 */
|
255,128, 63, 0,117,255,139, 7,102,193,232, 8,193,192, 16,134, /* 0x19b0 */
|
||||||
196, 41,248, 1,240,137, 7,131,199, 4,131,233, 4,138, 7,131, /* 0x19c0 */
|
196, 41,248, 1,232,137, 7,131,199, 4,131,233, 4,138, 7,131, /* 0x19c0 */
|
||||||
199, 1,226, 13,131,233, 1,127, 6,141,125,252, 49,192,138, 6, /* 0x19d0 */
|
199, 1,226, 13,131,233, 1,127, 6,141,125,252, 49,192,138, 6, /* 0x19d0 */
|
||||||
70, 9,192,116, 1, 60,239,119, 17, 1,199,139, 7,134,196,193, /* 0x19e0 */
|
70, 9,192,116, 1, 60,239,119, 17, 1,199,139, 7,134,196,193, /* 0x19e0 */
|
||||||
192, 16,134,196, 1,232,137, 7,235,226, 36, 15,193,224, 16,102, /* 0x19f0 */
|
192, 16,134,196, 1,232,137, 7,235,226, 36, 15,193,224, 16,102, /* 0x19f0 */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* i386-linux.elf-fold.h
|
/* i386-linux.elf-fold.h
|
||||||
created from i386-linux.elf-fold.bin, 1691 (0x69b) bytes
|
created from i386-linux.elf-fold.bin, 1730 (0x6c2) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,17 +28,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_I386_LINUX_ELF_FOLD_SIZE 1691
|
#define STUB_I386_LINUX_ELF_FOLD_SIZE 1730
|
||||||
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0xe27fd53e
|
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x8b6ce726
|
||||||
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0x75829ac3
|
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0xb81886c1
|
||||||
|
|
||||||
unsigned char stub_i386_linux_elf_fold[1691] = {
|
unsigned char stub_i386_linux_elf_fold[1730] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
2, 0, 3, 0, 1, 0, 0, 0,128, 16,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, 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, 16,192, 0, /* 0x 30 */
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, /* 0x 30 */
|
||||||
0, 16,192, 0,155, 6, 0, 0,156, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
0, 16,192, 0,194, 6, 0, 0,196, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||||
0, 16, 0, 0, 1, 0, 0, 0,155, 6, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
0, 16, 0, 0, 1, 0, 0, 0,194, 6, 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 60 */
|
||||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||||
83, 41,201,186,120, 2, 0, 0,137,230,137,231, 41,219,232,181, /* 0x 80 */
|
83, 41,201,186,120, 2, 0, 0,137,230,137,231, 41,219,232,181, /* 0x 80 */
|
||||||
@@ -51,7 +51,7 @@ unsigned char stub_i386_linux_elf_fold[1691] = {
|
|||||||
148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192,102, /* 0x f0 */
|
148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192,102, /* 0x f0 */
|
||||||
131,123, 16, 3,117, 1,146, 80,139,115, 24,141,131,140, 0, 0, /* 0x 100 */
|
131,123, 16, 3,117, 1,146, 80,139,115, 24,141,131,140, 0, 0, /* 0x 100 */
|
||||||
0, 41,198,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, /* 0x 110 */
|
0, 41,198,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, /* 0x 110 */
|
||||||
71,232, 98, 4, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, /* 0x 120 */
|
71,232,102, 4, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, /* 0x 120 */
|
||||||
0, 80, 79, 41,192, 60,175,175,117,252, 80, 80, 80, 80, 80, 80, /* 0x 130 */
|
0, 80, 79, 41,192, 60,175,175,117,252, 80, 80, 80, 80, 80, 80, /* 0x 130 */
|
||||||
80, 80, 41,217,176, 91,255, 39,173,171,133,192,117,250,135,223, /* 0x 140 */
|
80, 80, 41,217,176, 91,255, 39,173,171,133,192,117,250,135,223, /* 0x 140 */
|
||||||
1,223,173,171,133,192,117,250, 87,173,171,131,248, 32,115, 3, /* 0x 150 */
|
1,223,173,171,133,192,117,250, 87,173,171,131,248, 32,115, 3, /* 0x 150 */
|
||||||
@@ -74,69 +74,72 @@ unsigned char stub_i386_linux_elf_fold[1691] = {
|
|||||||
196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137, /* 0x 260 */
|
196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137, /* 0x 260 */
|
||||||
240,232, 14,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208, /* 0x 270 */
|
240,232, 14,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208, /* 0x 270 */
|
||||||
133,192,137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201, /* 0x 280 */
|
133,192,137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201, /* 0x 280 */
|
||||||
195,133,192, 83,137,211,116, 29,168, 1,117, 25,139, 16, 57,218, /* 0x 290 */
|
195,133,192, 83,137,211,116, 26,168, 1,117, 22,139, 16, 57,218, /* 0x 290 */
|
||||||
116, 7, 74,117, 11,133,219,116, 7,137, 24,137, 72, 4,235, 5, /* 0x 2a0 */
|
116, 7, 74,117, 8,133,219,116, 4,137, 24,235, 7,131,192, 8, /* 0x 2a0 */
|
||||||
131,192, 8,235,231, 91,195, 85,137,229, 87, 86, 83,131,236, 68, /* 0x 2b0 */
|
235,234, 49,192,133,192,116, 3,137, 72, 4, 91,195, 85,137,229, /* 0x 2b0 */
|
||||||
137, 69,228,139, 69, 8,137, 85,224,139, 93,224,139, 85, 12,137, /* 0x 2c0 */
|
87, 86, 83,131,236, 68,137, 69,228,139, 69, 8,137, 85,224,139, /* 0x 2c0 */
|
||||||
69,220,139, 69,224,139, 77, 20,137, 85,216, 3, 91, 28,139, 85, /* 0x 2d0 */
|
93,224,139, 85, 12,137, 69,220,139, 69,224,139, 77, 20,137, 85, /* 0x 2d0 */
|
||||||
224,137, 77,212,102,131,120, 16, 2, 15,183, 74, 44,137, 93,208, /* 0x 2e0 */
|
216, 3, 91, 28,139, 85,224,137, 77,212,102,131,120, 16, 2, 15, /* 0x 2e0 */
|
||||||
15,148,192,131,207,255, 15,182,192,137,202,193,224, 4, 49,246, /* 0x 2f0 */
|
183, 74, 44,137, 93,208, 15,148,192,131,206,255, 15,182,192,137, /* 0x 2f0 */
|
||||||
131,192, 34, 74,120, 28,131, 59, 1,117, 18,139, 83, 8, 57,250, /* 0x 300 */
|
202,193,224, 4, 49,255,131,192, 34, 74,120, 28,131, 59, 1,117, /* 0x 300 */
|
||||||
115, 2,137,215, 3, 83, 20, 57,214,115, 2,137,214,131,195, 32, /* 0x 310 */
|
18,139, 83, 8, 57,242,115, 2,137,214, 3, 83, 20, 57,215,115, /* 0x 310 */
|
||||||
226,228,137,251,106, 0,129,227, 0,240,255,255,106,255, 41,222, /* 0x 320 */
|
2,137,215,131,195, 32,226,228,129,230, 0,240,255,255, 41,247, /* 0x 320 */
|
||||||
80,129,198,255, 15, 0, 0,106, 0,129,230, 0,240,255,255, 86, /* 0x 330 */
|
137,242,141,159,255, 15, 0, 0,129,227, 0,240,255,255,168, 16, /* 0x 330 */
|
||||||
83,232, 50,254,255,255,139, 77,224,141, 52, 48,131,196, 24, 41, /* 0x 340 */
|
117, 19,106, 0,106,255, 80,106, 0, 83, 86,232, 40,254,255,255, /* 0x 340 */
|
||||||
216,102,131,121, 44, 0,137,117,240,137, 69,204,199, 69,200, 0, /* 0x 350 */
|
131,196, 24,137,194,139, 77,224,141, 4, 26, 41,242,199, 69,200, /* 0x 350 */
|
||||||
0, 0, 0, 15,132,215, 1, 0, 0,139, 93,208,139, 3,131,248, /* 0x 360 */
|
0, 0, 0, 0,102,131,121, 44, 0,137, 69,240,137, 85,204, 15, /* 0x 360 */
|
||||||
6,117, 24,139, 77,204,186, 3, 0, 0, 0, 3, 75, 8,139, 69, /* 0x 370 */
|
132,221, 1, 0, 0,131,125,220, 0,116, 32,139, 93,208,131, 59, /* 0x 370 */
|
||||||
216,232, 11,255,255,255,233,158, 1, 0, 0, 72, 15,133,151, 1, /* 0x 380 */
|
6,117, 24,139, 77,204,186, 3, 0, 0, 0, 3, 75, 8,139, 69, /* 0x 380 */
|
||||||
0, 0,139, 69,208,199, 69,196, 64, 98, 81,115,139, 85,208,139, /* 0x 390 */
|
216,232,251,254,255,255,233,160, 1, 0, 0,139, 69,208,131, 56, /* 0x 390 */
|
||||||
72, 24,139, 90, 20,131,225, 7,193,225, 2,211,109,196,139, 72, /* 0x 3a0 */
|
1, 15,133,148, 1, 0, 0,139, 72, 24,199, 69,196, 64, 98, 81, /* 0x 3a0 */
|
||||||
16,139, 69,204, 3, 66, 8,137, 77,232,131,101,196, 7,137,194, /* 0x 3b0 */
|
115,139, 85,208,131,225, 7,193,225, 2,139, 90, 20,211,109,196, /* 0x 3b0 */
|
||||||
1,195,129,226,255, 15, 0, 0,137,199,141, 52, 17,139, 77,208, /* 0x 3c0 */
|
139, 72, 16,139, 69,204, 3, 66, 8,137, 77,232,131,101,196, 7, /* 0x 3c0 */
|
||||||
137, 69,236, 41,215,139, 65, 4,137, 93,192, 41,208,131,125,220, /* 0x 3d0 */
|
137,194, 1,195,129,226,255, 15, 0, 0,137,199,141, 52, 17,139, /* 0x 3d0 */
|
||||||
0, 80,139, 69,228,116, 3,131,200,255,131,125,220, 1, 80, 25, /* 0x 3e0 */
|
77,208,137, 69,236, 41,215,139, 65, 4,137, 93,192, 41,208,131, /* 0x 3e0 */
|
||||||
192,131,224,224,131,192, 50,131,125,220, 0, 80,139, 69,196,116, /* 0x 3f0 */
|
125,220, 0, 80,139, 69,228,116, 3,131,200,255,131,125,220, 1, /* 0x 3f0 */
|
||||||
3,131,200, 2,131,125,220, 0, 80,137,240,116, 3,141, 70, 3, /* 0x 400 */
|
80, 25,192,131,224,224,131,192, 50,131,125,220, 0, 80,139, 69, /* 0x 400 */
|
||||||
80, 87,232, 97,253,255,255,131,196, 24, 57,199, 15,133,184, 0, /* 0x 410 */
|
196,116, 3,131,200, 2,131,125,220, 0, 80,137,240,116, 3,141, /* 0x 410 */
|
||||||
0, 0,131,125,220, 0,116, 28,246, 69,196, 4,139, 69,212,117, /* 0x 420 */
|
70, 3, 80, 87,232, 79,253,255,255,131,196, 24, 57,199, 15,133, /* 0x 420 */
|
||||||
2, 49,192, 80,139, 69,220,255,117,228,141, 85,232,232,111,253, /* 0x 430 */
|
184, 0, 0, 0,131,125,220, 0,116, 28,246, 69,196, 4,139, 69, /* 0x 430 */
|
||||||
255,255, 88, 90,137,243,247,219,129,227,255, 15, 0, 0,246, 69, /* 0x 440 */
|
212,117, 2, 49,192, 80,139, 69,220,255,117,228,141, 85,232,232, /* 0x 440 */
|
||||||
196, 2,137, 93,188,116, 15,133,219,141, 4, 55,116, 8,137,217, /* 0x 450 */
|
93,253,255,255, 88, 90,137,243,247,219,129,227,255, 15, 0, 0, /* 0x 450 */
|
||||||
198, 0, 0, 64,226,250,131,125,220, 0,116,120,139, 69,208,131, /* 0x 460 */
|
246, 69,196, 2,137, 93,188,116, 15,133,219,141, 4, 55,116, 8, /* 0x 460 */
|
||||||
56, 1,117, 86,246, 64, 24, 1,116, 80,139, 80, 20,139, 88, 8, /* 0x 470 */
|
137,217,198, 0, 0, 64,226,250,131,125,220, 0,116,120,139, 69, /* 0x 470 */
|
||||||
141, 12, 26, 3, 77,204, 59, 80, 16,117, 14,137,200,247,216, 37, /* 0x 480 */
|
208,131, 56, 1,117, 86,246, 64, 24, 1,116, 80,139, 80, 20,139, /* 0x 480 */
|
||||||
255, 15, 0, 0,131,248, 3,119, 17,139, 85,208,107, 69,204, 52, /* 0x 490 */
|
88, 8,141, 12, 26, 3, 77,204, 59, 80, 16,117, 14,137,200,247, /* 0x 490 */
|
||||||
131,122, 4, 0,141, 76, 3, 12,117, 15,139, 1, 61,205,128, 97, /* 0x 4a0 */
|
216, 37,255, 15, 0, 0,131,248, 3,119, 17,139, 85,208,107, 69, /* 0x 4a0 */
|
||||||
195,116, 6,199, 1,205,128, 97,195,133,201,116, 13,139, 69,216, /* 0x 4b0 */
|
204, 52,131,122, 4, 0,141, 76, 3, 12,117, 32,139, 1, 61,205, /* 0x 4b0 */
|
||||||
49,210,131,224,254,232,199,253,255,255,137,251,137,241,139, 85, /* 0x 4c0 */
|
128, 97,195,116, 6,199, 1,205,128, 97,195,133,201,116, 13,139, /* 0x 4c0 */
|
||||||
196,106,125, 88,205,128,133,192,116, 10,106,127, 91,106, 1, 88, /* 0x 4d0 */
|
69,216, 49,210,131,224,254,232,181,253,255,255,137,251,137,241, /* 0x 4d0 */
|
||||||
205,128,235,254,139, 85,188,141, 4, 22,141, 28, 7, 59, 93,192, /* 0x 4e0 */
|
139, 85,196,106,125, 88,205,128,133,192,116, 10,106,127, 91,106, /* 0x 4e0 */
|
||||||
115, 30,106, 0,106,255,106, 50,255,117,196, 41, 93,192,255,117, /* 0x 4f0 */
|
1, 88,205,128,235,254,139, 85,188,141, 4, 22,141, 28, 7, 59, /* 0x 4f0 */
|
||||||
192, 83,232,113,252,255,255,131,196, 24, 57,195,116, 27,235,202, /* 0x 500 */
|
93,192,115, 30,106, 0,106,255,106, 50,255,117,196, 41, 93,192, /* 0x 500 */
|
||||||
131,125,220, 0,116, 19,141, 78, 3,129,225,255, 15, 0, 0,131, /* 0x 510 */
|
255,117,192, 83,232, 95,252,255,255,131,196, 24, 57,195,116, 27, /* 0x 510 */
|
||||||
249, 3,119, 5,106, 91, 88,205,128,139, 77,224,255, 69,200, 15, /* 0x 520 */
|
235,202,131,125,220, 0,116, 19,141, 78, 3,129,225,255, 15, 0, /* 0x 520 */
|
||||||
183, 65, 44,131, 69,208, 32, 57, 69,200, 15,140, 41,254,255,255, /* 0x 530 */
|
0,131,249, 3,119, 5,106, 91, 88,205,128,139, 77,224,255, 69, /* 0x 530 */
|
||||||
131,125,220, 0,117, 14,139, 93,228,106, 6, 88,205,128,133,192, /* 0x 540 */
|
200, 15,183, 65, 44,131, 69,208, 32, 57, 69,200, 15,140, 35,254, /* 0x 540 */
|
||||||
116, 20,235,134,139, 69,224,102,131,120, 16, 3,116, 8,139, 93, /* 0x 550 */
|
255,255,131,125,220, 0,116, 18,139, 93,224,102,131,123, 16, 3, /* 0x 550 */
|
||||||
240,106, 45, 88,205,128,131,125, 16, 0,116, 8,139, 77,204,139, /* 0x 560 */
|
116, 8,139, 93,240,106, 45, 88,205,128,131,125, 16, 0,116, 8, /* 0x 560 */
|
||||||
85, 16,137, 10,139, 93,224,139, 91, 24, 1, 93,204,139, 69,204, /* 0x 570 */
|
139, 85,204,139, 69, 16,137, 16,139, 77,224,139, 73, 24, 1, 77, /* 0x 570 */
|
||||||
141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, /* 0x 580 */
|
204,139, 69,204,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, /* 0x 580 */
|
||||||
28,139,125, 28,106, 0,139, 69, 16,141, 87, 52,139,117, 8,137, /* 0x 590 */
|
86, 83,131,236, 32,139,125, 28,106, 0,139,117, 16,139, 69, 8, /* 0x 590 */
|
||||||
69,236,131,192, 2,255,117,236,137, 85,228,139, 93, 32,137, 69, /* 0x 5a0 */
|
141, 87, 52,141, 78, 2,139, 93, 32,137, 69,236,137, 85,228,141, /* 0x 5a0 */
|
||||||
232,141, 85, 24,141, 69, 32,232,245,251,255,255,139, 69, 12, 15, /* 0x 5b0 */
|
69, 32,141, 85, 24, 86,137, 77,232,232,243,251,255,255,139, 69, /* 0x 5b0 */
|
||||||
183, 79, 44,186, 5, 0, 0, 0,137, 69, 32,137,240, 41, 93, 36, /* 0x 5c0 */
|
12,186, 5, 0, 0, 0, 15,183, 79, 44,137, 69, 32,139, 69,236, /* 0x 5c0 */
|
||||||
232,188,252,255,255, 15,183, 79, 42,186, 4, 0, 0, 0,137,240, /* 0x 5d0 */
|
41, 93, 36,232,185,252,255,255, 15,183, 79, 42,139, 69,236,186, /* 0x 5d0 */
|
||||||
232,172,252,255,255,139, 93,228,139, 77, 40,186, 3, 0, 0, 0, /* 0x 5e0 */
|
4, 0, 0, 0,232,168,252,255,255,139, 93,228,139, 77, 40,186, /* 0x 5e0 */
|
||||||
3, 75, 8,137,240,131,193, 52,232,148,252,255,255,141, 69,240, /* 0x 5f0 */
|
3, 0, 0, 0, 3, 75, 8,139, 69,236,131,193, 52,232,143,252, /* 0x 5f0 */
|
||||||
255,117,232,137,250, 80,141, 69, 32, 86, 80,139, 69,236,232,164, /* 0x 600 */
|
255,255,141, 69,240,255,117,232,137,250, 80,255,117,236,141, 69, /* 0x 600 */
|
||||||
252,255,255,186, 9, 0, 0, 0,137,193,137,195,137,240,232,110, /* 0x 610 */
|
32, 80,137,240,232,164,252,255,255,186, 9, 0, 0, 0,137,193, /* 0x 610 */
|
||||||
252,255,255,102,139, 79, 44,131,196, 24, 49,210,102,133,201,116, /* 0x 620 */
|
137, 69,224,139, 69,236,232,102,252,255,255,102,139, 79, 44,131, /* 0x 620 */
|
||||||
96,139, 69,228,131, 56, 3,117, 76,139, 93,240, 49,201, 3, 88, /* 0x 630 */
|
196, 24, 49,210,102,133,201,116,126,139, 93,228,131, 59, 3,117, /* 0x 630 */
|
||||||
8,137,202,106, 5, 88,205,128,133,192,137,198,120, 21,186, 0, /* 0x 640 */
|
106,139, 69,228, 49,201,139, 93,240,137,202, 3, 88, 8,106, 5, /* 0x 640 */
|
||||||
2, 0, 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, /* 0x 650 */
|
88,205,128,133,192,137,198,120, 21,186, 0, 2, 0, 0,137,195, /* 0x 650 */
|
||||||
0,116, 10,106,127, 91,106, 1, 88,205,128,235,254,106, 0,137, /* 0x 660 */
|
137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, /* 0x 660 */
|
||||||
250,106, 0,137,240,106, 0,106, 0,232, 57,252,255,255,131,196, /* 0x 670 */
|
91,106, 1, 88,205,128,235,254,141, 69,240,137,250,106, 0,137, /* 0x 670 */
|
||||||
16,137,195,235, 12, 66, 15,183,193,131, 69,228, 32, 57,194,124, /* 0x 680 */
|
243, 80,137,240,255,117,236,106, 0,232, 47,252,255,255,139, 77, /* 0x 680 */
|
||||||
160,141,101,244,137,216, 91, 94, 95,201,195 /* 0x 690 */
|
240,137, 69,224,139, 69,236,186, 7, 0, 0, 0,232,240,251,255, /* 0x 690 */
|
||||||
|
255,131,196, 16,106, 6, 88,205,128,235, 12, 66, 15,183,193,131, /* 0x 6a0 */
|
||||||
|
69,228, 32, 57,194,124,130,139, 69,224,141,101,244, 91, 94, 95, /* 0x 6b0 */
|
||||||
|
201,195 /* 0x 6c0 */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,11 +29,11 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_SIZE 931
|
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_SIZE 931
|
||||||
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_ADLER32 0x488877dc
|
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_ADLER32 0xdce475cc
|
||||||
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_CRC32 0x399780ea
|
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_CRC32 0x512b1d3a
|
||||||
|
|
||||||
unsigned char stub_i386_linux_elf_execve_fold[931] = {
|
unsigned char stub_i386_linux_elf_execve_fold[931] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
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, 2, 0, 0, 0, /* 0x 20 */
|
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, 16, 64, 0, /* 0x 30 */
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 64, 0, /* 0x 30 */
|
||||||
|
|||||||
@@ -29,11 +29,11 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_I386_LINUX_ELF_INTERP_FOLD_SIZE 1519
|
#define STUB_I386_LINUX_ELF_INTERP_FOLD_SIZE 1519
|
||||||
#define STUB_I386_LINUX_ELF_INTERP_FOLD_ADLER32 0xe82498de
|
#define STUB_I386_LINUX_ELF_INTERP_FOLD_ADLER32 0xbf8496ce
|
||||||
#define STUB_I386_LINUX_ELF_INTERP_FOLD_CRC32 0xd7e223de
|
#define STUB_I386_LINUX_ELF_INTERP_FOLD_CRC32 0xe6675cdc
|
||||||
|
|
||||||
unsigned char stub_i386_linux_elf_interp_fold[1519] = {
|
unsigned char stub_i386_linux_elf_interp_fold[1519] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
2, 0, 3, 0, 1, 0, 0, 0,116, 0, 1, 0, 52, 0, 0, 0, /* 0x 10 */
|
2, 0, 3, 0, 1, 0, 0, 0,116, 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, 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, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x 30 */
|
||||||
|
|||||||
@@ -29,11 +29,11 @@
|
|||||||
|
|
||||||
|
|
||||||
#define STUB_I386_LINUX_ELF_SHELL_FOLD_SIZE 1194
|
#define STUB_I386_LINUX_ELF_SHELL_FOLD_SIZE 1194
|
||||||
#define STUB_I386_LINUX_ELF_SHELL_FOLD_ADLER32 0x63b3f90a
|
#define STUB_I386_LINUX_ELF_SHELL_FOLD_ADLER32 0xd981f6fa
|
||||||
#define STUB_I386_LINUX_ELF_SHELL_FOLD_CRC32 0xe2bc019d
|
#define STUB_I386_LINUX_ELF_SHELL_FOLD_CRC32 0x5d287cd0
|
||||||
|
|
||||||
unsigned char stub_i386_linux_elf_shell_fold[1194] = {
|
unsigned char stub_i386_linux_elf_shell_fold[1194] = {
|
||||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
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, 2, 0, 0, 0, /* 0x 20 */
|
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, 64, 1, /* 0x 30 */
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, /* 0x 30 */
|
||||||
|
|||||||
@@ -0,0 +1,675 @@
|
|||||||
|
/* mipsel.r3000-linux.elf-entry.h
|
||||||
|
created from mipsel.r3000-linux.elf-entry.bin, 10221 (0x27ed) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 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>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 10221
|
||||||
|
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0x9a8b8343
|
||||||
|
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xc53813db
|
||||||
|
|
||||||
|
unsigned char stub_mipsel_r3000_linux_elf_entry[10221] = {
|
||||||
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
|
1, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||||
|
0, 30, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */
|
||||||
|
21, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 17, 4, /* 0x 40 */
|
||||||
|
0, 0,247, 39, 0,128, 13, 60, 33, 72,160, 1, 1, 0, 11, 36, /* 0x 50 */
|
||||||
|
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 60 */
|
||||||
|
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 70 */
|
||||||
|
1, 0, 41, 37, 1, 0, 15, 36, 5, 0,192, 17, 0, 0,142,144, /* 0x 80 */
|
||||||
|
1, 0,132, 36, 0, 0,206,160,241,255, 0, 16, 1, 0,198, 36, /* 0x 90 */
|
||||||
|
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x a0 */
|
||||||
|
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x b0 */
|
||||||
|
1, 0, 41, 37, 64,120, 15, 0, 33,120,238, 1,194,119, 9, 0, /* 0x c0 */
|
||||||
|
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x d0 */
|
||||||
|
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x e0 */
|
||||||
|
13, 0,192, 21,254,255,238, 37, 33,120,238, 1,194,119, 9, 0, /* 0x f0 */
|
||||||
|
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 100 */
|
||||||
|
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 110 */
|
||||||
|
223,255, 0, 16, 33,120,238, 1, 13, 0,192, 21,253,255,239, 37, /* 0x 120 */
|
||||||
|
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 130 */
|
||||||
|
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 140 */
|
||||||
|
1, 0, 41, 37, 33,120, 96, 1, 11, 0, 0, 16, 1, 0,204, 49, /* 0x 150 */
|
||||||
|
0, 0,142,144, 0,122, 15, 0, 33,120,238, 1, 1, 0,238, 37, /* 0x 160 */
|
||||||
|
255,255,192, 17, 1, 0,132, 36, 66,120, 15, 0, 1, 0,239, 37, /* 0x 170 */
|
||||||
|
33, 88,224, 1, 1, 0,204, 49,194,119, 9, 0, 7, 0,169, 21, /* 0x 180 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 190 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 35, 0,128, 21, /* 0x 1a0 */
|
||||||
|
254,255,204, 37, 12, 0,192, 17, 1, 0, 12, 36,194,119, 9, 0, /* 0x 1b0 */
|
||||||
|
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 1c0 */
|
||||||
|
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 1d0 */
|
||||||
|
22, 0, 0, 16, 33, 96,192, 1,194,119, 9, 0, 7, 0,169, 21, /* 0x 1e0 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 1f0 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, /* 0x 200 */
|
||||||
|
33, 96,142, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 210 */
|
||||||
|
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 220 */
|
||||||
|
64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, 1, 5,238, 45, /* 0x 230 */
|
||||||
|
5, 0,140, 37, 35, 96,142, 1, 35,120,207, 0, 0, 0,238,145, /* 0x 240 */
|
||||||
|
255,255,140, 37, 1, 0,239, 37, 1, 0,198, 36,251,255,128, 21, /* 0x 250 */
|
||||||
|
255,255,206,160,127,255, 0, 16,194,119, 9, 0, 0,128, 13, 60, /* 0x 260 */
|
||||||
|
33, 72,160, 1, 1, 0, 11, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 270 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 280 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 1, 0, 15, 36, /* 0x 290 */
|
||||||
|
5, 0,192, 17, 0, 0,142,144, 1, 0,132, 36, 0, 0,206,160, /* 0x 2a0 */
|
||||||
|
241,255, 0, 16, 1, 0,198, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 2b0 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 2c0 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64,120, 15, 0, /* 0x 2d0 */
|
||||||
|
33,120,238, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 2e0 */
|
||||||
|
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 2f0 */
|
||||||
|
64, 72, 9, 0, 1, 0, 41, 37, 13, 0,192, 21,254,255,238, 37, /* 0x 300 */
|
||||||
|
33,120,207, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 310 */
|
||||||
|
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 320 */
|
||||||
|
64, 72, 9, 0, 1, 0, 41, 37,223,255, 0, 16, 33,120,238, 1, /* 0x 330 */
|
||||||
|
13, 0,192, 21,253,255,239, 37,194,119, 9, 0, 7, 0,169, 21, /* 0x 340 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 350 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 33,120, 96, 1, /* 0x 360 */
|
||||||
|
11, 0, 0, 16, 1, 0,204, 49, 0, 0,142,144, 0,122, 15, 0, /* 0x 370 */
|
||||||
|
33,120,238, 1, 1, 0,238, 37,255,255,192, 17, 1, 0,132, 36, /* 0x 380 */
|
||||||
|
66,120, 15, 0, 1, 0,239, 37, 33, 88,224, 1, 1, 0,204, 49, /* 0x 390 */
|
||||||
|
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 3a0 */
|
||||||
|
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 3b0 */
|
||||||
|
1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1, 23, 0,128, 21, /* 0x 3c0 */
|
||||||
|
254,255,140, 37, 1, 0, 12, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 3d0 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 3e0 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, /* 0x 3f0 */
|
||||||
|
33, 96,142, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 400 */
|
||||||
|
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 410 */
|
||||||
|
64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, 1, 5,238, 45, /* 0x 420 */
|
||||||
|
4, 0,140, 37, 35, 96,142, 1, 35,120,207, 0, 0, 0,238,145, /* 0x 430 */
|
||||||
|
255,255,140, 37, 1, 0,239, 37, 1, 0,198, 36,251,255,128, 21, /* 0x 440 */
|
||||||
|
255,255,206,160,137,255, 0, 16,194,119, 9, 0, 0,128, 13, 60, /* 0x 450 */
|
||||||
|
33, 72,160, 1, 1, 0, 11, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 460 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 470 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 1, 0, 15, 36, /* 0x 480 */
|
||||||
|
5, 0,192, 17, 0, 0,142,144, 1, 0,132, 36, 0, 0,206,160, /* 0x 490 */
|
||||||
|
241,255, 0, 16, 1, 0,198, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 4a0 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 4b0 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64,120, 15, 0, /* 0x 4c0 */
|
||||||
|
33,120,238, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 4d0 */
|
||||||
|
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 4e0 */
|
||||||
|
64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, 2, 0, 14, 36, /* 0x 4f0 */
|
||||||
|
3, 0,238, 21,253,255,239, 37, 8, 0, 0, 16, 33,120, 96, 1, /* 0x 500 */
|
||||||
|
0, 0,142,144, 0,122, 15, 0, 33,120,238, 1, 1, 0,239, 37, /* 0x 510 */
|
||||||
|
255,255,224, 17, 1, 0,132, 36, 33, 88,224, 1,194,119, 9, 0, /* 0x 520 */
|
||||||
|
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 530 */
|
||||||
|
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 540 */
|
||||||
|
33, 96,192, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 550 */
|
||||||
|
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 560 */
|
||||||
|
64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1, /* 0x 570 */
|
||||||
|
23, 0,128, 21,254,255,140, 37, 1, 0, 12, 36,194,119, 9, 0, /* 0x 580 */
|
||||||
|
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 590 */
|
||||||
|
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 5a0 */
|
||||||
|
64, 96, 12, 0, 33, 96,142, 1,194,119, 9, 0, 7, 0,169, 21, /* 0x 5b0 */
|
||||||
|
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 5c0 */
|
||||||
|
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, /* 0x 5d0 */
|
||||||
|
1, 13,238, 45, 4, 0,140, 37, 35, 96,142, 1, 35,120,207, 0, /* 0x 5e0 */
|
||||||
|
0, 0,238,145,255,255,140, 37, 1, 0,239, 37, 1, 0,198, 36, /* 0x 5f0 */
|
||||||
|
251,255,128, 21,255,255,206,160,152,255, 0, 16,194,119, 9, 0, /* 0x 600 */
|
||||||
|
0, 0,153,144, 0,250, 1, 36, 1, 0,152,144, 7, 0, 34, 51, /* 0x 610 */
|
||||||
|
194,200, 25, 0, 4, 8, 33, 3, 96,241, 33, 36, 33,232,161, 3, /* 0x 620 */
|
||||||
|
40, 0,161,175, 32, 0,170, 39, 44, 0,191,175, 0, 0,233,140, /* 0x 630 */
|
||||||
|
36, 0,166,175, 33, 64,192, 0, 28, 0,167, 39,254,255,166, 36, /* 0x 640 */
|
||||||
|
2, 0,133, 36, 48, 0,164, 39, 2, 0,130,160, 15, 0, 1, 51, /* 0x 650 */
|
||||||
|
0, 0,129,160, 2,193, 24, 0, 12, 0, 17, 4, 1, 0,152,160, /* 0x 660 */
|
||||||
|
33,192, 64, 0, 36, 0,164,143, 32, 0,165,143, 3, 0, 6, 36, /* 0x 670 */
|
||||||
|
51, 16, 2, 36, 12, 0, 0, 0, 33, 16, 0, 3, 44, 0,191,143, /* 0x 680 */
|
||||||
|
40, 0,161,143, 8, 0,224, 3, 35,232,161, 3,200,255,189, 39, /* 0x 690 */
|
||||||
|
52, 0,183,175, 48, 0,182,175, 44, 0,181,175, 40, 0,180,175, /* 0x 6a0 */
|
||||||
|
36, 0,179,175, 32, 0,178,175, 28, 0,177,175, 24, 0,176,175, /* 0x 6b0 */
|
||||||
|
33,168,160, 0, 12, 0,167,175, 33,152, 0, 1, 16, 0,169,175, /* 0x 6c0 */
|
||||||
|
20, 0,170,175, 4, 0,144, 36, 2, 0,130,144, 1, 0, 3, 36, /* 0x 6d0 */
|
||||||
|
4, 16, 67, 0,255,255, 66, 36, 8, 0,162,175, 1, 0,130,144, /* 0x 6e0 */
|
||||||
|
0, 0, 0, 0, 4, 16, 67, 0,255,255, 66, 36, 4, 0,162,175, /* 0x 6f0 */
|
||||||
|
0, 0,150,144, 0, 0,224,172, 0, 0, 64,173, 1, 0,132,144, /* 0x 700 */
|
||||||
|
0, 0, 0, 0, 33, 32,196, 2, 0, 3, 2, 36, 4, 32,130, 0, /* 0x 710 */
|
||||||
|
54, 7,132, 36, 33, 16, 0, 2, 4, 0, 0, 16, 33, 88, 0, 0, /* 0x 720 */
|
||||||
|
0, 4, 3, 36,254,255, 67,164, 1, 0,107, 37,252,255,100, 21, /* 0x 730 */
|
||||||
|
2, 0, 66, 36, 33, 56,166, 2, 33,104,160, 2, 33,192, 0, 0, /* 0x 740 */
|
||||||
|
33, 32, 0, 0, 35, 16,245, 0,123, 2,130, 16, 0, 26, 24, 0, /* 0x 750 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,132, 36, /* 0x 760 */
|
||||||
|
5, 0, 2, 36,247,255,130, 20, 1, 0,173, 37, 33, 80, 0, 0, /* 0x 770 */
|
||||||
|
33,112, 0, 0, 33,144, 0, 0, 1, 0, 17, 36, 1, 0, 20, 36, /* 0x 780 */
|
||||||
|
1, 0, 23, 36, 0, 0,183,175, 87, 2, 0, 16,255,255, 15, 36, /* 0x 790 */
|
||||||
|
255,255, 70, 52, 43, 16,207, 0, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x 7a0 */
|
||||||
|
101, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x 7b0 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 8, 0,163,143, /* 0x 7c0 */
|
||||||
|
0, 0, 0, 0, 36, 40, 67, 1, 0,201, 18, 0, 33, 16,185, 0, /* 0x 7d0 */
|
||||||
|
64, 16, 2, 0, 33, 88, 2, 2, 0, 0, 99,149,194, 18, 15, 0, /* 0x 7e0 */
|
||||||
|
24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3,125, 0, 64, 16, /* 0x 7f0 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x 800 */
|
||||||
|
0, 0, 98,165, 4, 0,163,143, 0, 0, 0, 0, 36, 16, 67, 1, /* 0x 810 */
|
||||||
|
4, 24,194, 2, 8, 0, 2, 36, 35, 16, 86, 0, 7, 16, 78, 0, /* 0x 820 */
|
||||||
|
33, 16, 98, 0, 64, 26, 2, 0,192, 18, 2, 0, 35, 16, 67, 0, /* 0x 830 */
|
||||||
|
33, 16, 2, 2,108, 14, 70, 36, 7, 0, 66, 42, 3, 0, 64, 16, /* 0x 840 */
|
||||||
|
33,120,128, 1, 85, 0, 0, 16, 1, 0, 5, 36, 35, 16, 81, 1, /* 0x 850 */
|
||||||
|
33, 16, 98, 2, 0, 0, 89,144, 1, 0, 5, 36,255, 0, 2, 60, /* 0x 860 */
|
||||||
|
255,255, 66, 52, 43, 16, 79, 0, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x 870 */
|
||||||
|
49, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x 880 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64,200, 25, 0, /* 0x 890 */
|
||||||
|
0, 1, 44, 51, 64, 16, 12, 0, 33, 16,194, 0, 64,112, 5, 0, /* 0x 8a0 */
|
||||||
|
33, 88, 78, 0, 0, 2, 99,149,194, 18, 15, 0, 24, 0, 67, 0, /* 0x 8b0 */
|
||||||
|
18, 32, 0, 0, 43, 16, 4, 3, 9, 0, 64, 16, 0, 8, 2, 36, /* 0x 8c0 */
|
||||||
|
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 2, 98,165, /* 0x 8d0 */
|
||||||
|
41, 0,128, 21, 33, 40,192, 1, 9, 0, 0, 16, 33,120,128, 0, /* 0x 8e0 */
|
||||||
|
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x 8f0 */
|
||||||
|
0, 2, 98,165, 1, 0,162, 36, 40, 0,128, 17, 33, 40,162, 0, /* 0x 900 */
|
||||||
|
0, 1,162, 40, 37, 0, 64, 16,255, 0, 2, 60,213,255, 0, 16, /* 0x 910 */
|
||||||
|
255,255, 66, 52,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x 920 */
|
||||||
|
64, 96, 5, 0, 4, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x 930 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x 940 */
|
||||||
|
64, 96, 5, 0, 33, 88,204, 0, 0, 0, 99,149,194, 18, 15, 0, /* 0x 950 */
|
||||||
|
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x 960 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x 970 */
|
||||||
|
0, 0, 98,165, 33, 40,128, 1, 8, 0, 0, 16, 33,120,128, 0, /* 0x 980 */
|
||||||
|
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x 990 */
|
||||||
|
0, 0, 98,165, 1, 0,162, 36, 33, 40,162, 0, 0, 1,162, 40, /* 0x 9a0 */
|
||||||
|
220,255, 64, 20,255, 0, 2, 60,255, 0,174, 48, 33, 16,106, 2, /* 0x 9b0 */
|
||||||
|
0, 0, 78,160, 4, 0, 66, 42, 3, 0, 64, 16, 1, 0, 67, 37, /* 0x 9c0 */
|
||||||
|
200, 1, 0, 16, 33,144, 0, 0, 10, 0, 66, 42, 3, 0, 64, 16, /* 0x 9d0 */
|
||||||
|
0, 0, 0, 0,195, 1, 0, 16,253,255, 82, 38,193, 1, 0, 16, /* 0x 9e0 */
|
||||||
|
250,255, 82, 38, 35, 32,236, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x 9f0 */
|
||||||
|
0, 0, 98,165, 43, 16,196, 0, 8, 0, 64, 20, 35,192, 12, 3, /* 0x a00 */
|
||||||
|
205, 1,167, 17, 0, 34, 4, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x a10 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64, 16, 18, 0, /* 0x a20 */
|
||||||
|
33,112, 2, 2,128, 1,195,149,194, 18, 4, 0, 24, 0, 67, 0, /* 0x a30 */
|
||||||
|
18, 96, 0, 0, 43, 16, 12, 3, 15, 0, 64, 16, 0, 8, 2, 36, /* 0x a40 */
|
||||||
|
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0,128, 1,194,165, /* 0x a50 */
|
||||||
|
7, 0, 66, 42, 2, 0, 64, 20, 33,144, 0, 0, 3, 0, 18, 36, /* 0x a60 */
|
||||||
|
100, 6, 14, 38, 0, 0,183,175, 33,184,128, 2, 33,160, 32, 2, /* 0x a70 */
|
||||||
|
144, 0, 0, 16, 33, 88,128, 1, 35, 88,140, 0, 66, 17, 3, 0, /* 0x a80 */
|
||||||
|
35, 16, 98, 0,128, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, /* 0x a90 */
|
||||||
|
35,192, 12, 3,168, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, /* 0x aa0 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x ab0 */
|
||||||
|
152, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x ac0 */
|
||||||
|
43, 16, 4, 3, 50, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x ad0 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0,152, 1,194,165, 0, 1, 2, 60, /* 0x ae0 */
|
||||||
|
43, 16,130, 0, 8, 0, 64, 16, 33, 88,128, 0,146, 1,167, 17, /* 0x af0 */
|
||||||
|
0, 90, 4, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x b00 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37, 64, 16, 25, 0, 33, 24, 2, 2, /* 0x b10 */
|
||||||
|
64, 16, 5, 0, 33, 32, 98, 0,224, 1,131,148,194, 18, 11, 0, /* 0x b20 */
|
||||||
|
24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3, 18, 0, 64, 16, /* 0x b30 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x b40 */
|
||||||
|
125, 1, 64, 17,224, 1,130,164, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x b50 */
|
||||||
|
9, 0, 18, 36, 11, 0, 18, 36, 35, 16, 81, 1, 33, 16, 98, 2, /* 0x b60 */
|
||||||
|
0, 0, 78,144, 33, 16,106, 2, 0, 0, 78,160, 1, 0, 67, 37, /* 0x b70 */
|
||||||
|
92, 1, 0, 16, 33,120,128, 1, 35, 88,108, 1, 35,192, 12, 3, /* 0x b80 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 69, 0, 0, 16,224, 1,130,164, /* 0x b90 */
|
||||||
|
35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0,152, 1,194,165, /* 0x ba0 */
|
||||||
|
43, 16,203, 0, 8, 0, 64, 20, 35,192, 4, 3, 98, 1,167, 17, /* 0x bb0 */
|
||||||
|
0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x bc0 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37,176, 1,195,149,194, 18, 11, 0, /* 0x bd0 */
|
||||||
|
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 7, 0, 64, 16, /* 0x be0 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x bf0 */
|
||||||
|
176, 1,194,165, 28, 0, 0, 16, 33, 16,128, 2, 35, 88,100, 1, /* 0x c00 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0,176, 1,194,165, 43, 16,203, 0, /* 0x c10 */
|
||||||
|
8, 0, 64, 20, 35,192, 4, 3, 71, 1,167, 17, 0, 90, 11, 0, /* 0x c20 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x c30 */
|
||||||
|
1, 0,173, 37,200, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x c40 */
|
||||||
|
18, 32, 0, 0, 43, 16, 4, 3, 11, 0, 64, 16, 0, 8, 2, 36, /* 0x c50 */
|
||||||
|
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0,200, 1,194,165, /* 0x c60 */
|
||||||
|
33, 16,224, 2, 33,184,128, 2, 33,160, 32, 2, 33,136, 64, 0, /* 0x c70 */
|
||||||
|
11, 0, 0, 16, 33, 88,128, 0, 35, 88,100, 1, 35,192, 4, 3, /* 0x c80 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0,200, 1,194,165, 0, 0,162,143, /* 0x c90 */
|
||||||
|
0, 0,183,175, 33,184,128, 2, 33,160, 32, 2, 33,136, 64, 0, /* 0x ca0 */
|
||||||
|
7, 0, 66, 42, 2, 0, 64, 20, 8, 0, 18, 36, 11, 0, 18, 36, /* 0x cb0 */
|
||||||
|
104, 10, 14, 38,255, 0, 2, 60,255,255, 76, 52, 43, 16,139, 1, /* 0x cc0 */
|
||||||
|
8, 0, 64, 20, 0, 0, 0, 0, 27, 1,167, 17, 0, 90, 11, 0, /* 0x cd0 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x ce0 */
|
||||||
|
1, 0,173, 37, 0, 0,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x cf0 */
|
||||||
|
18, 32, 0, 0, 43, 16, 4, 3, 12, 0, 64, 16, 0, 8, 2, 36, /* 0x d00 */
|
||||||
|
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 0,194,165, /* 0x d10 */
|
||||||
|
0, 17, 5, 0, 33, 16,194, 1, 4, 0, 69, 36, 33,120,128, 0, /* 0x d20 */
|
||||||
|
3, 0, 8, 36, 41, 0, 0, 16, 33, 48, 0, 0, 35, 88,100, 1, /* 0x d30 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 0, 0,194,165, 43, 16,139, 1, /* 0x d40 */
|
||||||
|
8, 0, 64, 20, 35,192, 4, 3,251, 0,167, 17, 0, 90, 11, 0, /* 0x d50 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x d60 */
|
||||||
|
1, 0,173, 37, 2, 0,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x d70 */
|
||||||
|
18, 32, 0, 0, 43, 16, 4, 3, 12, 0, 64, 16, 0, 8, 2, 36, /* 0x d80 */
|
||||||
|
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 2, 0,194,165, /* 0x d90 */
|
||||||
|
0, 17, 5, 0, 33, 16,194, 1, 4, 1, 69, 36, 33,120,128, 0, /* 0x da0 */
|
||||||
|
3, 0, 8, 36, 9, 0, 0, 16, 8, 0, 6, 36, 35,120,100, 1, /* 0x db0 */
|
||||||
|
35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, 2, 0,194,165, /* 0x dc0 */
|
||||||
|
4, 2,197, 37, 8, 0, 8, 36, 16, 0, 6, 36, 33,112, 0, 1, /* 0x dd0 */
|
||||||
|
1, 0, 25, 36,255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, /* 0x de0 */
|
||||||
|
9, 0, 64, 20, 64, 96, 25, 0,211, 0,167, 17, 0,122, 15, 0, /* 0x df0 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x e00 */
|
||||||
|
1, 0,173, 37, 64, 96, 25, 0, 33, 88,172, 0, 0, 0, 99,149, /* 0x e10 */
|
||||||
|
194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x e20 */
|
||||||
|
8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x e30 */
|
||||||
|
33, 16, 98, 0, 0, 0, 98,165, 33,200,128, 1, 8, 0, 0, 16, /* 0x e40 */
|
||||||
|
33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, /* 0x e50 */
|
||||||
|
35, 16, 98, 0, 0, 0, 98,165, 1, 0, 34, 39, 33,200, 34, 3, /* 0x e60 */
|
||||||
|
255,255,206, 37,220,255,192, 21,255, 0, 2, 60, 1, 0, 2, 36, /* 0x e70 */
|
||||||
|
4, 16, 2, 1, 35, 16, 34, 3, 33, 72, 70, 0, 4, 0, 66, 42, /* 0x e80 */
|
||||||
|
134, 0, 64, 16, 4, 0, 34, 41, 2, 0, 64, 20, 33, 24, 32, 1, /* 0x e90 */
|
||||||
|
3, 0, 3, 36,192, 17, 3, 0, 33, 16, 2, 2, 96, 3, 70, 36, /* 0x ea0 */
|
||||||
|
1, 0, 14, 36, 6, 0, 25, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x eb0 */
|
||||||
|
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 14, 0,158, 0,167, 17, /* 0x ec0 */
|
||||||
|
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x ed0 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37, 64, 96, 14, 0, 33, 88,204, 0, /* 0x ee0 */
|
||||||
|
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x ef0 */
|
||||||
|
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x f00 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33,112,128, 1, /* 0x f10 */
|
||||||
|
8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x f20 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,194, 37, /* 0x f30 */
|
||||||
|
33,112,194, 1,255,255, 57, 39,220,255, 32, 23,255, 0, 2, 60, /* 0x f40 */
|
||||||
|
192,255,195, 37, 4, 0, 98, 40, 80, 0, 64, 20, 33,112, 96, 0, /* 0x f50 */
|
||||||
|
67, 32, 3, 0, 1, 0, 98, 48, 2, 0, 75, 52, 14, 0, 98, 40, /* 0x f60 */
|
||||||
|
8, 0, 64, 16,255,255,153, 36, 4,112, 43, 3, 64, 16, 14, 0, /* 0x f70 */
|
||||||
|
33, 32, 2, 2, 64, 16, 3, 0, 35, 16,130, 0, 26, 0, 0, 16, /* 0x f80 */
|
||||||
|
94, 5, 72, 36,251,255,132, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x f90 */
|
||||||
|
43, 16, 79, 0, 8, 0, 64, 20, 0, 0, 0, 0,102, 0,167, 17, /* 0x fa0 */
|
||||||
|
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x fb0 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37, 66,120, 15, 0, 43, 16, 15, 3, /* 0x fc0 */
|
||||||
|
3, 0, 64, 20, 64, 88, 11, 0, 35,192, 15, 3, 1, 0,107, 53, /* 0x fd0 */
|
||||||
|
255,255,132, 36,237,255,128, 20,255, 0, 2, 60, 68, 6, 8, 38, /* 0x fe0 */
|
||||||
|
0,113, 11, 0, 4, 0, 25, 36, 1, 0, 6, 36, 1, 0, 5, 36, /* 0x ff0 */
|
||||||
|
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x1000 */
|
||||||
|
64, 96, 5, 0, 76, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x1010 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1020 */
|
||||||
|
64, 96, 5, 0, 33, 88, 12, 1, 0, 0, 99,149,194, 18, 15, 0, /* 0x1030 */
|
||||||
|
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x1040 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x1050 */
|
||||||
|
0, 0, 98,165, 33, 40,128, 1, 9, 0, 0, 16, 33,120,128, 0, /* 0x1060 */
|
||||||
|
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1070 */
|
||||||
|
0, 0, 98,165, 1, 0,162, 36, 33, 40,162, 0, 37,112,198, 1, /* 0x1080 */
|
||||||
|
255,255, 57, 39,218,255, 32, 23, 64, 48, 6, 0, 1, 0,209, 37, /* 0x1090 */
|
||||||
|
26, 0, 32, 18,255, 0, 2, 60, 7, 0, 82, 38, 43, 16, 81, 1, /* 0x10a0 */
|
||||||
|
38, 0, 64, 20, 1, 0, 2, 36, 35, 16, 81, 1, 33, 88, 98, 2, /* 0x10b0 */
|
||||||
|
33, 32,106, 2, 33, 24, 64, 1, 0, 0,110,145, 1, 0, 99, 36, /* 0x10c0 */
|
||||||
|
33, 16, 73, 1, 2, 0, 66, 36, 6, 0, 98, 16, 0, 0,142,160, /* 0x10d0 */
|
||||||
|
1, 0,107, 37, 16, 0,162,143, 0, 0, 0, 0,246,255, 98, 20, /* 0x10e0 */
|
||||||
|
1, 0,132, 36, 33, 80, 96, 0, 16, 0,163,143, 0, 0, 0, 0, /* 0x10f0 */
|
||||||
|
43, 16, 67, 1,166,253, 64, 20,255, 0, 2, 60,255,255, 66, 52, /* 0x1100 */
|
||||||
|
43, 16, 79, 0, 4, 0, 64, 20, 35, 40,181, 1, 10, 0,167, 17, /* 0x1110 */
|
||||||
|
1, 0,173, 37, 35, 40,181, 1, 12, 0,162,143, 0, 0, 0, 0, /* 0x1120 */
|
||||||
|
0, 0, 69,172, 20, 0,163,143, 0, 0, 0, 0, 0, 0,106,172, /* 0x1130 */
|
||||||
|
2, 0, 0, 16, 33, 16, 0, 0, 1, 0, 2, 36, 52, 0,183,143, /* 0x1140 */
|
||||||
|
48, 0,182,143, 44, 0,181,143, 40, 0,180,143, 36, 0,179,143, /* 0x1150 */
|
||||||
|
32, 0,178,143, 28, 0,177,143, 24, 0,176,143, 8, 0,224, 3, /* 0x1160 */
|
||||||
|
56, 0,189, 39,200,255,189, 39, 52, 0,183,175, 48, 0,182,175, /* 0x1170 */
|
||||||
|
44, 0,181,175, 40, 0,180,175, 36, 0,179,175, 32, 0,178,175, /* 0x1180 */
|
||||||
|
28, 0,177,175, 24, 0,176,175, 33,168,160, 0, 12, 0,167,175, /* 0x1190 */
|
||||||
|
33,152, 0, 1, 16, 0,169,175, 20, 0,170,175, 4, 0,144, 36, /* 0x11a0 */
|
||||||
|
2, 0,130,144, 1, 0, 3, 36, 4, 16, 67, 0,255,255, 66, 36, /* 0x11b0 */
|
||||||
|
8, 0,162,175, 1, 0,130,144, 0, 0, 0, 0, 4, 16, 67, 0, /* 0x11c0 */
|
||||||
|
255,255, 66, 36, 4, 0,162,175, 0, 0,150,144, 0, 0,224,172, /* 0x11d0 */
|
||||||
|
0, 0, 64,173, 1, 0,132,144, 0, 0, 0, 0, 33, 32,196, 2, /* 0x11e0 */
|
||||||
|
0, 3, 2, 36, 4, 32,130, 0, 54, 7,132, 36, 33, 16, 0, 2, /* 0x11f0 */
|
||||||
|
4, 0, 0, 16, 33, 88, 0, 0, 0, 4, 3, 36,254,255, 67,164, /* 0x1200 */
|
||||||
|
1, 0,107, 37,252,255,100, 21, 2, 0, 66, 36, 33, 56,166, 2, /* 0x1210 */
|
||||||
|
33,104,160, 2, 33,192, 0, 0, 33, 32, 0, 0, 35, 16,245, 0, /* 0x1220 */
|
||||||
|
123, 2,130, 16, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1230 */
|
||||||
|
37,192, 98, 0, 1, 0,132, 36, 5, 0, 2, 36,247,255,130, 20, /* 0x1240 */
|
||||||
|
1, 0,173, 37, 33, 80, 0, 0, 33,112, 0, 0, 33,144, 0, 0, /* 0x1250 */
|
||||||
|
1, 0, 17, 36, 1, 0, 20, 36, 1, 0, 23, 36, 0, 0,183,175, /* 0x1260 */
|
||||||
|
87, 2, 0, 16,255,255, 15, 36,255,255, 70, 52, 43, 16,207, 0, /* 0x1270 */
|
||||||
|
8, 0, 64, 20, 0, 0, 0, 0,101, 2,167, 17, 0,122, 15, 0, /* 0x1280 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x1290 */
|
||||||
|
1, 0,173, 37, 8, 0,163,143, 0, 0, 0, 0, 36, 40, 67, 1, /* 0x12a0 */
|
||||||
|
0,201, 18, 0, 33, 16,185, 0, 64, 16, 2, 0, 33, 88, 2, 2, /* 0x12b0 */
|
||||||
|
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 96, 0, 0, /* 0x12c0 */
|
||||||
|
43, 16, 12, 3,125, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x12d0 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 4, 0,163,143, /* 0x12e0 */
|
||||||
|
0, 0, 0, 0, 36, 16, 67, 1, 4, 24,194, 2, 8, 0, 2, 36, /* 0x12f0 */
|
||||||
|
35, 16, 86, 0, 7, 16, 78, 0, 33, 16, 98, 0, 64, 26, 2, 0, /* 0x1300 */
|
||||||
|
192, 18, 2, 0, 35, 16, 67, 0, 33, 16, 2, 2,108, 14, 70, 36, /* 0x1310 */
|
||||||
|
7, 0, 66, 42, 3, 0, 64, 16, 33,120,128, 1, 85, 0, 0, 16, /* 0x1320 */
|
||||||
|
1, 0, 5, 36, 35, 16, 81, 1, 33, 16, 98, 2, 0, 0, 89,144, /* 0x1330 */
|
||||||
|
1, 0, 5, 36,255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, /* 0x1340 */
|
||||||
|
8, 0, 64, 20, 0, 0, 0, 0, 49, 2,167, 17, 0,122, 15, 0, /* 0x1350 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x1360 */
|
||||||
|
1, 0,173, 37, 64,200, 25, 0, 0, 1, 44, 51, 64, 16, 12, 0, /* 0x1370 */
|
||||||
|
33, 16,194, 0, 64,112, 5, 0, 33, 88, 78, 0, 0, 2, 99,149, /* 0x1380 */
|
||||||
|
194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x1390 */
|
||||||
|
9, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x13a0 */
|
||||||
|
33, 16, 98, 0, 0, 2, 98,165, 41, 0,128, 21, 33, 40,192, 1, /* 0x13b0 */
|
||||||
|
9, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x13c0 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 0, 2, 98,165, 1, 0,162, 36, /* 0x13d0 */
|
||||||
|
40, 0,128, 17, 33, 40,162, 0, 0, 1,162, 40, 37, 0, 64, 16, /* 0x13e0 */
|
||||||
|
255, 0, 2, 60,213,255, 0, 16,255,255, 66, 52,255,255, 66, 52, /* 0x13f0 */
|
||||||
|
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 5, 0, 4, 2,167, 17, /* 0x1400 */
|
||||||
|
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1410 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37, 64, 96, 5, 0, 33, 88,204, 0, /* 0x1420 */
|
||||||
|
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x1430 */
|
||||||
|
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1440 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33, 40,128, 1, /* 0x1450 */
|
||||||
|
8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x1460 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,162, 36, /* 0x1470 */
|
||||||
|
33, 40,162, 0, 0, 1,162, 40,220,255, 64, 20,255, 0, 2, 60, /* 0x1480 */
|
||||||
|
255, 0,174, 48, 33, 16,106, 2, 0, 0, 78,160, 4, 0, 66, 42, /* 0x1490 */
|
||||||
|
3, 0, 64, 16, 1, 0, 67, 37,200, 1, 0, 16, 33,144, 0, 0, /* 0x14a0 */
|
||||||
|
10, 0, 66, 42, 3, 0, 64, 16, 0, 0, 0, 0,195, 1, 0, 16, /* 0x14b0 */
|
||||||
|
253,255, 82, 38,193, 1, 0, 16,250,255, 82, 38, 35, 32,236, 1, /* 0x14c0 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 43, 16,196, 0, /* 0x14d0 */
|
||||||
|
8, 0, 64, 20, 35,192, 12, 3,205, 1,167, 17, 0, 34, 4, 0, /* 0x14e0 */
|
||||||
|
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x14f0 */
|
||||||
|
1, 0,173, 37, 64, 16, 18, 0, 33,112, 2, 2,128, 1,195,149, /* 0x1500 */
|
||||||
|
194, 18, 4, 0, 24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3, /* 0x1510 */
|
||||||
|
15, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x1520 */
|
||||||
|
33, 16, 98, 0,128, 1,194,165, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x1530 */
|
||||||
|
33,144, 0, 0, 3, 0, 18, 36,100, 6, 14, 38, 0, 0,183,175, /* 0x1540 */
|
||||||
|
33,184,128, 2, 33,160, 32, 2,144, 0, 0, 16, 33, 88,128, 1, /* 0x1550 */
|
||||||
|
35, 88,140, 0, 66, 17, 3, 0, 35, 16, 98, 0,128, 1,194,165, /* 0x1560 */
|
||||||
|
43, 16,203, 0, 8, 0, 64, 20, 35,192, 12, 3,168, 1,167, 17, /* 0x1570 */
|
||||||
|
0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1580 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37,152, 1,195,149,194, 18, 11, 0, /* 0x1590 */
|
||||||
|
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 50, 0, 64, 16, /* 0x15a0 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x15b0 */
|
||||||
|
152, 1,194,165, 0, 1, 2, 60, 43, 16,130, 0, 8, 0, 64, 16, /* 0x15c0 */
|
||||||
|
33, 88,128, 0,146, 1,167, 17, 0, 90, 4, 0, 0, 26, 24, 0, /* 0x15d0 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x15e0 */
|
||||||
|
64, 16, 25, 0, 33, 24, 2, 2, 64, 16, 5, 0, 33, 32, 98, 0, /* 0x15f0 */
|
||||||
|
224, 1,131,148,194, 18, 11, 0, 24, 0, 67, 0, 18, 96, 0, 0, /* 0x1600 */
|
||||||
|
43, 16, 12, 3, 18, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1610 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0,125, 1, 64, 17,224, 1,130,164, /* 0x1620 */
|
||||||
|
7, 0, 66, 42, 2, 0, 64, 20, 9, 0, 18, 36, 11, 0, 18, 36, /* 0x1630 */
|
||||||
|
35, 16, 81, 1, 33, 16, 98, 2, 0, 0, 78,144, 33, 16,106, 2, /* 0x1640 */
|
||||||
|
0, 0, 78,160, 1, 0, 67, 37, 92, 1, 0, 16, 33,120,128, 1, /* 0x1650 */
|
||||||
|
35, 88,108, 1, 35,192, 12, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1660 */
|
||||||
|
69, 0, 0, 16,224, 1,130,164, 35, 88,100, 1, 66, 17, 3, 0, /* 0x1670 */
|
||||||
|
35, 16, 98, 0,152, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, /* 0x1680 */
|
||||||
|
35,192, 4, 3, 98, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, /* 0x1690 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x16a0 */
|
||||||
|
176, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x16b0 */
|
||||||
|
43, 16, 4, 3, 7, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x16c0 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0,176, 1,194,165, 28, 0, 0, 16, /* 0x16d0 */
|
||||||
|
33, 16,128, 2, 35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x16e0 */
|
||||||
|
176, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, 35,192, 4, 3, /* 0x16f0 */
|
||||||
|
71, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x1700 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37,200, 1,195,149, /* 0x1710 */
|
||||||
|
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x1720 */
|
||||||
|
11, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x1730 */
|
||||||
|
33, 16, 98, 0,200, 1,194,165, 33, 16,224, 2, 33,184,128, 2, /* 0x1740 */
|
||||||
|
33,160, 32, 2, 33,136, 64, 0, 11, 0, 0, 16, 33, 88,128, 0, /* 0x1750 */
|
||||||
|
35, 88,100, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1760 */
|
||||||
|
200, 1,194,165, 0, 0,162,143, 0, 0,183,175, 33,184,128, 2, /* 0x1770 */
|
||||||
|
33,160, 32, 2, 33,136, 64, 0, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x1780 */
|
||||||
|
8, 0, 18, 36, 11, 0, 18, 36,104, 10, 14, 38,255, 0, 2, 60, /* 0x1790 */
|
||||||
|
255,255, 76, 52, 43, 16,139, 1, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x17a0 */
|
||||||
|
27, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x17b0 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 0, 0,195,149, /* 0x17c0 */
|
||||||
|
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x17d0 */
|
||||||
|
12, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x17e0 */
|
||||||
|
33, 16, 98, 0, 0, 0,194,165, 0, 17, 5, 0, 33, 16,194, 1, /* 0x17f0 */
|
||||||
|
4, 0, 69, 36, 33,120,128, 0, 3, 0, 8, 36, 41, 0, 0, 16, /* 0x1800 */
|
||||||
|
33, 48, 0, 0, 35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1810 */
|
||||||
|
0, 0,194,165, 43, 16,139, 1, 8, 0, 64, 20, 35,192, 4, 3, /* 0x1820 */
|
||||||
|
251, 0,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x1830 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 2, 0,195,149, /* 0x1840 */
|
||||||
|
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x1850 */
|
||||||
|
12, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x1860 */
|
||||||
|
33, 16, 98, 0, 2, 0,194,165, 0, 17, 5, 0, 33, 16,194, 1, /* 0x1870 */
|
||||||
|
4, 1, 69, 36, 33,120,128, 0, 3, 0, 8, 36, 9, 0, 0, 16, /* 0x1880 */
|
||||||
|
8, 0, 6, 36, 35,120,100, 1, 35,192, 4, 3, 66, 17, 3, 0, /* 0x1890 */
|
||||||
|
35, 16, 98, 0, 2, 0,194,165, 4, 2,197, 37, 8, 0, 8, 36, /* 0x18a0 */
|
||||||
|
16, 0, 6, 36, 33,112, 0, 1, 1, 0, 25, 36,255, 0, 2, 60, /* 0x18b0 */
|
||||||
|
255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 25, 0, /* 0x18c0 */
|
||||||
|
211, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x18d0 */
|
||||||
|
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64, 96, 25, 0, /* 0x18e0 */
|
||||||
|
33, 88,172, 0, 0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, /* 0x18f0 */
|
||||||
|
18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, /* 0x1900 */
|
||||||
|
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, /* 0x1910 */
|
||||||
|
33,200,128, 1, 8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, /* 0x1920 */
|
||||||
|
35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, /* 0x1930 */
|
||||||
|
1, 0, 34, 39, 33,200, 34, 3,255,255,206, 37,220,255,192, 21, /* 0x1940 */
|
||||||
|
255, 0, 2, 60, 1, 0, 2, 36, 4, 16, 2, 1, 35, 16, 34, 3, /* 0x1950 */
|
||||||
|
33, 72, 70, 0, 4, 0, 66, 42,134, 0, 64, 16, 4, 0, 34, 41, /* 0x1960 */
|
||||||
|
2, 0, 64, 20, 33, 24, 32, 1, 3, 0, 3, 36,192, 17, 3, 0, /* 0x1970 */
|
||||||
|
33, 16, 2, 2, 96, 3, 70, 36, 1, 0, 14, 36, 6, 0, 25, 36, /* 0x1980 */
|
||||||
|
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x1990 */
|
||||||
|
64, 96, 14, 0,158, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x19a0 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x19b0 */
|
||||||
|
64, 96, 14, 0, 33, 88,204, 0, 0, 0, 99,149,194, 18, 15, 0, /* 0x19c0 */
|
||||||
|
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x19d0 */
|
||||||
|
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x19e0 */
|
||||||
|
0, 0, 98,165, 33,112,128, 1, 8, 0, 0, 16, 33,120,128, 0, /* 0x19f0 */
|
||||||
|
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1a00 */
|
||||||
|
0, 0, 98,165, 1, 0,194, 37, 33,112,194, 1,255,255, 57, 39, /* 0x1a10 */
|
||||||
|
220,255, 32, 23,255, 0, 2, 60,192,255,195, 37, 4, 0, 98, 40, /* 0x1a20 */
|
||||||
|
80, 0, 64, 20, 33,112, 96, 0, 67, 32, 3, 0, 1, 0, 98, 48, /* 0x1a30 */
|
||||||
|
2, 0, 75, 52, 14, 0, 98, 40, 8, 0, 64, 16,255,255,153, 36, /* 0x1a40 */
|
||||||
|
4,112, 43, 3, 64, 16, 14, 0, 33, 32, 2, 2, 64, 16, 3, 0, /* 0x1a50 */
|
||||||
|
35, 16,130, 0, 26, 0, 0, 16, 94, 5, 72, 36,251,255,132, 36, /* 0x1a60 */
|
||||||
|
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 8, 0, 64, 20, /* 0x1a70 */
|
||||||
|
0, 0, 0, 0,102, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x1a80 */
|
||||||
|
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1a90 */
|
||||||
|
66,120, 15, 0, 43, 16, 15, 3, 3, 0, 64, 20, 64, 88, 11, 0, /* 0x1aa0 */
|
||||||
|
35,192, 15, 3, 1, 0,107, 53,255,255,132, 36,237,255,128, 20, /* 0x1ab0 */
|
||||||
|
255, 0, 2, 60, 68, 6, 8, 38, 0,113, 11, 0, 4, 0, 25, 36, /* 0x1ac0 */
|
||||||
|
1, 0, 6, 36, 1, 0, 5, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x1ad0 */
|
||||||
|
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 5, 0, 76, 0,167, 17, /* 0x1ae0 */
|
||||||
|
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1af0 */
|
||||||
|
37,192, 98, 0, 1, 0,173, 37, 64, 96, 5, 0, 33, 88, 12, 1, /* 0x1b00 */
|
||||||
|
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x1b10 */
|
||||||
|
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1b20 */
|
||||||
|
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33, 40,128, 1, /* 0x1b30 */
|
||||||
|
9, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x1b40 */
|
||||||
|
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,162, 36, /* 0x1b50 */
|
||||||
|
33, 40,162, 0, 37,112,198, 1,255,255, 57, 39,218,255, 32, 23, /* 0x1b60 */
|
||||||
|
64, 48, 6, 0, 1, 0,209, 37, 26, 0, 32, 18,255, 0, 2, 60, /* 0x1b70 */
|
||||||
|
7, 0, 82, 38, 43, 16, 81, 1, 38, 0, 64, 20, 1, 0, 2, 36, /* 0x1b80 */
|
||||||
|
35, 16, 81, 1, 33, 88, 98, 2, 33, 32,106, 2, 33, 24, 64, 1, /* 0x1b90 */
|
||||||
|
0, 0,110,145, 1, 0, 99, 36, 33, 16, 73, 1, 2, 0, 66, 36, /* 0x1ba0 */
|
||||||
|
6, 0, 98, 16, 0, 0,142,160, 1, 0,107, 37, 16, 0,162,143, /* 0x1bb0 */
|
||||||
|
0, 0, 0, 0,246,255, 98, 20, 1, 0,132, 36, 33, 80, 96, 0, /* 0x1bc0 */
|
||||||
|
16, 0,163,143, 0, 0, 0, 0, 43, 16, 67, 1,166,253, 64, 20, /* 0x1bd0 */
|
||||||
|
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 4, 0, 64, 20, /* 0x1be0 */
|
||||||
|
35, 40,181, 1, 10, 0,167, 17, 1, 0,173, 37, 35, 40,181, 1, /* 0x1bf0 */
|
||||||
|
12, 0,162,143, 0, 0, 0, 0, 0, 0, 69,172, 20, 0,163,143, /* 0x1c00 */
|
||||||
|
0, 0, 0, 0, 0, 0,106,172, 2, 0, 0, 16, 33, 16, 0, 0, /* 0x1c10 */
|
||||||
|
1, 0, 2, 36, 52, 0,183,143, 48, 0,182,143, 44, 0,181,143, /* 0x1c20 */
|
||||||
|
40, 0,180,143, 36, 0,179,143, 32, 0,178,143, 28, 0,177,143, /* 0x1c30 */
|
||||||
|
24, 0,176,143, 8, 0,224, 3, 56, 0,189, 39, 13, 0, 0, 0, /* 0x1c40 */
|
||||||
|
32, 40,164, 0, 0, 0,230,172, 0, 0,227,140, 35,192,133, 0, /* 0x1c50 */
|
||||||
|
33, 32, 96, 0, 35, 40,195, 0, 0, 0,229,172, 3, 0, 6, 36, /* 0x1c60 */
|
||||||
|
51, 16, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 33, 16, 0, 3, /* 0x1c70 */
|
||||||
|
30, 0, 6, 36,255,255, 17, 4, 33, 40,224, 3, 80, 82, 79, 84, /* 0x1c80 */
|
||||||
|
95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, /* 0x1c90 */
|
||||||
|
32,102, 97,105,108,101,100, 46, 10, 0, 2, 0, 4, 36,164, 15, /* 0x1ca0 */
|
||||||
|
2, 36, 12, 0, 0, 0,127, 0, 4, 36,161, 15, 2, 36, 12, 0, /* 0x1cb0 */
|
||||||
|
0, 0,224,255,189, 39,224,255,228,142, 7, 0, 6, 36,228,255, /* 0x1cc0 */
|
||||||
|
229,142, 18, 8, 7, 36, 16, 0,160,175,250, 15, 2, 36, 12, 0, /* 0x1cd0 */
|
||||||
|
0, 0, 27, 0,224, 20, 33, 32, 64, 0,236,255,229,142,232,255, /* 0x1ce0 */
|
||||||
|
243,142,240,255,242,142,244,255,241,142, 13, 0,133, 16, 35, 64, /* 0x1cf0 */
|
||||||
|
133, 0, 35, 48,215, 2, 33, 48,213, 0, 33,184,232, 2, 0, 0, /* 0x1d00 */
|
||||||
|
168,140, 8, 0,132, 36, 4, 0,169,140,248,255,198, 36,248,255, /* 0x1d10 */
|
||||||
|
136,172, 8, 0,165, 36,249,255,192, 28,252,255,137,172, 33, 16, /* 0x1d20 */
|
||||||
|
128, 0, 0, 0,200,142, 33, 56,160, 3, 0, 0,168,175, 33, 48, /* 0x1d30 */
|
||||||
|
64, 0, 4, 0,197,142, 12, 0,196, 38, 8, 0,224, 2, 33,248, /* 0x1d40 */
|
||||||
|
192, 0,255,255, 0, 16, 0, 0, 0, 0,220,255,245,142,216,255, /* 0x1d50 */
|
||||||
|
17, 4, 33,176,224, 3,116,109,112, 47,109,105,112,115,101,108, /* 0x1d60 */
|
||||||
|
46,114, 51, 48, 48, 48, 45,108,105,110,117,120, 46,101,108,102, /* 0x1d70 */
|
||||||
|
45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x1d80 */
|
||||||
|
102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1d90 */
|
||||||
|
50, 45,108,105,116,116,108,101,109,105,112,115, 10, 10, 83,101, /* 0x1da0 */
|
||||||
|
99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, /* 0x1db0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, /* 0x1dc0 */
|
||||||
|
32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, /* 0x1dd0 */
|
||||||
|
65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, /* 0x1de0 */
|
||||||
|
32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, /* 0x1df0 */
|
||||||
|
48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, /* 0x1e00 */
|
||||||
|
48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1e10 */
|
||||||
|
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e20 */
|
||||||
|
48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1e30 */
|
||||||
|
78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1e40 */
|
||||||
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 50, /* 0x1e50 */
|
||||||
|
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x1e60 */
|
||||||
|
49, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e70 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, /* 0x1e80 */
|
||||||
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1e90 */
|
||||||
|
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1ea0 */
|
||||||
|
89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, /* 0x1eb0 */
|
||||||
|
32, 32, 32, 32, 48, 48, 48, 48, 48, 49,102, 48, 32, 32, 48, 48, /* 0x1ec0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ed0 */
|
||||||
|
32, 32, 48, 48, 48, 48, 48, 50, 54, 99, 32, 32, 50, 42, 42, 48, /* 0x1ee0 */
|
||||||
|
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1ef0 */
|
||||||
|
67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, /* 0x1f00 */
|
||||||
|
78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1f10 */
|
||||||
|
48, 48, 48, 49, 98, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f20 */
|
||||||
|
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f30 */
|
||||||
|
48, 52, 53, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1f40 */
|
||||||
|
69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1f50 */
|
||||||
|
68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, 69, /* 0x1f60 */
|
||||||
|
76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 99, /* 0x1f70 */
|
||||||
|
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f80 */
|
||||||
|
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 49, 48, 32, 32, /* 0x1f90 */
|
||||||
|
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1fa0 */
|
||||||
|
82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, /* 0x1fb0 */
|
||||||
|
65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1fc0 */
|
||||||
|
97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1fd0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 57, /* 0x1fe0 */
|
||||||
|
99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ff0 */
|
||||||
|
83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, /* 0x2000 */
|
||||||
|
76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, /* 0x2010 */
|
||||||
|
48, 48, 48, 97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2020 */
|
||||||
|
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2030 */
|
||||||
|
49, 49, 55, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2040 */
|
||||||
|
69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2050 */
|
||||||
|
32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, /* 0x2060 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, /* 0x2070 */
|
||||||
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2080 */
|
||||||
|
48, 48, 48, 49, 99, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2090 */
|
||||||
|
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x20a0 */
|
||||||
|
89, 10, 32, 32, 56, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, /* 0x20b0 */
|
||||||
|
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, /* 0x20c0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20d0 */
|
||||||
|
32, 32, 48, 48, 48, 48, 49, 99, 53, 48, 32, 32, 50, 42, 42, 48, /* 0x20e0 */
|
||||||
|
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x20f0 */
|
||||||
|
79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2100 */
|
||||||
|
76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 56, 32, /* 0x2110 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2120 */
|
||||||
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 53, 56, 32, 32, 50, /* 0x2130 */
|
||||||
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2140 */
|
||||||
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, /* 0x2150 */
|
||||||
|
65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2160 */
|
||||||
|
50, 97, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2170 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 56, 48, /* 0x2180 */
|
||||||
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2190 */
|
||||||
|
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x21a0 */
|
||||||
|
89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, /* 0x21b0 */
|
||||||
|
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 99, 32, 32, 48, 48, /* 0x21c0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21d0 */
|
||||||
|
32, 32, 48, 48, 48, 48, 49, 99, 97, 97, 32, 32, 50, 42, 42, 48, /* 0x21e0 */
|
||||||
|
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x21f0 */
|
||||||
|
79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, /* 0x2200 */
|
||||||
|
69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2210 */
|
||||||
|
32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, /* 0x2220 */
|
||||||
|
48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, /* 0x2230 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2240 */
|
||||||
|
69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2250 */
|
||||||
|
48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, /* 0x2260 */
|
||||||
|
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, /* 0x2270 */
|
||||||
|
65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, /* 0x2280 */
|
||||||
|
70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2290 */
|
||||||
|
108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, /* 0x22a0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, /* 0x22b0 */
|
||||||
|
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x22c0 */
|
||||||
|
86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x22d0 */
|
||||||
|
50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x22e0 */
|
||||||
|
32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, /* 0x22f0 */
|
||||||
|
48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2300 */
|
||||||
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, /* 0x2310 */
|
||||||
|
76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2320 */
|
||||||
|
77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2330 */
|
||||||
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x2340 */
|
||||||
|
69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2350 */
|
||||||
|
77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2360 */
|
||||||
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x2370 */
|
||||||
|
69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2380 */
|
||||||
|
77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2390 */
|
||||||
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x23a0 */
|
||||||
|
69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x23b0 */
|
||||||
|
77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x23c0 */
|
||||||
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x23d0 */
|
||||||
|
65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x23e0 */
|
||||||
|
72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x23f0 */
|
||||||
|
32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, /* 0x2400 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2410 */
|
||||||
|
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2420 */
|
||||||
|
32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2430 */
|
||||||
|
32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2440 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2450 */
|
||||||
|
48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, /* 0x2460 */
|
||||||
|
48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2470 */
|
||||||
|
42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, /* 0x2480 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2490 */
|
||||||
|
32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x24a0 */
|
||||||
|
65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x24b0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x24c0 */
|
||||||
|
48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, /* 0x24d0 */
|
||||||
|
48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x24e0 */
|
||||||
|
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 48, /* 0x24f0 */
|
||||||
|
48, 48, 48, 48, 48, 49, 56, 32,103, 32, 32, 32, 32, 32, 79, 32, /* 0x2500 */
|
||||||
|
69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2510 */
|
||||||
|
48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2520 */
|
||||||
|
84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2530 */
|
||||||
|
32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, /* 0x2540 */
|
||||||
|
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2550 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2560 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2570 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, /* 0x2580 */
|
||||||
|
48, 48, 48, 48, 48, 52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2590 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, /* 0x25a0 */
|
||||||
|
48, 48, 48, 48, 48, 56, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25b0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, /* 0x25c0 */
|
||||||
|
48, 48, 48, 48, 48, 99, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25d0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, /* 0x25e0 */
|
||||||
|
48, 48, 48, 48, 49, 48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25f0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, /* 0x2600 */
|
||||||
|
48, 48, 48, 48, 49, 52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2610 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, 10, 48, 48, /* 0x2620 */
|
||||||
|
48, 48, 48, 48, 49, 56, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, /* 0x2630 */
|
||||||
|
49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x2640 */
|
||||||
|
90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2650 */
|
||||||
|
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, /* 0x2660 */
|
||||||
|
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2670 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2680 */
|
||||||
|
76, 85, 69, 10, 48, 48, 48, 48, 48, 49, 49, 99, 32, 82, 95, 77, /* 0x2690 */
|
||||||
|
73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x26a0 */
|
||||||
|
82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x26b0 */
|
||||||
|
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x26c0 */
|
||||||
|
91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x26d0 */
|
||||||
|
32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x26e0 */
|
||||||
|
32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 49, /* 0x26f0 */
|
||||||
|
49, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, /* 0x2700 */
|
||||||
|
32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, /* 0x2710 */
|
||||||
|
69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2720 */
|
||||||
|
83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, /* 0x2730 */
|
||||||
|
70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x2740 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x2750 */
|
||||||
|
48, 48, 48, 48, 48, 48, 99, 52, 32, 82, 95, 77, 73, 80, 83, 95, /* 0x2760 */
|
||||||
|
80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, /* 0x2770 */
|
||||||
|
65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2780 */
|
||||||
|
82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, /* 0x2790 */
|
||||||
|
77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x27a0 */
|
||||||
|
32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x27b0 */
|
||||||
|
32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x27c0 */
|
||||||
|
52, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, /* 0x27d0 */
|
||||||
|
32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10 /* 0x27e0 */
|
||||||
|
};
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
/* mipsel.r3000-linux.elf-fold.h
|
||||||
|
created from mipsel.r3000-linux.elf-fold.bin, 2560 (0xa00) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 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>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2560
|
||||||
|
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x62582e6c
|
||||||
|
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xbf4a45c4
|
||||||
|
|
||||||
|
unsigned char stub_mipsel_r3000_linux_elf_fold[2560] = {
|
||||||
|
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
|
2, 0, 8, 0, 1, 0, 0, 0,128, 0, 16, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||||
|
0, 0, 0, 0, 1, 48, 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, 16, 0, /* 0x 30 */
|
||||||
|
0, 0, 16, 0, 0, 10, 0, 0, 0, 10, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||||
|
0, 16, 0, 0, 1, 0, 0, 0, 0, 10, 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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||||
|
32, 0,162, 39, 24,240,189, 39, 33, 24,160, 3, 0, 0, 65,140, /* 0x 80 */
|
||||||
|
4, 0, 66, 36, 0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, /* 0x 90 */
|
||||||
|
33,128, 96, 0, 4, 0, 99, 36, 0, 0, 65,140, 4, 0, 66, 36, /* 0x a0 */
|
||||||
|
0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, 33,160, 96, 0, /* 0x b0 */
|
||||||
|
0, 0, 65,140, 4, 0, 72,140, 8, 0, 66, 36, 0, 0, 97,172, /* 0x c0 */
|
||||||
|
4, 0,104,172, 8, 0, 99, 36,249,255, 32, 20, 33,176, 96, 0, /* 0x d0 */
|
||||||
|
0, 0, 3,174, 32, 0, 1, 36, 0, 0, 97,160, 1, 0, 97,160, /* 0x e0 */
|
||||||
|
2, 0, 97,160, 61, 0, 1, 36, 3, 0, 97,160,255, 15, 6, 36, /* 0x f0 */
|
||||||
|
4, 0,101, 36, 5, 0, 17, 4, 33, 32,224, 3, 47,112,114,111, /* 0x 100 */
|
||||||
|
99, 47,115,101,108,102, 47,101,120,101, 0, 0,245, 15, 2, 36, /* 0x 110 */
|
||||||
|
12, 0, 0, 0, 2, 0,224, 4, 33, 8,162, 0, 0, 0, 32,160, /* 0x 120 */
|
||||||
|
0,254,189, 39, 33, 72, 0, 0, 33, 64,224, 2, 33, 56,128, 2, /* 0x 130 */
|
||||||
|
33, 48,160, 3,116,255,165, 38, 1, 0, 16, 4, 80, 1, 2, 36, /* 0x 140 */
|
||||||
|
35, 16,226, 3, 84, 8, 66, 36, 9,248, 64, 0, 33, 32, 32, 2, /* 0x 150 */
|
||||||
|
33,200, 64, 0, 0, 2,189, 39,252,255,193,142, 33, 40, 64, 2, /* 0x 160 */
|
||||||
|
3, 0, 32, 16, 33, 32, 96, 2, 8, 0, 32, 0,251, 15, 2, 36, /* 0x 170 */
|
||||||
|
8, 0, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 180 */
|
||||||
|
250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175, /* 0x 190 */
|
||||||
|
12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0, /* 0x 1a0 */
|
||||||
|
3, 0,224, 20, 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 1b0 */
|
||||||
|
8, 0,224, 3,255,255, 2, 36, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 1c0 */
|
||||||
|
0, 0,130,140, 4, 0,135,140, 43, 16, 70, 0, 3, 0, 64, 20, /* 0x 1d0 */
|
||||||
|
161, 15, 2, 36, 10, 0, 0, 16, 33, 24,192, 0,127, 0, 4, 36, /* 0x 1e0 */
|
||||||
|
238,255, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 1f0 */
|
||||||
|
0, 0,226,144, 1, 0,231, 36, 0, 0,162,160, 1, 0,165, 36, /* 0x 200 */
|
||||||
|
255,255, 99, 36,255,255, 2, 36,249,255, 98, 20, 0, 0, 0, 0, /* 0x 210 */
|
||||||
|
4, 0,131,140, 0, 0,130,140, 33, 24,102, 0, 35, 16, 70, 0, /* 0x 220 */
|
||||||
|
0, 0,130,172, 8, 0,224, 3, 4, 0,131,172,216,255,189, 39, /* 0x 230 */
|
||||||
|
28, 0,179,175, 24, 0,178,175, 20, 0,177,175, 16, 0,176,175, /* 0x 240 */
|
||||||
|
33,136,128, 0, 33,128,160, 0, 33,152,192, 0, 33,144,224, 0, /* 0x 250 */
|
||||||
|
82, 0, 0, 16, 32, 0,191,175, 33, 32, 32, 2,216,255, 17, 4, /* 0x 260 */
|
||||||
|
4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, 10, 0, 96, 20, /* 0x 270 */
|
||||||
|
88, 33, 2, 60, 85, 80, 66, 52, 10, 0,194, 20,127, 0, 4, 36, /* 0x 280 */
|
||||||
|
0, 0, 34,142, 0, 0, 0, 0, 7, 0, 64, 20,161, 15, 2, 36, /* 0x 290 */
|
||||||
|
70, 0, 0, 16, 0, 0, 0, 0, 7, 0,192, 20, 43, 16,102, 0, /* 0x 2a0 */
|
||||||
|
127, 0, 4, 36,161, 15, 2, 36,188,255, 17, 4, 0, 0, 0, 0, /* 0x 2b0 */
|
||||||
|
255,255, 0, 16, 0, 0, 0, 0,250,255, 64, 20,127, 0, 4, 36, /* 0x 2c0 */
|
||||||
|
0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0,245,255, 64, 20, /* 0x 2d0 */
|
||||||
|
43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, 33, 40,224, 0, /* 0x 2e0 */
|
||||||
|
4, 0, 36,142, 12, 0,168,143, 33, 40,192, 0, 0, 0,163,175, /* 0x 2f0 */
|
||||||
|
33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3,233,255, 64, 20, /* 0x 300 */
|
||||||
|
127, 0, 4, 36, 0, 0,165,143, 4, 0,162,143, 0, 0, 0, 0, /* 0x 310 */
|
||||||
|
228,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, 0, 0, 0, 0, /* 0x 320 */
|
||||||
|
13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, 1, 2,162, 44, /* 0x 330 */
|
||||||
|
5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0, /* 0x 340 */
|
||||||
|
5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, 14, 0,166,147, /* 0x 350 */
|
||||||
|
9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, 4, 0, 35,142, /* 0x 360 */
|
||||||
|
0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, 4, 0, 35,174, /* 0x 370 */
|
||||||
|
3, 0, 0, 16, 0, 0, 36,174,145,255, 17, 4, 33, 32, 32, 2, /* 0x 380 */
|
||||||
|
4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, 33, 24, 98, 0, /* 0x 390 */
|
||||||
|
35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, 0, 0, 2,142, /* 0x 3a0 */
|
||||||
|
0, 0, 0, 0,172,255, 64, 20, 12, 0, 6, 36, 32, 0,191,143, /* 0x 3b0 */
|
||||||
|
28, 0,179,143, 24, 0,178,143, 20, 0,177,143, 16, 0,176,143, /* 0x 3c0 */
|
||||||
|
8, 0,224, 3, 40, 0,189, 39, 14, 0,128, 16, 33, 16,128, 0, /* 0x 3d0 */
|
||||||
|
1, 0, 4, 36, 0, 0, 67,140, 0, 0, 0, 0, 5, 0,101, 16, /* 0x 3e0 */
|
||||||
|
0, 0, 0, 0, 5, 0,100, 20, 0, 0, 0, 0, 3, 0,160, 16, /* 0x 3f0 */
|
||||||
|
0, 0, 0, 0, 8, 0,224, 3, 0, 0, 69,172,245,255, 0, 16, /* 0x 400 */
|
||||||
|
8, 0, 66, 36, 8, 0,224, 3, 0, 0, 0, 0,248,255,189, 39, /* 0x 410 */
|
||||||
|
0, 0,176,175, 4, 0,191,175,235,255, 17, 4, 33,128,192, 0, /* 0x 420 */
|
||||||
|
2, 0, 64, 16, 0, 0, 0, 0, 4, 0, 80,172, 4, 0,191,143, /* 0x 430 */
|
||||||
|
0, 0,176,143, 8, 0,224, 3, 8, 0,189, 39,168,255,189, 39, /* 0x 440 */
|
||||||
|
80, 0,190,175, 68, 0,181,175, 52, 0,177,175, 84, 0,191,175, /* 0x 450 */
|
||||||
|
76, 0,183,175, 72, 0,182,175, 64, 0,180,175, 60, 0,179,175, /* 0x 460 */
|
||||||
|
56, 0,178,175, 48, 0,176,175, 28, 0,162,140, 33,168,160, 0, /* 0x 470 */
|
||||||
|
28, 0,164,175, 6, 0, 5, 36, 33, 32,224, 0, 32, 0,167,175, /* 0x 480 */
|
||||||
|
33,240,192, 0, 36, 0,168,175, 40, 0,169,175,206,255, 17, 4, /* 0x 490 */
|
||||||
|
33,136,162, 2, 3, 0, 64, 20, 0, 0, 0, 0, 4, 0, 0, 16, /* 0x 4a0 */
|
||||||
|
255,255, 2, 52, 4, 0, 66,140, 0, 0, 0, 0,255,255, 66, 36, /* 0x 4b0 */
|
||||||
|
20, 0,162,175, 16, 0,162,150, 20, 0,164,143, 2, 0, 66, 56, /* 0x 4c0 */
|
||||||
|
44, 0,163,150, 1, 0, 66, 44, 0, 17, 2, 0, 39, 40, 4, 0, /* 0x 4d0 */
|
||||||
|
2, 8, 71, 36,255,255, 99, 36, 33, 64, 32, 2,255,255, 4, 36, /* 0x 4e0 */
|
||||||
|
33, 72, 0, 0, 19, 0, 0, 16, 1, 0, 10, 36, 0, 0, 2,141, /* 0x 4f0 */
|
||||||
|
0, 0, 0, 0, 14, 0, 74, 20,255,255, 99, 36, 8, 0, 6,141, /* 0x 500 */
|
||||||
|
0, 0, 0, 0, 43, 16,196, 0, 2, 0, 64, 16, 0, 0, 0, 0, /* 0x 510 */
|
||||||
|
33, 32,192, 0, 20, 0, 2,141, 0, 0, 0, 0, 33, 48,194, 0, /* 0x 520 */
|
||||||
|
43, 16, 38, 1, 2, 0, 64, 16, 0, 0, 0, 0, 33, 72,192, 0, /* 0x 530 */
|
||||||
|
32, 0, 8, 37,237,255, 97, 4, 36,128,164, 0, 35, 16, 48, 1, /* 0x 540 */
|
||||||
|
35, 16, 69, 0,255,255, 66, 36, 36, 40,162, 0, 16, 0,227, 48, /* 0x 550 */
|
||||||
|
3, 0, 96, 16, 8, 0,165,175, 8, 0, 0, 16, 12, 0,176,175, /* 0x 560 */
|
||||||
|
8, 0,165,143, 33, 32, 0, 2, 33, 48, 0, 0,255,255, 8, 36, /* 0x 570 */
|
||||||
|
3,255, 17, 4, 33, 72, 0, 0, 12, 0,162,175, 12, 0,165,143, /* 0x 580 */
|
||||||
|
16, 0,160,175,133, 0, 0, 16, 35,184,176, 0, 12, 0,192, 19, /* 0x 590 */
|
||||||
|
6, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, 10, 0, 98, 20, /* 0x 5a0 */
|
||||||
|
1, 0, 2, 36, 8, 0, 38,142, 32, 0,164,143, 33, 48,230, 2, /* 0x 5b0 */
|
||||||
|
150,255, 17, 4, 3, 0, 5, 36,116, 0, 0, 16, 0, 0, 0, 0, /* 0x 5c0 */
|
||||||
|
0, 0, 35,142, 1, 0, 2, 36,112, 0, 98, 20, 0, 0, 0, 0, /* 0x 5d0 */
|
||||||
|
8, 0, 34,142, 24, 0, 35,142, 33,176,226, 2, 81,115, 2, 60, /* 0x 5e0 */
|
||||||
|
128, 24, 3, 0, 64, 98, 66, 52, 6, 16, 98, 0, 20, 0,165,143, /* 0x 5f0 */
|
||||||
|
16, 0, 36,142, 7, 0, 82, 48, 20, 0, 34,142, 36, 24,197, 2, /* 0x 600 */
|
||||||
|
0, 0,164,175, 4, 0,182,175, 33,160,131, 0, 24, 0,162,175, /* 0x 610 */
|
||||||
|
122, 0,192, 19, 35,152,195, 2, 2, 0, 70, 54,255,255, 8, 36, /* 0x 620 */
|
||||||
|
18, 8, 7, 36, 4, 0, 41,142, 33, 32, 96, 2, 35, 72, 35, 1, /* 0x 630 */
|
||||||
|
211,254, 17, 4, 33, 40,128, 2, 64, 0, 98, 22,127, 0, 4, 36, /* 0x 640 */
|
||||||
|
11, 0,192, 19, 4, 0, 66, 50, 4, 0, 64, 16, 0, 0, 0, 0, /* 0x 650 */
|
||||||
|
40, 0,167,143, 2, 0, 0, 16, 0, 0, 0, 0, 33, 56, 0, 0, /* 0x 660 */
|
||||||
|
28, 0,166,143, 33, 32,192, 3,240,254, 17, 4, 33, 40,160, 3, /* 0x 670 */
|
||||||
|
20, 0,164,143, 35, 16, 20, 0, 2, 0, 67, 50, 8, 0, 96, 16, /* 0x 680 */
|
||||||
|
36,128, 68, 0, 6, 0, 0, 18, 33, 24,116, 2, 33, 16, 0, 2, /* 0x 690 */
|
||||||
|
255,255, 66, 36, 0, 0, 96,160,253,255, 64, 20, 1, 0, 99, 36, /* 0x 6a0 */
|
||||||
|
43, 0,192, 19, 1, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, /* 0x 6b0 */
|
||||||
|
28, 0, 98, 20, 33, 32, 96, 2, 24, 0, 34,142, 0, 0, 0, 0, /* 0x 6c0 */
|
||||||
|
1, 0, 66, 48, 24, 0, 64, 16, 33, 40,128, 2, 20, 0, 36,142, /* 0x 6d0 */
|
||||||
|
16, 0, 34,142, 8, 0, 35,142, 17, 0,130, 20, 33, 16,131, 0, /* 0x 6e0 */
|
||||||
|
33, 48, 87, 0, 20, 0,165,143, 35, 16, 6, 0, 36, 16,162, 0, /* 0x 6f0 */
|
||||||
|
12, 0, 66, 44, 11, 0, 64, 20, 33, 32, 96, 2, 12, 0, 2, 36, /* 0x 700 */
|
||||||
|
0, 0,194,172, 32, 3, 2, 60, 8, 0, 66, 52, 32, 0,164,143, /* 0x 710 */
|
||||||
|
4, 0,194,172, 8, 0,192,172, 60,255, 17, 4, 33, 40, 0, 0, /* 0x 720 */
|
||||||
|
33, 32, 96, 2, 33, 40,128, 2, 33, 48, 64, 2,155,254, 17, 4, /* 0x 730 */
|
||||||
|
29, 16, 2, 36, 6, 0, 64, 16,127, 0, 4, 36,161, 15, 2, 36, /* 0x 740 */
|
||||||
|
150,254, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 750 */
|
||||||
|
24, 0,163,143, 33, 16,144, 2, 33, 40,195, 2, 33,128, 98, 2, /* 0x 760 */
|
||||||
|
43, 16, 5, 2, 9, 0, 64, 16, 35, 40,176, 0, 33, 48, 64, 2, /* 0x 770 */
|
||||||
|
33, 32, 0, 2, 18, 8, 7, 36,255,255, 8, 36,128,254, 17, 4, /* 0x 780 */
|
||||||
|
33, 72, 0, 0,237,255, 2, 22,127, 0, 4, 36, 16, 0,164,143, /* 0x 790 */
|
||||||
|
32, 0, 49, 38, 1, 0,132, 36, 16, 0,164,175, 44, 0,162,150, /* 0x 7a0 */
|
||||||
|
16, 0,165,143, 0, 0, 0, 0, 42, 16,162, 0,119,255, 64, 20, /* 0x 7b0 */
|
||||||
|
0, 0, 0, 0, 11, 0,192, 19, 3, 0, 2, 36, 16, 0,163,150, /* 0x 7c0 */
|
||||||
|
0, 0, 0, 0, 7, 0, 98, 16, 0, 0, 0, 0, 12, 0,162,143, /* 0x 7d0 */
|
||||||
|
8, 0,163,143, 0, 0, 0, 0, 33, 32, 67, 0,111,254, 17, 4, /* 0x 7e0 */
|
||||||
|
205, 15, 2, 36, 36, 0,164,143, 0, 0, 0, 0, 7, 0,128, 16, /* 0x 7f0 */
|
||||||
|
0, 0, 0, 0, 5, 0, 0, 16, 0, 0,151,172, 28, 0,168,143, /* 0x 800 */
|
||||||
|
33, 48, 64, 2,135,255, 0, 16, 18, 0, 7, 36, 24, 0,162,142, /* 0x 810 */
|
||||||
|
84, 0,191,143, 33, 16,226, 2, 80, 0,190,143, 76, 0,183,143, /* 0x 820 */
|
||||||
|
72, 0,182,143, 68, 0,181,143, 64, 0,180,143, 60, 0,179,143, /* 0x 830 */
|
||||||
|
56, 0,178,143, 52, 0,177,143, 48, 0,176,143, 8, 0,224, 3, /* 0x 840 */
|
||||||
|
88, 0,189, 39,200,255,189, 39, 52, 0,191,175, 48, 0,180,175, /* 0x 850 */
|
||||||
|
44, 0,179,175, 40, 0,178,175, 36, 0,177,175, 32, 0,176,175, /* 0x 860 */
|
||||||
|
33,128, 0, 1, 0, 0,136,140, 33, 24,160, 0, 33, 16,128, 0, /* 0x 870 */
|
||||||
|
33,144,192, 0, 33,160,224, 0, 4, 0,165, 39, 33, 56, 0, 0, /* 0x 880 */
|
||||||
|
33, 48, 0, 2, 20, 0,164, 39, 20, 0,163,175, 33,136, 32, 1, /* 0x 890 */
|
||||||
|
12, 0,163,175, 4, 0,168,175, 24, 0,162,175, 16, 0,162,175, /* 0x 8a0 */
|
||||||
|
98,254, 17, 4, 8, 0,178,175, 44, 0, 70,150, 33, 32,128, 2, /* 0x 8b0 */
|
||||||
|
214,254, 17, 4, 5, 0, 5, 36, 42, 0, 70,150, 33, 32,128, 2, /* 0x 8c0 */
|
||||||
|
4, 0, 5, 36,209,254, 17, 4, 52, 0, 83, 38, 8, 0,102,142, /* 0x 8d0 */
|
||||||
|
33, 32,128, 2, 52, 0,198, 36,204,254, 17, 4, 3, 0, 5, 36, /* 0x 8e0 */
|
||||||
|
33, 72, 32, 2, 33, 32, 0, 2, 33, 40, 64, 2, 12, 0,166, 39, /* 0x 8f0 */
|
||||||
|
33, 56,128, 2,209,254, 17, 4, 33, 64,160, 3, 33, 48, 64, 0, /* 0x 900 */
|
||||||
|
33, 32,128, 2, 9, 0, 5, 36,192,254, 17, 4, 33,136, 64, 0, /* 0x 910 */
|
||||||
|
44, 0, 69,150, 42, 0, 0, 16, 33, 32, 0, 0, 0, 0, 99,142, /* 0x 920 */
|
||||||
|
3, 0, 2, 36, 38, 0, 98, 20, 32, 0,115, 38,224,255,115, 38, /* 0x 930 */
|
||||||
|
8, 0, 98,142, 0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0, /* 0x 940 */
|
||||||
|
33, 48, 0, 0, 21,254, 17, 4,165, 15, 2, 36, 9, 0, 64, 4, /* 0x 950 */
|
||||||
|
33,128, 64, 0, 33, 32, 64, 0, 33, 40, 64, 2, 0, 2, 6, 36, /* 0x 960 */
|
||||||
|
14,254, 17, 4,163, 15, 2, 36, 0, 2, 3, 36, 6, 0, 67, 16, /* 0x 970 */
|
||||||
|
33, 56,128, 2,127, 0, 4, 36, 8,254, 17, 4,161, 15, 2, 36, /* 0x 980 */
|
||||||
|
255,255, 0, 16, 0, 0, 0, 0, 33, 64,160, 3, 33, 72, 0, 0, /* 0x 990 */
|
||||||
|
170,254, 17, 4, 33, 48, 0, 0, 0, 0,166,143, 33, 32,128, 2, /* 0x 9a0 */
|
||||||
|
7, 0, 5, 36,153,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2, /* 0x 9b0 */
|
||||||
|
250,253, 17, 4,166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2, /* 0x 9c0 */
|
||||||
|
42, 16,133, 0,213,255, 64, 20, 1, 0,132, 36, 33, 16, 32, 2, /* 0x 9d0 */
|
||||||
|
52, 0,191,143, 48, 0,180,143, 44, 0,179,143, 40, 0,178,143, /* 0x 9e0 */
|
||||||
|
36, 0,177,143, 32, 0,176,143, 8, 0,224, 3, 56, 0,189, 39 /* 0x 9f0 */
|
||||||
|
};
|
||||||
+1320
-1297
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
/* powerpc-darwin.macho-entry.h
|
/* powerpc-darwin.macho-entry.h
|
||||||
created from powerpc-darwin.macho-entry.bin, 8406 (0x20d6) bytes
|
created from powerpc-darwin.macho-entry.bin, 8410 (0x20da) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,15 +28,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8406
|
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8410
|
||||||
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x8291963e
|
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0xd0d29892
|
||||||
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0x977e3f05
|
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0xbe74f591
|
||||||
|
|
||||||
unsigned char stub_powerpc_darwin_macho_entry[8406] = {
|
unsigned char stub_powerpc_darwin_macho_entry[8410] = {
|
||||||
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||||
0, 0, 24,120, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
0, 0, 24,124, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
||||||
0, 21, 0, 18, 72, 0, 0, 69,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
|
0, 21, 0, 18, 72, 0, 0, 73,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
|
||||||
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
|
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
|
||||||
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
|
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
|
||||||
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
|
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
|
||||||
@@ -92,7 +92,7 @@ unsigned char stub_powerpc_darwin_macho_entry[8406] = {
|
|||||||
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */
|
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */
|
||||||
124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */
|
124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */
|
||||||
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */
|
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */
|
||||||
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 4, /* 0x 3b0 */
|
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8, /* 0x 3b0 */
|
||||||
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */
|
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */
|
||||||
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */
|
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */
|
||||||
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */
|
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */
|
||||||
@@ -406,157 +406,157 @@ unsigned char stub_powerpc_darwin_macho_entry[8406] = {
|
|||||||
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */
|
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */
|
||||||
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */
|
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */
|
||||||
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */
|
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */
|
||||||
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 4, /* 0x1750 */
|
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 8, /* 0x1750 */
|
||||||
124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */
|
124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */
|
||||||
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */
|
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */
|
||||||
144,166, 0, 0, 78,128, 0, 32,124, 72, 2,166,128,130, 0, 8, /* 0x1780 */
|
144,166, 0, 0, 78,128, 0, 32,124, 72, 2,166,128,130, 0, 8, /* 0x1780 */
|
||||||
124,137, 3,166,128,194, 0, 4,136,226, 0, 12,124,164, 18, 20, /* 0x1790 */
|
124,137, 3,166,128,194, 0, 4,136,226, 0, 12,124,164, 18, 20, /* 0x1790 */
|
||||||
56,165, 0, 16,124,102, 18, 20, 56, 99, 0,192,140, 5,255,255, /* 0x17a0 */
|
56,165, 0, 16,124,102, 18, 20, 56, 99, 0,192,140, 5,255,255, /* 0x17a0 */
|
||||||
156, 3,255,255, 66, 0,255,248,127,233, 3,166, 56,162, 0,128, /* 0x17b0 */
|
156, 3,255,255, 66, 0,255,248,127,233, 3,166, 56,162, 0,128, /* 0x17b0 */
|
||||||
144,193,255,252, 56,193,255,252, 78,128, 4, 32,127,232, 2,166, /* 0x17c0 */
|
144,193,255,252, 56,193,255,252, 56, 33,255,232, 78,128, 4, 32, /* 0x17c0 */
|
||||||
75,255,255,185, 72, 0, 0,128,116,109,112, 47,112,111,119,101, /* 0x17d0 */
|
127,232, 2,166, 75,255,255,181, 72, 0, 0,128,116,109,112, 47, /* 0x17d0 */
|
||||||
114,112, 99, 45,100, 97,114,119,105,110, 46,109, 97, 99,104,111, /* 0x17e0 */
|
112,111,119,101,114,112, 99, 45,100, 97,114,119,105,110, 46,109, /* 0x17e0 */
|
||||||
45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x17f0 */
|
97, 99,104,111, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, /* 0x17f0 */
|
||||||
102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1800 */
|
32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x1800 */
|
||||||
50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116,105, /* 0x1810 */
|
101,108,102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83, /* 0x1810 */
|
||||||
111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, /* 0x1820 */
|
101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109, /* 0x1820 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, /* 0x1830 */
|
101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, /* 0x1830 */
|
||||||
32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, /* 0x1840 */
|
32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x1840 */
|
||||||
32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65, /* 0x1850 */
|
77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102, /* 0x1850 */
|
||||||
108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 77, /* 0x1860 */
|
102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, /* 0x1860 */
|
||||||
65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1870 */
|
32, 48, 32, 77, 65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x1870 */
|
||||||
48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1880 */
|
32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, /* 0x1880 */
|
||||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1890 */
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1890 */
|
||||||
48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x18a0 */
|
48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x18a0 */
|
||||||
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x18b0 */
|
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x18b0 */
|
||||||
79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x18c0 */
|
82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, /* 0x18c0 */
|
||||||
68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x18d0 */
|
95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x18d0 */
|
||||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x18e0 */
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x18e0 */
|
||||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, /* 0x18f0 */
|
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, /* 0x18f0 */
|
||||||
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1900 */
|
56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1900 */
|
||||||
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, /* 0x1910 */
|
83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, /* 0x1910 */
|
||||||
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1920 */
|
78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1920 */
|
||||||
52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1930 */
|
48, 48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1930 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, /* 0x1940 */
|
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1940 */
|
||||||
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1950 */
|
48, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1950 */
|
||||||
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1960 */
|
69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1960 */
|
||||||
89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, /* 0x1970 */
|
68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, /* 0x1970 */
|
||||||
32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, /* 0x1980 */
|
32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, /* 0x1980 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1990 */
|
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1990 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, /* 0x19a0 */
|
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, /* 0x19a0 */
|
||||||
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x19b0 */
|
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x19b0 */
|
||||||
67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, /* 0x19c0 */
|
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x19c0 */
|
||||||
78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x19d0 */
|
32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, /* 0x19d0 */
|
||||||
48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19e0 */
|
32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, /* 0x19e0 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x19f0 */
|
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x19f0 */
|
||||||
48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1a00 */
|
48, 48, 48, 48, 48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1a00 */
|
||||||
69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1a10 */
|
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1a10 */
|
||||||
68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, /* 0x1a20 */
|
32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, /* 0x1a20 */
|
||||||
76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, /* 0x1a30 */
|
77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1a30 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1a40 */
|
48, 48, 56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a40 */
|
||||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 99, 32, 32, /* 0x1a50 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, /* 0x1a50 */
|
||||||
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1a60 */
|
57, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1a60 */
|
||||||
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1a70 */
|
84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1a70 */
|
||||||
32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, /* 0x1a80 */
|
78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1a80 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, /* 0x1a90 */
|
49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, /* 0x1a90 */
|
||||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1aa0 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1aa0 */
|
||||||
48, 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1ab0 */
|
48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, /* 0x1ab0 */
|
||||||
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1ac0 */
|
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1ac0 */
|
||||||
76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1ad0 */
|
65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, /* 0x1ad0 */
|
||||||
48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, /* 0x1ae0 */
|
68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, /* 0x1ae0 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1af0 */
|
99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1af0 */
|
||||||
48, 32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, 32, 50, 42, 42, /* 0x1b00 */
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, /* 0x1b00 */
|
||||||
48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1b10 */
|
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1b10 */
|
||||||
68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, /* 0x1b20 */
|
32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, /* 0x1b20 */
|
||||||
69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 48, /* 0x1b30 */
|
77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1b30 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1b40 */
|
48, 48, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1b40 */
|
||||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 53, 56, 32, 32, /* 0x1b50 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, /* 0x1b50 */
|
||||||
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1b60 */
|
53, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1b60 */
|
||||||
82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, /* 0x1b70 */
|
84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, /* 0x1b70 */
|
||||||
95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1b80 */
|
32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, /* 0x1b80 */
|
||||||
48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1b90 */
|
48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1b90 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, /* 0x1ba0 */
|
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1ba0 */
|
||||||
56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1bb0 */
|
48, 49, 55, 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1bb0 */
|
||||||
83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, /* 0x1bc0 */
|
84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1bc0 */
|
||||||
69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1bd0 */
|
32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, /* 0x1bd0 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1be0 */
|
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1be0 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1bf0 */
|
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1bf0 */
|
||||||
49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1c00 */
|
48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1c00 */
|
||||||
69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1c10 */
|
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1c10 */
|
||||||
49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, /* 0x1c20 */
|
76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, /* 0x1c20 */
|
||||||
32, 48, 48, 48, 48, 48, 48, 53, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c30 */
|
32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32, 48, /* 0x1c30 */
|
||||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1c40 */
|
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1c40 */
|
||||||
48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1c50 */
|
48, 32, 32, 48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, /* 0x1c50 */
|
||||||
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1c60 */
|
48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1c60 */
|
||||||
89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x1c70 */
|
68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, /* 0x1c70 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1c80 */
|
76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1c80 */
|
||||||
32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, /* 0x1c90 */
|
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x1c90 */
|
||||||
48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, /* 0x1ca0 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1ca0 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1cb0 */
|
67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1cb0 */
|
||||||
32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, /* 0x1cc0 */
|
32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, /* 0x1cc0 */
|
||||||
48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, /* 0x1cd0 */
|
48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, /* 0x1cd0 */
|
||||||
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x1ce0 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1ce0 */
|
||||||
77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x1cf0 */
|
32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, /* 0x1cf0 */
|
||||||
76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d00 */
|
48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, /* 0x1d00 */
|
||||||
32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 79, 83, 48, 48, /* 0x1d10 */
|
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, /* 0x1d10 */
|
||||||
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 79, 83, /* 0x1d20 */
|
79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, /* 0x1d20 */
|
||||||
48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d30 */
|
65, 67, 79, 83, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d30 */
|
||||||
32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, /* 0x1d40 */
|
32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x1d40 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, /* 0x1d50 */
|
68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, /* 0x1d50 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1d60 */
|
69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d60 */
|
||||||
32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1d70 */
|
32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, /* 0x1d70 */
|
||||||
78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1d80 */
|
48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x1d80 */
|
||||||
32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, /* 0x1d90 */
|
48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, /* 0x1d90 */
|
||||||
48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, /* 0x1da0 */
|
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, /* 0x1da0 */
|
||||||
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1db0 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1db0 */
|
||||||
50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x1dc0 */
|
32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1dc0 */
|
||||||
66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1dd0 */
|
78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1dd0 */
|
||||||
100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, /* 0x1de0 */
|
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1de0 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1df0 */
|
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1df0 */
|
||||||
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e00 */
|
69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1e00 */
|
||||||
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, /* 0x1e10 */
|
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1e10 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1e20 */
|
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1e20 */
|
||||||
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e30 */
|
68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1e30 */
|
||||||
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, /* 0x1e40 */
|
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1e40 */
|
||||||
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1e50 */
|
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1e50 */
|
||||||
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e60 */
|
68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1e60 */
|
||||||
100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, /* 0x1e70 */
|
32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, /* 0x1e70 */
|
||||||
48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, /* 0x1e80 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1e80 */
|
||||||
48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 77, /* 0x1e90 */
|
89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, /* 0x1e90 */
|
||||||
65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ea0 */
|
32, 32, 32, 77, 65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, /* 0x1ea0 */
|
||||||
32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x1eb0 */
|
48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, /* 0x1eb0 */
|
||||||
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x1ec0 */
|
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x1ec0 */
|
||||||
91, 77, 65, 67, 79, 83, 48, 48, 48, 93, 58, 10, 79, 70, 70, 83, /* 0x1ed0 */
|
70, 79, 82, 32, 91, 77, 65, 67, 79, 83, 48, 48, 48, 93, 58, 10, /* 0x1ed0 */
|
||||||
69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x1ee0 */
|
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x1ee0 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x1ef0 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x1ef0 */
|
||||||
48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, /* 0x1f00 */
|
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x1f00 */
|
||||||
52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x1f10 */
|
82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x1f10 */
|
||||||
43, 48,120, 48, 48, 48, 48, 48, 48, 52, 52, 10, 10, 82, 69, 76, /* 0x1f20 */
|
65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 52, 56, 10, /* 0x1f20 */
|
||||||
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x1f30 */
|
10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x1f30 */
|
||||||
70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, /* 0x1f40 */
|
82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, /* 0x1f40 */
|
||||||
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x1f50 */
|
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x1f50 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x1f60 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x1f60 */
|
||||||
48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x1f70 */
|
69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, /* 0x1f70 */
|
||||||
49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x1f80 */
|
95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x1f80 */
|
||||||
76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x1f90 */
|
95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x1f90 */
|
||||||
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, /* 0x1fa0 */
|
78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x1fa0 */
|
||||||
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x1fb0 */
|
82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x1fb0 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x1fc0 */
|
84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1fc0 */
|
||||||
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, /* 0x1fd0 */
|
32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, /* 0x1fd0 */
|
||||||
80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x1fe0 */
|
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, /* 0x1fe0 */
|
||||||
82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x1ff0 */
|
32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, /* 0x1ff0 */
|
||||||
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2000 */
|
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2000 */
|
||||||
91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2010 */
|
70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, /* 0x2010 */
|
||||||
32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2020 */
|
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2020 */
|
||||||
32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x2030 */
|
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2030 */
|
||||||
57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, /* 0x2040 */
|
48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x2040 */
|
||||||
32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, /* 0x2050 */
|
49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2050 */
|
||||||
69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2060 */
|
76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2060 */
|
||||||
83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x2070 */
|
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, /* 0x2070 */
|
||||||
48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x2080 */
|
69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2080 */
|
||||||
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2090 */
|
32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2090 */
|
||||||
65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, /* 0x20a0 */
|
32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x20a0 */
|
||||||
80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, /* 0x20b0 */
|
52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, /* 0x20b0 */
|
||||||
76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, /* 0x20c0 */
|
32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48, /* 0x20c0 */
|
||||||
48, 48, 48, 49, 48, 10 /* 0x20d0 */
|
120, 48, 48, 48, 48, 48, 48, 49, 48, 10 /* 0x20d0 */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* powerpc-darwin.macho-fold.h
|
/* powerpc-darwin.macho-fold.h
|
||||||
created from powerpc-darwin.macho-fold.bin, 1660 (0x67c) bytes
|
created from powerpc-darwin.macho-fold.bin, 1664 (0x680) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,113 +28,113 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 1660
|
#define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 1664
|
||||||
#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0xfc8b272c
|
#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0x2e3a279d
|
||||||
#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0x62ce0ae3
|
#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0xf61322eb
|
||||||
|
|
||||||
unsigned char stub_powerpc_darwin_macho_fold[1660] = {
|
unsigned char stub_powerpc_darwin_macho_fold[1664] = {
|
||||||
72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 0 */
|
72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 0 */
|
||||||
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 10 */
|
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 10 */
|
||||||
124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 20 */
|
124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 20 */
|
||||||
124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 30 */
|
124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 30 */
|
||||||
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 40 */
|
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 40 */
|
||||||
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 50 */
|
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 50 */
|
||||||
66, 0,255,240, 78,128, 0, 32, 57, 32, 0, 0,149, 33,255,252, /* 0x 60 */
|
66, 0,255,240, 78,128, 0, 32, 56, 33, 0, 24, 57, 32, 0, 0, /* 0x 60 */
|
||||||
124, 41, 11,120,125, 8, 2,166,128,159,255,248,124,100,248, 80, /* 0x 70 */
|
149, 33,255,252,124, 41, 11,120,125, 8, 2,166,128,159,255,248, /* 0x 70 */
|
||||||
128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8, 56,192, 8, 0, /* 0x 80 */
|
124,100,248, 80,128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8, /* 0x 80 */
|
||||||
124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120, 56, 33,255,232, /* 0x 90 */
|
56,192, 8, 0,124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120, /* 0x 90 */
|
||||||
127,231,251,120, 72, 0, 4, 61,127,161,235,120,128, 67, 0, 0, /* 0x a0 */
|
56, 33,255,232,127,231,251,120, 72, 0, 4, 61,127,161,235,120, /* 0x a0 */
|
||||||
124, 73, 3,166,128, 67, 0,136,124, 79,241, 32,128, 67, 0,140, /* 0x b0 */
|
128, 67, 0, 0,124, 73, 3,166,128, 67, 0,136,124, 79,241, 32, /* 0x b0 */
|
||||||
124, 65, 3,166,128, 67, 0,144,124, 72, 3,166,184,131, 0, 24, /* 0x c0 */
|
128, 67, 0,140,124, 65, 3,166,128, 67, 0,144,124, 72, 3,166, /* 0x c0 */
|
||||||
128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20, 78,128, 4, 32, /* 0x d0 */
|
184,131, 0, 24,128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20, /* 0x d0 */
|
||||||
124,199, 51,120, 56,192, 0, 0, 56, 0, 0,153, 72, 0, 0, 16, /* 0x e0 */
|
78,128, 4, 32,124,199, 51,120, 56,192, 0, 0, 56, 0, 0,153, /* 0x e0 */
|
||||||
125, 9, 67,120, 57, 0, 0, 0, 56, 0, 0,197, 68, 0, 0, 2, /* 0x f0 */
|
72, 0, 0, 16,125, 9, 67,120, 57, 0, 0, 0, 56, 0, 0,197, /* 0x f0 */
|
||||||
56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, 75,255,255,240, /* 0x 100 */
|
68, 0, 0, 2, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 100 */
|
||||||
56, 0, 0, 3, 75,255,255,232, 56, 0, 0, 5, 75,255,255,224, /* 0x 110 */
|
75,255,255,240, 56, 0, 0, 3, 75,255,255,232, 56, 0, 0, 5, /* 0x 110 */
|
||||||
56, 0, 0, 6, 75,255,255,216, 56, 0, 0, 74, 75,255,255,208, /* 0x 120 */
|
75,255,255,224, 56, 0, 0, 6, 75,255,255,216, 56, 0, 0, 74, /* 0x 120 */
|
||||||
124, 8, 2,166,148, 33,255,240,144, 1, 0, 20,128, 3, 0, 0, /* 0x 130 */
|
75,255,255,208,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 130 */
|
||||||
129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, 56, 96, 0,127, /* 0x 140 */
|
128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 140 */
|
||||||
75,255,255,185, 47,133, 0, 0, 65,158, 0, 28,124,169, 3,166, /* 0x 150 */
|
56, 96, 0,127, 75,255,255,185, 47,133, 0, 0, 65,158, 0, 28, /* 0x 150 */
|
||||||
136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, 56,132, 0, 1, /* 0x 160 */
|
124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 160 */
|
||||||
66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4,124, 5, 0, 80, /* 0x 170 */
|
56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 170 */
|
||||||
144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20,124, 8, 3,166, /* 0x 180 */
|
124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20, /* 0x 180 */
|
||||||
56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32,124, 8, 2,166, /* 0x 190 */
|
124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32, /* 0x 190 */
|
||||||
148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0,191,129, 0, 48, /* 0x 1a0 */
|
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0, /* 0x 1a0 */
|
||||||
47,128, 0, 0,124,159, 35,120,124,126, 27,120,124,188, 43,120, /* 0x 1b0 */
|
191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120, /* 0x 1b0 */
|
||||||
124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12,127,195,243,120, /* 0x 1c0 */
|
124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12, /* 0x 1c0 */
|
||||||
56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16,128,161, 0, 20, /* 0x 1d0 */
|
127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 1d0 */
|
||||||
47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, 96, 0, 80, 85, /* 0x 1e0 */
|
128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 1e0 */
|
||||||
127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, 47,128, 0, 0, /* 0x 1f0 */
|
96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 1f0 */
|
||||||
65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, 64,190, 0, 12, /* 0x 200 */
|
47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 200 */
|
||||||
56, 96, 0,127, 75,255,254,245,127, 5, 72, 64, 65,185,255,244, /* 0x 210 */
|
64,190, 0, 12, 56, 96, 0,127, 75,255,254,245,127, 5, 72, 64, /* 0x 210 */
|
||||||
128, 31, 0, 0,127,137, 0, 64, 65,189,255,232,128, 31, 0, 4, /* 0x 220 */
|
65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 220 */
|
||||||
64,152, 0,136,124,164, 43,120,128,126, 0, 4,124, 5, 3,120, /* 0x 230 */
|
128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4, /* 0x 230 */
|
||||||
56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32,127,136, 3,166, /* 0x 240 */
|
124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32, /* 0x 240 */
|
||||||
78,128, 0, 33, 47,131, 0, 0, 64,190,255,184,128,129, 0, 32, /* 0x 250 */
|
127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184, /* 0x 250 */
|
||||||
128, 1, 0, 16,127,132, 0, 0, 64,190,255,168,136,193, 0, 25, /* 0x 260 */
|
128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168, /* 0x 260 */
|
||||||
49, 61,255,255,124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254, /* 0x 270 */
|
136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 270 */
|
||||||
125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4,136,161, 0, 26, /* 0x 280 */
|
85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 280 */
|
||||||
127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4,129, 97, 0, 20, /* 0x 290 */
|
136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4, /* 0x 290 */
|
||||||
129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80,144, 30, 0, 4, /* 0x 2a0 */
|
129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 2a0 */
|
||||||
145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120,127,195,243,120, /* 0x 2b0 */
|
144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 2b0 */
|
||||||
75,255,254,113,129, 97, 0, 16,129, 63, 0, 0,128, 31, 0, 4, /* 0x 2c0 */
|
127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0, /* 0x 2c0 */
|
||||||
125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20,144, 31, 0, 4, /* 0x 2d0 */
|
128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 2d0 */
|
||||||
145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68,187,129, 0, 48, /* 0x 2e0 */
|
144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68, /* 0x 2e0 */
|
||||||
124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32,124, 8, 2,166, /* 0x 2f0 */
|
187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32, /* 0x 2f0 */
|
||||||
148, 33,255,176,144, 1, 0, 84,128, 3, 0, 16,190, 65, 0, 24, /* 0x 300 */
|
124, 8, 2,166,148, 33,255,176,144, 1, 0, 84,128, 3, 0, 16, /* 0x 300 */
|
||||||
58,224, 0, 0,125,128, 0, 38,127,151, 0, 64,145,129, 0, 20, /* 0x 310 */
|
190, 65, 0, 24, 58,224, 0, 0,125,128, 0, 38,127,151, 0, 64, /* 0x 310 */
|
||||||
124,122, 27,120,124,146, 35,120,124,187, 43,120,124,211, 51,120, /* 0x 320 */
|
145,129, 0, 20,124,122, 27,120,124,146, 35,120,124,187, 43,120, /* 0x 320 */
|
||||||
124,244, 59,120,125, 21, 67,120,125, 54, 75,120, 59,195, 0, 28, /* 0x 330 */
|
124,211, 51,120,124,244, 59,120,125, 21, 67,120,125, 54, 75,120, /* 0x 330 */
|
||||||
59, 0, 0, 0, 64,156, 1,124,129, 62, 0, 0, 47,137, 0, 1, /* 0x 340 */
|
59,195, 0, 28, 59, 0, 0, 0, 64,156, 1,124,129, 62, 0, 0, /* 0x 340 */
|
||||||
64,190, 1, 48,129, 62, 0, 24,129,126, 0, 36, 85, 61, 5, 62, /* 0x 350 */
|
47,137, 0, 1, 64,190, 1, 48,129, 62, 0, 24,129,126, 0, 36, /* 0x 350 */
|
||||||
127,139,234, 20, 46, 28, 0, 0,128, 30, 0, 28,145, 97, 0, 8, /* 0x 360 */
|
85, 61, 5, 62,127,139,234, 20, 46, 28, 0, 0,128, 30, 0, 28, /* 0x 360 */
|
||||||
127, 41, 2, 20,145, 33, 0, 12,127,253, 72, 80, 65,146, 0, 76, /* 0x 370 */
|
145, 97, 0, 8,127, 41, 2, 20,145, 33, 0, 12,127,253, 72, 80, /* 0x 370 */
|
||||||
47,155, 0, 0, 64,190, 0, 16, 47,139, 0, 0, 56,192, 0, 18, /* 0x 380 */
|
65,146, 0, 76, 47,155, 0, 0, 64,190, 0, 16, 47,139, 0, 0, /* 0x 380 */
|
||||||
64,158, 0, 8, 56,192, 16, 18, 47,139, 0, 0,126,103,155,120, /* 0x 390 */
|
56,192, 0, 18, 64,158, 0, 8, 56,192, 16, 18, 47,139, 0, 0, /* 0x 390 */
|
||||||
64,158, 0, 8, 56,224,255,255,129, 30, 0, 32,127,227,251,120, /* 0x 3a0 */
|
126,103,155,120, 64,158, 0, 8, 56,224,255,255,129, 30, 0, 32, /* 0x 3a0 */
|
||||||
125, 8,146, 20,127,132,227,120, 56,160, 0, 3, 75,255,253, 53, /* 0x 3b0 */
|
127,227,251,120,125, 8,146, 20,127,132,227,120, 56,160, 0, 3, /* 0x 3b0 */
|
||||||
127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0, 65,158, 0, 52, /* 0x 3c0 */
|
75,255,253, 53,127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0, /* 0x 3c0 */
|
||||||
128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40,128, 30, 0, 32, /* 0x 3d0 */
|
65,158, 0, 52,128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40, /* 0x 3d0 */
|
||||||
47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0,127, 99,219,120, /* 0x 3e0 */
|
128, 30, 0, 32, 47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0, /* 0x 3e0 */
|
||||||
56,129, 0, 8,126,165,171,120,126,198,179,120, 75,255,253,161, /* 0x 3f0 */
|
127, 99,219,120, 56,129, 0, 8,126,165,171,120,126,198,179,120, /* 0x 3f0 */
|
||||||
124, 28, 0,208,112, 29, 15,255,125, 63,226, 20, 65,130, 0, 24, /* 0x 400 */
|
75,255,253,161,124, 28, 0,208,112, 29, 15,255,125, 63,226, 20, /* 0x 400 */
|
||||||
127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, /* 0x 410 */
|
65,130, 0, 24,127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0, /* 0x 410 */
|
||||||
66, 0,255,248, 65,178, 0, 36,128,190, 0, 44,127,227,251,120, /* 0x 420 */
|
57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,128,190, 0, 44, /* 0x 420 */
|
||||||
127,132,227,120, 75,255,252,245, 47,131, 0, 0, 65,190, 0, 12, /* 0x 430 */
|
127,227,251,120,127,132,227,120, 75,255,252,245, 47,131, 0, 0, /* 0x 430 */
|
||||||
56, 96, 0,127, 75,255,252,197,124, 28,234, 20,127,255, 2, 20, /* 0x 440 */
|
65,190, 0, 12, 56, 96, 0,127, 75,255,252,197,124, 28,234, 20, /* 0x 440 */
|
||||||
127,159,200, 64, 64,188, 0, 84,128,190, 0, 44,124,159,200, 80, /* 0x 450 */
|
127,255, 2, 20,127,159,200, 64, 64,188, 0, 84,128,190, 0, 44, /* 0x 450 */
|
||||||
127,227,251,120, 56,192, 16, 18, 56,224,255,255, 57, 0, 0, 0, /* 0x 460 */
|
124,159,200, 80,127,227,251,120, 56,192, 16, 18, 56,224,255,255, /* 0x 460 */
|
||||||
75,255,252,129,127,159, 24, 0, 65,190, 0, 48, 75,255,255,196, /* 0x 470 */
|
57, 0, 0, 0, 75,255,252,129,127,159, 24, 0, 65,190, 0, 48, /* 0x 470 */
|
||||||
56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32,128, 30, 0, 8, /* 0x 480 */
|
75,255,255,196, 56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32, /* 0x 480 */
|
||||||
47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12, 47,128, 0, 40, /* 0x 490 */
|
128, 30, 0, 8, 47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12, /* 0x 490 */
|
||||||
64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16, 59, 24, 0, 1, /* 0x 4a0 */
|
47,128, 0, 40, 64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16, /* 0x 4a0 */
|
||||||
127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20, 75,255,254,136, /* 0x 4b0 */
|
59, 24, 0, 1,127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20, /* 0x 4b0 */
|
||||||
128, 1, 0, 84,129,129, 0, 20,126,227,187,120,124, 8, 3,166, /* 0x 4c0 */
|
75,255,254,136,128, 1, 0, 84,129,129, 0, 20,126,227,187,120, /* 0x 4c0 */
|
||||||
186, 65, 0, 24,125,128,129, 32, 56, 33, 0, 80, 78,128, 0, 32, /* 0x 4d0 */
|
124, 8, 3,166,186, 65, 0, 24,125,128,129, 32, 56, 33, 0, 80, /* 0x 4d0 */
|
||||||
148, 33,255,192,144,129, 0, 8,124, 8, 2,166,129, 97, 0, 8, /* 0x 4e0 */
|
78,128, 0, 32,148, 33,255,192,144,129, 0, 8,124, 8, 2,166, /* 0x 4e0 */
|
||||||
144, 1, 0, 68, 57,107,255,232, 56, 3, 0, 24,145, 97, 0, 16, /* 0x 4f0 */
|
129, 97, 0, 8,144, 1, 0, 68, 57,107,255,232, 56, 3, 0, 24, /* 0x 4f0 */
|
||||||
144, 1, 0, 20,191, 97, 0, 44,128, 3, 0, 24,129, 65, 0, 20, /* 0x 500 */
|
145, 97, 0, 16,144, 1, 0, 20,191, 97, 0, 44,128, 3, 0, 24, /* 0x 500 */
|
||||||
125, 60, 75,120,129, 33, 0, 16,124,191, 43,120,125, 27, 67,120, /* 0x 510 */
|
129, 65, 0, 20,125, 60, 75,120,129, 33, 0, 16,124,191, 43,120, /* 0x 510 */
|
||||||
124,253, 59,120,124,229, 59,120, 56, 97, 0, 16, 56,129, 0, 24, /* 0x 520 */
|
125, 27, 67,120,124,253, 59,120,124,229, 59,120, 56, 97, 0, 16, /* 0x 520 */
|
||||||
124,222, 51,120, 56,192, 0, 0,145, 65, 0, 36,144, 1, 0, 24, /* 0x 530 */
|
56,129, 0, 24,124,222, 51,120, 56,192, 0, 0,145, 65, 0, 36, /* 0x 530 */
|
||||||
145, 33, 0, 32,147,225, 0, 28, 75,255,252, 85,127,105,219,120, /* 0x 540 */
|
144, 1, 0, 24,145, 33, 0, 32,147,225, 0, 28, 75,255,252, 85, /* 0x 540 */
|
||||||
127,135,227,120,127,227,251,120,127,168,235,120, 56,128, 0, 0, /* 0x 550 */
|
127,105,219,120,127,135,227,120,127,227,251,120,127,168,235,120, /* 0x 550 */
|
||||||
56,161, 0, 32, 56,192,255,255, 75,255,253,149,129, 95, 0, 16, /* 0x 560 */
|
56,128, 0, 0, 56,161, 0, 32, 56,192,255,255, 75,255,253,149, /* 0x 560 */
|
||||||
57, 96, 0, 0,127,139, 80, 64,124,124, 27,120, 59, 96, 0, 0, /* 0x 570 */
|
129, 95, 0, 16, 57, 96, 0, 0,127,139, 80, 64,124,124, 27,120, /* 0x 570 */
|
||||||
57, 63, 0, 28, 64,156, 0,224,128, 9, 0, 0, 57,107, 0, 1, /* 0x 580 */
|
59, 96, 0, 0, 57, 63, 0, 28, 64,156, 0,224,128, 9, 0, 0, /* 0x 580 */
|
||||||
47,128, 0, 14,127, 11, 80, 64, 64,190, 0,192,128,105, 0, 8, /* 0x 590 */
|
57,107, 0, 1, 47,128, 0, 14,127, 11, 80, 64, 64,190, 0,192, /* 0x 590 */
|
||||||
56,128, 0, 0,124,105, 26, 20, 56,160, 0, 0, 75,255,251,109, /* 0x 5a0 */
|
128,105, 0, 8, 56,128, 0, 0,124,105, 26, 20, 56,160, 0, 0, /* 0x 5a0 */
|
||||||
124,125, 27,121, 65,128, 0, 32,127,163,235,120,127,228,251,120, /* 0x 5b0 */
|
75,255,251,109,124,125, 27,121, 65,128, 0, 32,127,163,235,120, /* 0x 5b0 */
|
||||||
127,197,243,120,127,102,219,120, 75,255,251, 25,127,158, 24, 0, /* 0x 5c0 */
|
127,228,251,120,127,197,243,120,127,102,219,120, 75,255,251, 25, /* 0x 5c0 */
|
||||||
65,190, 0, 20, 56, 96, 0,127, 75,255,251, 49,131,105, 0, 8, /* 0x 5d0 */
|
127,158, 24, 0, 65,190, 0, 20, 56, 96, 0,127, 75,255,251, 49, /* 0x 5d0 */
|
||||||
75,255,255,216,128, 31, 0, 0, 61, 32,202,254, 97, 41,186,190, /* 0x 5e0 */
|
131,105, 0, 8, 75,255,255,216,128, 31, 0, 0, 61, 32,202,254, /* 0x 5e0 */
|
||||||
127,128, 72, 0, 64,158, 0, 52,129, 95, 0, 4, 57, 96, 0, 0, /* 0x 5f0 */
|
97, 41,186,190,127,128, 72, 0, 64,158, 0, 52,129, 95, 0, 4, /* 0x 5f0 */
|
||||||
127,139, 80, 64, 57, 63, 0, 8, 64,156, 0, 32,128, 9, 0, 0, /* 0x 600 */
|
57, 96, 0, 0,127,139, 80, 64, 57, 63, 0, 8, 64,156, 0, 32, /* 0x 600 */
|
||||||
57,107, 0, 1, 47,128, 0, 18,127, 11, 80, 64, 65,190,255,192, /* 0x 610 */
|
128, 9, 0, 0, 57,107, 0, 1, 47,128, 0, 18,127, 11, 80, 64, /* 0x 610 */
|
||||||
57, 41, 0, 20, 65,152,255,232,127,227,251,120,127,100,219,120, /* 0x 620 */
|
65,190,255,192, 57, 41, 0, 20, 65,152,255,232,127,227,251,120, /* 0x 620 */
|
||||||
56,160, 0, 0,127,166,235,120, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 630 */
|
127,100,219,120, 56,160, 0, 0,127,166,235,120, 56,224, 0, 0, /* 0x 630 */
|
||||||
57, 32, 0, 0, 75,255,252,185,124,124, 27,120,127,163,235,120, /* 0x 640 */
|
57, 0, 0, 0, 57, 32, 0, 0, 75,255,252,185,124,124, 27,120, /* 0x 640 */
|
||||||
75,255,250,209, 72, 0, 0, 16,128, 9, 0, 4,125, 41, 2, 20, /* 0x 650 */
|
127,163,235,120, 75,255,250,209, 72, 0, 0, 16,128, 9, 0, 4, /* 0x 650 */
|
||||||
65,152,255, 40,128, 1, 0, 68,127,131,227,120,124, 8, 3,166, /* 0x 660 */
|
125, 41, 2, 20, 65,152,255, 40,128, 1, 0, 68,127,131,227,120, /* 0x 660 */
|
||||||
187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 670 */
|
124, 8, 3,166,187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 670 */
|
||||||
};
|
};
|
||||||
|
|||||||
+169
-169
@@ -1,5 +1,5 @@
|
|||||||
/* powerpc-linux.elf-entry.h
|
/* powerpc-linux.elf-entry.h
|
||||||
created from powerpc-linux.elf-entry.bin, 8721 (0x2211) bytes
|
created from powerpc-linux.elf-entry.bin, 8725 (0x2215) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,15 +28,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 8721
|
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 8725
|
||||||
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x94d0dad3
|
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x7980dcbb
|
||||||
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0xed9c5363
|
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x37bf2c85
|
||||||
|
|
||||||
unsigned char stub_powerpc_linux_elf_entry[8721] = {
|
unsigned char stub_powerpc_linux_elf_entry[8725] = {
|
||||||
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||||
0, 0, 24,224, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
0, 0, 24,228, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
||||||
0, 23, 0, 20, 72, 0, 0,125,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
|
0, 23, 0, 20, 72, 0, 0,129,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
|
||||||
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
|
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
|
||||||
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
|
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
|
||||||
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
|
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
|
||||||
@@ -92,7 +92,7 @@ unsigned char stub_powerpc_linux_elf_entry[8721] = {
|
|||||||
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */
|
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */
|
||||||
124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */
|
124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */
|
||||||
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */
|
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */
|
||||||
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 4, /* 0x 3b0 */
|
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8, /* 0x 3b0 */
|
||||||
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */
|
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */
|
||||||
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */
|
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */
|
||||||
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */
|
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */
|
||||||
@@ -406,7 +406,7 @@ unsigned char stub_powerpc_linux_elf_entry[8721] = {
|
|||||||
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */
|
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */
|
||||||
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */
|
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */
|
||||||
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */
|
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */
|
||||||
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 4, /* 0x1750 */
|
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 8, /* 0x1750 */
|
||||||
124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */
|
124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */
|
||||||
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */
|
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */
|
||||||
144,166, 0, 0, 78,128, 0, 32, 72, 0, 0, 1, 80, 82, 79, 84, /* 0x1780 */
|
144,166, 0, 0, 78,128, 0, 32, 72, 0, 0, 1, 80, 82, 79, 84, /* 0x1780 */
|
||||||
@@ -419,164 +419,164 @@ unsigned char stub_powerpc_linux_elf_entry[8721] = {
|
|||||||
16, 11, 84, 99, 0, 38, 68, 0, 0, 2, 65,131, 0, 0,127,233, /* 0x17f0 */
|
16, 11, 84, 99, 0, 38, 68, 0, 0, 2, 65,131, 0, 0,127,233, /* 0x17f0 */
|
||||||
3,166,128, 30, 0, 0,136,254, 0, 8, 56,193, 0,124,144, 1, /* 0x1800 */
|
3,166,128, 30, 0, 0,136,254, 0, 8, 56,193, 0,124,144, 1, /* 0x1800 */
|
||||||
0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, 56,126, /* 0x1810 */
|
0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, 56,126, /* 0x1810 */
|
||||||
0, 12, 78,128, 4, 32,148, 33,255,128,188, 65, 0, 4,127,232, /* 0x1820 */
|
0, 12, 56, 33,255,232, 78,128, 4, 32,148, 33,255,128,188, 65, /* 0x1820 */
|
||||||
2,166, 75,255,255,153,116,109,112, 47,112,111,119,101,114,112, /* 0x1830 */
|
0, 4,127,232, 2,166, 75,255,255,149,116,109,112, 47,112,111, /* 0x1830 */
|
||||||
99, 45,108,105,110,117,120, 46,101,108,102, 45,101,110,116,114, /* 0x1840 */
|
119,101,114,112, 99, 45,108,105,110,117,120, 46,101,108,102, 45, /* 0x1840 */
|
||||||
121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105,108,101, 32, /* 0x1850 */
|
101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102, /* 0x1850 */
|
||||||
102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45,112,111,119, /* 0x1860 */
|
105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, /* 0x1860 */
|
||||||
101,114,112, 99, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, /* 0x1870 */
|
45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116,105,111, /* 0x1870 */
|
||||||
73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1880 */
|
110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, /* 0x1880 */
|
||||||
32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, /* 0x1890 */
|
32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, /* 0x1890 */
|
||||||
32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, /* 0x18a0 */
|
86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, /* 0x18a0 */
|
||||||
70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, /* 0x18b0 */
|
32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108, /* 0x18b0 */
|
||||||
70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x18c0 */
|
103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, /* 0x18c0 */
|
||||||
78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, /* 0x18d0 */
|
70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x18d0 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x18e0 */
|
48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x18e0 */
|
||||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, /* 0x18f0 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x18f0 */
|
||||||
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1900 */
|
51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1900 */
|
||||||
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1910 */
|
84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1910 */
|
||||||
32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, /* 0x1920 */
|
78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, /* 0x1920 */
|
||||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1930 */
|
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1930 */
|
||||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1940 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1940 */
|
||||||
48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1950 */
|
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, /* 0x1950 */
|
||||||
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1960 */
|
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1960 */
|
||||||
76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, /* 0x1970 */
|
65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, /* 0x1970 */
|
||||||
32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, 56, 32, 32, 48, /* 0x1980 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, /* 0x1980 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1990 */
|
56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1990 */
|
||||||
48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, /* 0x19a0 */
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, /* 0x19a0 */
|
||||||
48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x19b0 */
|
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x19b0 */
|
||||||
79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, /* 0x19c0 */
|
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x19c0 */
|
||||||
32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x19d0 */
|
10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, /* 0x19d0 */
|
||||||
48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x19e0 */
|
32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, /* 0x19e0 */
|
||||||
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x19f0 */
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x19f0 */
|
||||||
48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1a00 */
|
32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, 32, /* 0x1a00 */
|
||||||
84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1a10 */
|
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1a10 */
|
||||||
65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, /* 0x1a20 */
|
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, /* 0x1a20 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, /* 0x1a30 */
|
82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1a30 */
|
||||||
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a40 */
|
48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1a40 */
|
||||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 97, 99, 32, /* 0x1a50 */
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1a50 */
|
||||||
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1a60 */
|
50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1a60 */
|
||||||
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1a70 */
|
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1a70 */
|
||||||
10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, /* 0x1a80 */
|
79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, /* 0x1a80 */
|
||||||
32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, 32, 32, 48, 48, 48, /* 0x1a90 */
|
70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, 32, /* 0x1a90 */
|
||||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1aa0 */
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1aa0 */
|
||||||
32, 48, 48, 48, 48, 48, 51, 57, 99, 32, 32, 50, 42, 42, 48, 32, /* 0x1ab0 */
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 99, 32, 32, 50, /* 0x1ab0 */
|
||||||
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1ac0 */
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1ac0 */
|
||||||
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, /* 0x1ad0 */
|
69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1ad0 */
|
||||||
90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, /* 0x1ae0 */
|
32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, /* 0x1ae0 */
|
||||||
48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1af0 */
|
32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, /* 0x1af0 */
|
||||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1b00 */
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1b00 */
|
||||||
52, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1b10 */
|
48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1b10 */
|
||||||
78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1b20 */
|
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1b20 */
|
||||||
55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, /* 0x1b30 */
|
89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, /* 0x1b30 */
|
||||||
48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1b40 */
|
32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, /* 0x1b40 */
|
||||||
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1b50 */
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b50 */
|
||||||
48, 48, 48,100, 98, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1b60 */
|
32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, 32, 50, 42, 42, 48, /* 0x1b60 */
|
||||||
78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1b70 */
|
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1b70 */
|
||||||
10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, /* 0x1b80 */
|
79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1b80 */
|
||||||
32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 48, 32, 32, 48, 48, 48, /* 0x1b90 */
|
67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 48, 32, /* 0x1b90 */
|
||||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ba0 */
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ba0 */
|
||||||
32, 48, 48, 48, 48, 49, 55, 53, 56, 32, 32, 50, 42, 42, 48, 32, /* 0x1bb0 */
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 53, 56, 32, 32, 50, /* 0x1bb0 */
|
||||||
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1bc0 */
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1bc0 */
|
||||||
78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x1bd0 */
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, /* 0x1bd0 */
|
||||||
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, /* 0x1be0 */
|
84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1be0 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1bf0 */
|
50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1bf0 */
|
||||||
48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, 56, 32, 32, 50, 42, /* 0x1c00 */
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, 56, /* 0x1c00 */
|
||||||
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1c10 */
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1c10 */
|
||||||
65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, /* 0x1c20 */
|
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, /* 0x1c20 */
|
||||||
73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, /* 0x1c30 */
|
76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1c30 */
|
||||||
50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c40 */
|
48, 48, 48, 50, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1c40 */
|
||||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 56, 56, 32, /* 0x1c50 */
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x1c50 */
|
||||||
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1c60 */
|
55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1c60 */
|
||||||
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1c70 */
|
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1c70 */
|
||||||
10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, /* 0x1c80 */
|
79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1c80 */
|
||||||
32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 99, 32, 32, 48, 48, 48, /* 0x1c90 */
|
90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, 32, /* 0x1c90 */
|
||||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ca0 */
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ca0 */
|
||||||
32, 48, 48, 48, 48, 49, 55, 97, 97, 32, 32, 50, 42, 42, 48, 32, /* 0x1cb0 */
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 97, 97, 32, 32, 50, /* 0x1cb0 */
|
||||||
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1cc0 */
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1cc0 */
|
||||||
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, /* 0x1cd0 */
|
69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, /* 0x1cd0 */
|
||||||
76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1ce0 */
|
89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, /* 0x1ce0 */
|
||||||
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x1cf0 */
|
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x1cf0 */
|
||||||
69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x1d00 */
|
77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1d00 */
|
||||||
77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1d10 */
|
48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, /* 0x1d10 */
|
||||||
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, /* 0x1d20 */
|
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x1d20 */
|
||||||
73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x1d30 */
|
86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1d30 */
|
||||||
84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1d40 */
|
78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1d40 */
|
||||||
32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, /* 0x1d50 */
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x1d50 */
|
||||||
48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x1d60 */
|
78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, /* 0x1d60 */
|
||||||
10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1d70 */
|
65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1d70 */
|
||||||
32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, /* 0x1d80 */
|
32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, /* 0x1d80 */
|
||||||
48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, /* 0x1d90 */
|
48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x1d90 */
|
||||||
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, /* 0x1da0 */
|
10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1da0 */
|
||||||
70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1db0 */
|
32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, /* 0x1db0 */
|
||||||
69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */
|
48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, /* 0x1dc0 */
|
||||||
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x1dd0 */
|
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x1dd0 */
|
||||||
65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x1de0 */
|
86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1de0 */
|
||||||
72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1df0 */
|
78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1df0 */
|
||||||
32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, /* 0x1e00 */
|
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, /* 0x1e00 */
|
||||||
48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, /* 0x1e10 */
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, /* 0x1e10 */
|
||||||
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, /* 0x1e20 */
|
48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1e20 */
|
||||||
68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, /* 0x1e30 */
|
78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x1e30 */
|
||||||
10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1e40 */
|
82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1e40 */
|
||||||
32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e50 */
|
32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, /* 0x1e50 */
|
||||||
32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1e60 */
|
48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, /* 0x1e60 */
|
||||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x1e70 */
|
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1e70 */
|
||||||
48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1e80 */
|
95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1e80 */
|
||||||
95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1e90 */
|
76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, /* 0x1e90 */
|
||||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1ea0 */
|
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1ea0 */
|
||||||
49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1eb0 */
|
95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1eb0 */
|
||||||
95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ec0 */
|
76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, /* 0x1ec0 */
|
||||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1ed0 */
|
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1ed0 */
|
||||||
50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1ee0 */
|
95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ee0 */
|
||||||
95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ef0 */
|
76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, /* 0x1ef0 */
|
||||||
103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x1f00 */
|
48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x1f00 */
|
||||||
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, /* 0x1f10 */
|
65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115, /* 0x1f10 */
|
||||||
10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x1f20 */
|
116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x1f20 */
|
||||||
79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, /* 0x1f30 */
|
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, /* 0x1f30 */
|
||||||
78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x1f40 */
|
70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x1f40 */
|
||||||
80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1f50 */
|
32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1f50 */
|
||||||
86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, /* 0x1f60 */
|
32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x1f60 */
|
||||||
95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, /* 0x1f70 */
|
48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, /* 0x1f70 */
|
||||||
32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, /* 0x1f80 */
|
32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, /* 0x1f80 */
|
||||||
48, 48, 55, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x1f90 */
|
48, 48, 48, 48, 48, 48, 56, 48, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x1f90 */
|
||||||
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x1fa0 */
|
84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x1fa0 */
|
||||||
86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x1fb0 */
|
32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x1fb0 */
|
||||||
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1fc0 */
|
32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1fc0 */
|
||||||
32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, /* 0x1fd0 */
|
32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x1fd0 */
|
||||||
82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x1fe0 */
|
48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, /* 0x1fe0 */
|
||||||
32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, /* 0x1ff0 */
|
32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, /* 0x1ff0 */
|
||||||
67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2000 */
|
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2000 */
|
||||||
79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, /* 0x2010 */
|
68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, /* 0x2010 */
|
||||||
69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2020 */
|
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2020 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x2030 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2030 */
|
||||||
48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, /* 0x2040 */
|
10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, /* 0x2040 */
|
||||||
52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x2050 */
|
82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, /* 0x2050 */
|
||||||
10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2060 */
|
84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2060 */
|
||||||
79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, /* 0x2070 */
|
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2070 */
|
||||||
58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2080 */
|
86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2080 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2090 */
|
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2090 */
|
||||||
85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, /* 0x20a0 */
|
32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, /* 0x20a0 */
|
||||||
67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x20b0 */
|
82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x20b0 */
|
||||||
86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x20c0 */
|
32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, /* 0x20c0 */
|
||||||
79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x20d0 */
|
67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x20d0 */
|
||||||
76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, /* 0x20e0 */
|
79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, /* 0x20e0 */
|
||||||
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x20f0 */
|
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x20f0 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2100 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2100 */
|
||||||
48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x2110 */
|
69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, /* 0x2110 */
|
||||||
49, 52, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x2120 */
|
95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, /* 0x2120 */
|
||||||
67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10, /* 0x2130 */
|
65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, /* 0x2130 */
|
||||||
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2140 */
|
49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2140 */
|
||||||
68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2150 */
|
69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, /* 0x2150 */
|
||||||
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2160 */
|
65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2160 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2170 */
|
84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2170 */
|
||||||
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, /* 0x2180 */
|
32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2180 */
|
||||||
80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x2190 */
|
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x2190 */
|
||||||
76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x21a0 */
|
32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, /* 0x21a0 */
|
||||||
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x21b0 */
|
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x21b0 */
|
||||||
91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, /* 0x21c0 */
|
70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, /* 0x21c0 */
|
||||||
69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x21d0 */
|
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x21d0 */
|
||||||
32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x21e0 */
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x21e0 */
|
||||||
48, 48, 48, 53, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, /* 0x21f0 */
|
10, 48, 48, 48, 48, 48, 48, 53, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x21f0 */
|
||||||
52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2200 */
|
82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x2200 */
|
||||||
10 /* 0x2210 */
|
65, 73, 78, 89, 10 /* 0x2210 */
|
||||||
};
|
};
|
||||||
|
|||||||
+114
-114
@@ -1,5 +1,5 @@
|
|||||||
/* powerpc-linux.elf-fold.h
|
/* powerpc-linux.elf-fold.h
|
||||||
created from powerpc-linux.elf-fold.bin, 1944 (0x798) bytes
|
created from powerpc-linux.elf-fold.bin, 1948 (0x79c) bytes
|
||||||
|
|
||||||
This file is part of the UPX executable compressor.
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
@@ -28,17 +28,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 1944
|
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 1948
|
||||||
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x727175e2
|
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x5d84765f
|
||||||
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0xe344893c
|
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x99711a49
|
||||||
|
|
||||||
unsigned char stub_powerpc_linux_elf_fold[1944] = {
|
unsigned char stub_powerpc_linux_elf_fold[1948] = {
|
||||||
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
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, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
|
||||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */
|
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */
|
||||||
0, 16, 0, 0, 0, 0, 7,152, 0, 0, 7,152, 0, 0, 0, 5, /* 0x 40 */
|
0, 16, 0, 0, 0, 0, 7,156, 0, 0, 7,156, 0, 0, 0, 5, /* 0x 40 */
|
||||||
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,152, 0, 0, 0, 0, /* 0x 50 */
|
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,156, 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 60 */
|
||||||
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
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 */
|
72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */
|
||||||
@@ -48,111 +48,111 @@ unsigned char stub_powerpc_linux_elf_fold[1944] = {
|
|||||||
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x c0 */
|
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x c0 */
|
||||||
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x d0 */
|
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x d0 */
|
||||||
66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4, /* 0x e0 */
|
66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4, /* 0x e0 */
|
||||||
47,130, 0, 0, 64,158,255,244, 78,128, 0, 32,125, 8, 2,166, /* 0x f0 */
|
47,130, 0, 0, 64,158,255,244, 78,128, 0, 32, 56, 33, 0, 24, /* 0x f0 */
|
||||||
129, 33, 0, 0, 75,255,255,229, 75,255,255,225,128,159,255,248, /* 0x 100 */
|
125, 8, 2,166,129, 33, 0, 0, 75,255,255,225, 75,255,255,221, /* 0x 100 */
|
||||||
85, 30, 0, 38,127,231,251,120,127,164,248, 80, 56,161,248, 0, /* 0x 110 */
|
128,159,255,248, 85, 30, 0, 38,127,231,251,120,127,164,248, 80, /* 0x 110 */
|
||||||
59,189,255,248, 56,132,255,140, 56,125, 0,116, 56, 33,247,240, /* 0x 120 */
|
56,161,248, 0, 59,189,255,248, 56,132,255,140, 56,125, 0,116, /* 0x 120 */
|
||||||
128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120,127,163,235,120, /* 0x 130 */
|
56, 33,247,232,128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120, /* 0x 130 */
|
||||||
124,157,240, 80, 72, 0, 0, 81,127,232, 3,166,184, 65, 8, 20, /* 0x 140 */
|
127,163,235,120,124,157,240, 80, 72, 0, 0, 81,127,232, 3,166, /* 0x 140 */
|
||||||
128, 33, 8, 16, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, /* 0x 150 */
|
184, 65, 8, 28,128, 33, 8, 24, 78,128, 0, 32, 56, 0, 0, 90, /* 0x 150 */
|
||||||
64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 160 */
|
68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, /* 0x 160 */
|
||||||
75,255,255,236, 56, 0, 0, 3, 75,255,255,228, 56, 0, 0, 5, /* 0x 170 */
|
56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, 75,255,255,228, /* 0x 170 */
|
||||||
75,255,255,220, 56, 0, 0, 6, 75,255,255,212, 56, 0, 0,125, /* 0x 180 */
|
56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, 75,255,255,212, /* 0x 180 */
|
||||||
75,255,255,204, 56, 0, 0, 91, 75,255,255,196, 56, 0, 0, 45, /* 0x 190 */
|
56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, 75,255,255,196, /* 0x 190 */
|
||||||
75,255,255,188,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 1a0 */
|
56, 0, 0, 45, 75,255,255,188,124, 8, 2,166,148, 33,255,240, /* 0x 1a0 */
|
||||||
128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 1b0 */
|
144, 1, 0, 20,128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, /* 0x 1b0 */
|
||||||
56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, 65,158, 0, 28, /* 0x 1c0 */
|
64,188, 0, 12, 56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, /* 0x 1c0 */
|
||||||
124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 1d0 */
|
65,158, 0, 28,124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1, /* 0x 1d0 */
|
||||||
56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1e0 */
|
152, 4, 0, 0, 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0, /* 0x 1e0 */
|
||||||
124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20, /* 0x 1f0 */
|
129, 35, 0, 4,124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20, /* 0x 1f0 */
|
||||||
124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32, /* 0x 200 */
|
125, 41, 42, 20,124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, /* 0x 200 */
|
||||||
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0, /* 0x 210 */
|
78,128, 0, 32,124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, /* 0x 210 */
|
||||||
191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120, /* 0x 220 */
|
128, 4, 0, 0,191,129, 0, 48, 47,128, 0, 0,124,159, 35,120, /* 0x 220 */
|
||||||
124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12, /* 0x 230 */
|
124,126, 27,120,124,188, 43,120,124,221, 51,120, 65,158, 1, 36, /* 0x 230 */
|
||||||
127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 240 */
|
56,160, 0, 12,127,195,243,120, 56,129, 0, 16, 75,255,255, 93, /* 0x 240 */
|
||||||
128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 250 */
|
129, 33, 0, 16,128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, /* 0x 250 */
|
||||||
96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 260 */
|
60, 0, 33, 88, 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28, /* 0x 260 */
|
||||||
47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 270 */
|
128, 30, 0, 0, 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, /* 0x 270 */
|
||||||
64,190, 0, 12, 56, 96, 0,127, 75,255,254,229,127, 5, 72, 64, /* 0x 280 */
|
47,133, 0, 0, 64,190, 0, 12, 56, 96, 0,127, 75,255,254,229, /* 0x 280 */
|
||||||
65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 290 */
|
127, 5, 72, 64, 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, /* 0x 290 */
|
||||||
128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4, /* 0x 2a0 */
|
65,189,255,232,128, 31, 0, 4, 64,152, 0,136,124,164, 43,120, /* 0x 2a0 */
|
||||||
124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32, /* 0x 2b0 */
|
128,126, 0, 4,124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24, /* 0x 2b0 */
|
||||||
127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184, /* 0x 2c0 */
|
145, 33, 0, 32,127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, /* 0x 2c0 */
|
||||||
128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168, /* 0x 2d0 */
|
64,190,255,184,128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, /* 0x 2d0 */
|
||||||
136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 2e0 */
|
64,190,255,168,136,193, 0, 25, 49, 61,255,255,124, 9,233, 16, /* 0x 2e0 */
|
||||||
85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 2f0 */
|
125, 38, 0,208, 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20, /* 0x 2f0 */
|
||||||
136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4, /* 0x 300 */
|
128,127, 0, 4,136,161, 0, 26,127,168, 3,166, 78,128, 0, 33, /* 0x 300 */
|
||||||
129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 310 */
|
128, 30, 0, 4,129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20, /* 0x 310 */
|
||||||
144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 320 */
|
125, 43, 72, 80,144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16, /* 0x 320 */
|
||||||
127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0, /* 0x 330 */
|
124, 4, 3,120,127,195,243,120, 75,255,254,113,129, 97, 0, 16, /* 0x 330 */
|
||||||
128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 340 */
|
129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0, /* 0x 340 */
|
||||||
144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68, /* 0x 350 */
|
124, 0, 90, 20,144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224, /* 0x 350 */
|
||||||
187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32, /* 0x 360 */
|
128, 1, 0, 68,187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, /* 0x 360 */
|
||||||
44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255,125, 96, 33, 16, /* 0x 370 */
|
78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255, /* 0x 370 */
|
||||||
128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, 33, 73, 0, 0, /* 0x 380 */
|
125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, /* 0x 380 */
|
||||||
125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, 65,162, 0, 16, /* 0x 390 */
|
33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, /* 0x 390 */
|
||||||
144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, 56, 99, 0, 8, /* 0x 3a0 */
|
65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, /* 0x 3a0 */
|
||||||
75,255,255,208,124, 8, 2,166,148, 33,255,160,144, 1, 0,100, /* 0x 3b0 */
|
56, 99, 0, 8, 75,255,255,208,124, 8, 2,166,148, 33,255,160, /* 0x 3b0 */
|
||||||
160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38,129, 35, 0, 28, /* 0x 3c0 */
|
144, 1, 0,100,160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38, /* 0x 3c0 */
|
||||||
104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208,190, 65, 0, 40, /* 0x 3d0 */
|
129, 35, 0, 28,104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208, /* 0x 3d0 */
|
||||||
127,163, 74, 20,124,121, 27,120, 84, 3, 46,246,145,129, 0, 36, /* 0x 3e0 */
|
190, 65, 0, 40,127,163, 74, 20,124,121, 27,120, 84, 3, 46,246, /* 0x 3e0 */
|
||||||
124,151, 35,120,124,178, 43,120,124,211, 51,120,124,244, 59,120, /* 0x 3f0 */
|
145,129, 0, 36,124,151, 35,120,124,178, 43,120,124,211, 51,120, /* 0x 3f0 */
|
||||||
125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, 59,224,255,255, /* 0x 400 */
|
124,244, 59,120,125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, /* 0x 400 */
|
||||||
59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1,125, 73, 3,166, /* 0x 410 */
|
59,224,255,255, 59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1, /* 0x 410 */
|
||||||
128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40,129, 43, 0, 8, /* 0x 420 */
|
125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40, /* 0x 420 */
|
||||||
127,137,248, 64, 64,156, 0, 8,125, 63, 75,120,128, 11, 0, 20, /* 0x 430 */
|
129, 43, 0, 8,127,137,248, 64, 64,156, 0, 8,125, 63, 75,120, /* 0x 430 */
|
||||||
124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, /* 0x 440 */
|
128, 11, 0, 20,124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8, /* 0x 440 */
|
||||||
57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38,125, 63,240, 80, /* 0x 450 */
|
124, 30, 3,120, 57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38, /* 0x 450 */
|
||||||
57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120,127,196,243,120, /* 0x 460 */
|
125, 63,240, 80, 57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120, /* 0x 460 */
|
||||||
127,227,251,120, 56,160, 0, 0, 56,224,255,255, 57, 0, 0, 0, /* 0x 470 */
|
127,196,243,120,127,227,251,120, 56,160, 0, 0, 56,224,255,255, /* 0x 470 */
|
||||||
75,255,252,217,160, 25, 0, 44, 58,192, 0, 0,127,150, 0, 0, /* 0x 480 */
|
57, 0, 0, 0, 75,255,252,217,160, 25, 0, 44, 58,192, 0, 0, /* 0x 480 */
|
||||||
124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80, 64,156, 1,128, /* 0x 490 */
|
127,150, 0, 0,124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80, /* 0x 490 */
|
||||||
46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, 47,128, 0, 6, /* 0x 4a0 */
|
64,156, 1,128, 46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, /* 0x 4a0 */
|
||||||
64,190, 0, 28,128,189, 0, 8,126, 99,155,120,124,165,194, 20, /* 0x 4b0 */
|
47,128, 0, 6, 64,190, 0, 28,128,189, 0, 8,126, 99,155,120, /* 0x 4b0 */
|
||||||
56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64,128, 29, 0, 0, /* 0x 4c0 */
|
124,165,194, 20, 56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64, /* 0x 4c0 */
|
||||||
47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24,129, 93, 0, 8, /* 0x 4d0 */
|
128, 29, 0, 0, 47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24, /* 0x 4d0 */
|
||||||
61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64,129,125, 0, 20, /* 0x 4e0 */
|
129, 93, 0, 8, 61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64, /* 0x 4e0 */
|
||||||
125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255,124,160,185, 16, /* 0x 4f0 */
|
129,125, 0, 20,125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255, /* 0x 4f0 */
|
||||||
128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, 84,165, 8, 60, /* 0x 500 */
|
124,160,185, 16,128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, /* 0x 500 */
|
||||||
127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20,127,128,242, 20, /* 0x 510 */
|
84,165, 8, 60,127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20, /* 0x 510 */
|
||||||
127,255,194, 20,127,123,194, 20,124,165,211,120, 65,146, 0, 12, /* 0x 520 */
|
127,128,242, 20,127,255,194, 20,127,123,194, 20,124,165,211,120, /* 0x 520 */
|
||||||
56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, 64,146, 0, 12, /* 0x 530 */
|
65,146, 0, 12, 56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, /* 0x 530 */
|
||||||
126, 71,147,120, 72, 0, 0, 8, 56,224,255,255,129, 29, 0, 4, /* 0x 540 */
|
64,146, 0, 12,126, 71,147,120, 72, 0, 0, 8, 56,224,255,255, /* 0x 540 */
|
||||||
127,227,251,120,125, 30, 64, 80,127,132,227,120, 75,255,251,253, /* 0x 550 */
|
129, 29, 0, 4,127,227,251,120,125, 30, 64, 80,127,132,227,120, /* 0x 550 */
|
||||||
127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24,126,227,187,120, /* 0x 560 */
|
75,255,251,253,127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24, /* 0x 560 */
|
||||||
56,129, 0, 16,126,133,163,120,126,166,171,120, 75,255,252,149, /* 0x 570 */
|
126,227,187,120, 56,129, 0, 16,126,133,163,120,126,166,171,120, /* 0x 570 */
|
||||||
115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, 65,130, 0, 36, /* 0x 580 */
|
75,255,252,149,115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, /* 0x 580 */
|
||||||
47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24,127,201, 3,166, /* 0x 590 */
|
65,130, 0, 36, 47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24, /* 0x 590 */
|
||||||
56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, 66, 0,255,248, /* 0x 5a0 */
|
127,201, 3,166, 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, /* 0x 5a0 */
|
||||||
65,178, 0, 36,127,227,251,120,127,132,227,120,127, 69,211,120, /* 0x 5b0 */
|
66, 0,255,248, 65,178, 0, 36,127,227,251,120,127,132,227,120, /* 0x 5b0 */
|
||||||
75,255,251,205, 47,131, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 5c0 */
|
127, 69,211,120, 75,255,251,205, 47,131, 0, 0, 65,190, 0, 12, /* 0x 5c0 */
|
||||||
75,255,251,157,124, 28,242, 20,127,255, 2, 20,127,159,216, 64, /* 0x 5d0 */
|
56, 96, 0,127, 75,255,251,157,124, 28,242, 20,127,255, 2, 20, /* 0x 5d0 */
|
||||||
64,188, 0, 40,124,159,216, 80,127, 69,211,120,127,227,251,120, /* 0x 5e0 */
|
127,159,216, 64, 64,188, 0, 40,124,159,216, 80,127, 69,211,120, /* 0x 5e0 */
|
||||||
56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,251, 93, /* 0x 5f0 */
|
127,227,251,120, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, /* 0x 5f0 */
|
||||||
127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, 58,214, 0, 1, /* 0x 600 */
|
75,255,251, 93,127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, /* 0x 600 */
|
||||||
127,150, 0, 0, 59,189, 0, 32, 75,255,254,132,128,121, 0, 24, /* 0x 610 */
|
58,214, 0, 1,127,150, 0, 0, 59,189, 0, 32, 75,255,254,132, /* 0x 610 */
|
||||||
128, 1, 0,100,129,129, 0, 36,124, 99,194, 20,124, 8, 3,166, /* 0x 620 */
|
128,121, 0, 24,128, 1, 0,100,129,129, 0, 36,124, 99,194, 20, /* 0x 620 */
|
||||||
186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, 78,128, 0, 32, /* 0x 630 */
|
124, 8, 3,166,186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, /* 0x 630 */
|
||||||
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, 56,132,255,232, /* 0x 640 */
|
78,128, 0, 32,124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, /* 0x 640 */
|
||||||
56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8,128, 3, 0, 24, /* 0x 650 */
|
56,132,255,232, 56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8, /* 0x 650 */
|
||||||
191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120,129,129, 0, 12, /* 0x 660 */
|
128, 3, 0, 24,191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120, /* 0x 660 */
|
||||||
124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8, 56,129, 0, 16, /* 0x 670 */
|
129,129, 0, 12,124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8, /* 0x 670 */
|
||||||
59,223, 0, 52,125, 61, 75,120,124,251, 59,120,144, 1, 0, 16, /* 0x 680 */
|
56,129, 0, 16, 59,223, 0, 52,125, 61, 75,120,124,251, 59,120, /* 0x 680 */
|
||||||
125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28,147,225, 0, 20, /* 0x 690 */
|
144, 1, 0, 16,125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28, /* 0x 690 */
|
||||||
75,255,251,113,128,190, 0, 8,127,163,235,120, 56,165, 0, 52, /* 0x 6a0 */
|
147,225, 0, 20, 75,255,251,113,128,190, 0, 8,127,163,235,120, /* 0x 6a0 */
|
||||||
56,128, 0, 3, 75,255,252,189,160,191, 0, 44,127,163,235,120, /* 0x 6b0 */
|
56,165, 0, 52, 56,128, 0, 3, 75,255,252,189,160,191, 0, 44, /* 0x 6b0 */
|
||||||
56,128, 0, 5, 75,255,252,173,128,191, 0, 24,127,163,235,120, /* 0x 6c0 */
|
127,163,235,120, 56,128, 0, 5, 75,255,252,173,128,191, 0, 24, /* 0x 6c0 */
|
||||||
56,128, 0, 9, 75,255,252,157,127,103,219,120,127,136,227,120, /* 0x 6d0 */
|
127,163,235,120, 56,128, 0, 9, 75,255,252,157,127,103,219,120, /* 0x 6d0 */
|
||||||
127,227,251,120,127,166,235,120, 56,129, 0, 24, 56,160, 0, 0, /* 0x 6e0 */
|
127,136,227,120,127,227,251,120,127,166,235,120, 56,129, 0, 24, /* 0x 6e0 */
|
||||||
75,255,252,197,160, 31, 0, 44,124,124, 27,120, 59, 96, 0, 0, /* 0x 6f0 */
|
56,160, 0, 0, 75,255,252,197,160, 31, 0, 44,124,124, 27,120, /* 0x 6f0 */
|
||||||
127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, 59,123, 0, 1, /* 0x 700 */
|
59, 96, 0, 0,127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, /* 0x 700 */
|
||||||
47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0, 64,190, 0, 88, /* 0x 710 */
|
59,123, 0, 1, 47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0, /* 0x 710 */
|
||||||
128,126, 0, 8, 75,255,250, 89,124,125, 27,121,127,228,251,120, /* 0x 720 */
|
64,190, 0, 88,128,126, 0, 8, 75,255,250, 89,124,125, 27,121, /* 0x 720 */
|
||||||
56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61, 47,131, 2, 0, /* 0x 730 */
|
127,228,251,120, 56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61, /* 0x 730 */
|
||||||
56,128, 0, 0,127,227,251,120,127,165,235,120, 56,192, 0, 0, /* 0x 740 */
|
47,131, 2, 0, 56,128, 0, 0,127,227,251,120,127,165,235,120, /* 0x 740 */
|
||||||
56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 750 */
|
56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, /* 0x 750 */
|
||||||
75,255,250, 13, 75,255,252, 81,124,124, 27,120,127,163,235,120, /* 0x 760 */
|
56, 96, 0,127, 75,255,250, 13, 75,255,252, 81,124,124, 27,120, /* 0x 760 */
|
||||||
75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32, 75,255,255,132, /* 0x 770 */
|
127,163,235,120, 75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32, /* 0x 770 */
|
||||||
128, 1, 0, 68,127,131,227,120,124, 8, 3,166,187, 97, 0, 44, /* 0x 780 */
|
75,255,255,132,128, 1, 0, 68,127,131,227,120,124, 8, 3,166, /* 0x 780 */
|
||||||
56, 33, 0, 64, 78,128, 0, 32 /* 0x 790 */
|
187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 790 */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/* powerpc-linux.kernel.vmlinux-head.h
|
||||||
|
created from powerpc-linux.kernel.vmlinux-head.bin, 8 (0x8) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 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>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_SIZE 8
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_ADLER32 0x0ec30259
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_CRC32 0xbb153f5c
|
||||||
|
|
||||||
|
unsigned char stub_powerpc_linux_kernel_vmlinux_head[8] = {
|
||||||
|
127,232, 2,166, 72, 0, 0, 1 /* 0x 0 */
|
||||||
|
};
|
||||||
@@ -0,0 +1,588 @@
|
|||||||
|
/* powerpc-linux.kernel.vmlinux.h
|
||||||
|
created from powerpc-linux.kernel.vmlinux.bin, 8823 (0x2277) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 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>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_SIZE 8823
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_ADLER32 0xf9f4e72f
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_CRC32 0x2ccf6e01
|
||||||
|
|
||||||
|
unsigned char stub_powerpc_linux_kernel_vmlinux[8823] = {
|
||||||
|
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||||
|
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||||
|
0, 0, 24,164, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
||||||
|
0, 23, 0, 20, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
|
||||||
|
0, 0, 0, 0, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 40 */
|
||||||
|
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 50 */
|
||||||
|
124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 60 */
|
||||||
|
124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 70 */
|
||||||
|
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 80 */
|
||||||
|
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 90 */
|
||||||
|
66, 0,255,240, 78,128, 0, 32,124, 0, 41,236,125,168, 2,166, /* 0x a0 */
|
||||||
|
40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,124,132, 26, 20, /* 0x b0 */
|
||||||
|
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x c0 */
|
||||||
|
57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,125, 41, 72, 20, /* 0x d0 */
|
||||||
|
76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, /* 0x e0 */
|
||||||
|
124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,141, 3, 0, 1, /* 0x f0 */
|
||||||
|
157, 5, 0, 1, 75,255,255,213, 65,129,255,244, 56,224, 0, 1, /* 0x 100 */
|
||||||
|
75,255,255,201,124,231, 57, 21, 75,255,255,193, 65,160,255,244, /* 0x 110 */
|
||||||
|
52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,140, 67, 0, 1, /* 0x 120 */
|
||||||
|
84,231, 64, 46,124,234, 16,249, 65,130, 0, 0, 75,255,255,157, /* 0x 130 */
|
||||||
|
125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21, 56,224, 0, 1, /* 0x 140 */
|
||||||
|
64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,125, /* 0x 150 */
|
||||||
|
125, 8, 65, 21, 75,255,255,117, 65,160,255,244, 32, 74,242,255, /* 0x 160 */
|
||||||
|
125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1, /* 0x 170 */
|
||||||
|
157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236, /* 0x 180 */
|
||||||
|
124, 7, 26, 44, 75,255,255,112,124, 0, 41,236,125,168, 2,166, /* 0x 190 */
|
||||||
|
40, 7, 0, 5, 64,130, 1, 32,144,166, 0, 0,124,132, 26, 20, /* 0x 1a0 */
|
||||||
|
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 1b0 */
|
||||||
|
57, 64,255,255, 72, 0, 0,240, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 1c0 */
|
||||||
|
56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, /* 0x 1d0 */
|
||||||
|
78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64, /* 0x 1e0 */
|
||||||
|
125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1, /* 0x 1f0 */
|
||||||
|
72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189, /* 0x 200 */
|
||||||
|
124,231, 57, 21,125, 41, 72, 21, 65,162,255,177,124,231, 57, 21, /* 0x 210 */
|
||||||
|
124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216, /* 0x 220 */
|
||||||
|
57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24, /* 0x 230 */
|
||||||
|
140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0, /* 0x 240 */
|
||||||
|
72, 0, 0, 12,125, 41, 72, 21, 65,162,255,113,125, 8, 65, 21, /* 0x 250 */
|
||||||
|
125, 41, 72, 21, 65,162,255,101,125, 8, 65, 21, 64,130, 0, 40, /* 0x 260 */
|
||||||
|
57, 0, 0, 1,125, 41, 72, 21, 65,162,255, 81,125, 8, 65, 21, /* 0x 270 */
|
||||||
|
124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 65, 65,160,255,232, /* 0x 280 */
|
||||||
|
57, 8, 0, 2, 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148, /* 0x 290 */
|
||||||
|
124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, /* 0x 2a0 */
|
||||||
|
66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, /* 0x 2b0 */
|
||||||
|
75,255,255, 44,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 8, /* 0x 2c0 */
|
||||||
|
64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, /* 0x 2d0 */
|
||||||
|
61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255, /* 0x 2e0 */
|
||||||
|
72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, /* 0x 2f0 */
|
||||||
|
124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32, /* 0x 300 */
|
||||||
|
141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, /* 0x 310 */
|
||||||
|
65,162,255,213, 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, /* 0x 320 */
|
||||||
|
56,231,255,255,125, 41, 72, 21, 65,162,255,189,124,231, 57, 20, /* 0x 330 */
|
||||||
|
125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,124, 9, 0, 64, /* 0x 340 */
|
||||||
|
125, 41, 74, 20, 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, /* 0x 350 */
|
||||||
|
52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,140, 67, 0, 1, /* 0x 360 */
|
||||||
|
124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,112, 66, 0, 1, /* 0x 370 */
|
||||||
|
65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x 380 */
|
||||||
|
65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,124, 9, 0, 64, /* 0x 390 */
|
||||||
|
125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,125, 41, 72, 21, /* 0x 3a0 */
|
||||||
|
65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x 3b0 */
|
||||||
|
65,162,255, 53, 65,160,255,232, 57, 8, 0, 2, 72, 0, 0, 16, /* 0x 3c0 */
|
||||||
|
125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20, 32,234,250,255, /* 0x 3d0 */
|
||||||
|
57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166, /* 0x 3e0 */
|
||||||
|
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 3f0 */
|
||||||
|
124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16, 40, 7, 0, 14, /* 0x 400 */
|
||||||
|
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 410 */
|
||||||
|
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8, /* 0x 420 */
|
||||||
|
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 430 */
|
||||||
|
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 440 */
|
||||||
|
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 450 */
|
||||||
|
148, 3,255,252,124, 1, 24, 64, 65,128,255,248,144,193, 0, 0, /* 0x 460 */
|
||||||
|
136, 4,255,255, 56,193, 0, 8, 56, 97, 0, 12, 84, 11,225, 62, /* 0x 470 */
|
||||||
|
84, 0, 7, 62,152, 67, 0, 2,153, 99, 0, 1,152, 3, 0, 0, /* 0x 480 */
|
||||||
|
124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100, /* 0x 490 */
|
||||||
|
59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0, /* 0x 4a0 */
|
||||||
|
147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166, /* 0x 4b0 */
|
||||||
|
124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54, /* 0x 4c0 */
|
||||||
|
127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, /* 0x 4d0 */
|
||||||
|
57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120, /* 0x 4e0 */
|
||||||
|
124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, /* 0x 4f0 */
|
||||||
|
59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, /* 0x 500 */
|
||||||
|
58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, /* 0x 510 */
|
||||||
|
64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60, /* 0x 520 */
|
||||||
|
125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20, /* 0x 530 */
|
||||||
|
126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0, /* 0x 540 */
|
||||||
|
127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, /* 0x 550 */
|
||||||
|
65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, /* 0x 560 */
|
||||||
|
64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255, /* 0x 570 */
|
||||||
|
98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, /* 0x 580 */
|
||||||
|
86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32, /* 0x 590 */
|
||||||
|
127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46, /* 0x 5a0 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, /* 0x 5b0 */
|
||||||
|
85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172, /* 0x 5c0 */
|
||||||
|
128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8, /* 0x 5d0 */
|
||||||
|
127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, /* 0x 5e0 */
|
||||||
|
32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20, /* 0x 5f0 */
|
||||||
|
124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, /* 0x 600 */
|
||||||
|
64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, /* 0x 610 */
|
||||||
|
99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64, /* 0x 620 */
|
||||||
|
87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, /* 0x 630 */
|
||||||
|
84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176, /* 0x 640 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x 650 */
|
||||||
|
161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x 660 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x 670 */
|
||||||
|
47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, /* 0x 680 */
|
||||||
|
64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, /* 0x 690 */
|
||||||
|
72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, /* 0x 6a0 */
|
||||||
|
65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255, /* 0x 6b0 */
|
||||||
|
65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64, /* 0x 6c0 */
|
||||||
|
84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, /* 0x 6d0 */
|
||||||
|
65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, /* 0x 6e0 */
|
||||||
|
57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254, /* 0x 6f0 */
|
||||||
|
125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, /* 0x 700 */
|
||||||
|
85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, /* 0x 710 */
|
||||||
|
64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16, /* 0x 720 */
|
||||||
|
124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, /* 0x 730 */
|
||||||
|
64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174, /* 0x 740 */
|
||||||
|
59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, /* 0x 750 */
|
||||||
|
47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, /* 0x 760 */
|
||||||
|
58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, /* 0x 770 */
|
||||||
|
84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46, /* 0x 780 */
|
||||||
|
124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, /* 0x 790 */
|
||||||
|
65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x 7a0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254, /* 0x 7b0 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, /* 0x 7c0 */
|
||||||
|
47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128, /* 0x 7d0 */
|
||||||
|
126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0, /* 0x 7e0 */
|
||||||
|
127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, /* 0x 7f0 */
|
||||||
|
56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, /* 0x 800 */
|
||||||
|
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, /* 0x 810 */
|
||||||
|
65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, /* 0x 820 */
|
||||||
|
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x 830 */
|
||||||
|
161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x 840 */
|
||||||
|
64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, /* 0x 850 */
|
||||||
|
86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60, /* 0x 860 */
|
||||||
|
176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32, /* 0x 870 */
|
||||||
|
127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46, /* 0x 880 */
|
||||||
|
124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, /* 0x 890 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, /* 0x 8a0 */
|
||||||
|
32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x 8b0 */
|
||||||
|
176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, /* 0x 8c0 */
|
||||||
|
57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80, /* 0x 8d0 */
|
||||||
|
127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, /* 0x 8e0 */
|
||||||
|
72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 8f0 */
|
||||||
|
125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80, /* 0x 900 */
|
||||||
|
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 910 */
|
||||||
|
176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208, /* 0x 920 */
|
||||||
|
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x 930 */
|
||||||
|
57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214, /* 0x 940 */
|
||||||
|
127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112, /* 0x 950 */
|
||||||
|
124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176, /* 0x 960 */
|
||||||
|
72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x 970 */
|
||||||
|
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32, /* 0x 980 */
|
||||||
|
127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46, /* 0x 990 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, /* 0x 9a0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, /* 0x 9b0 */
|
||||||
|
32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x 9c0 */
|
||||||
|
126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126, /* 0x 9d0 */
|
||||||
|
124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80, /* 0x 9e0 */
|
||||||
|
125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120, /* 0x 9f0 */
|
||||||
|
125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, /* 0x a00 */
|
||||||
|
56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64, /* 0x a10 */
|
||||||
|
65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, /* 0x a20 */
|
||||||
|
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x a30 */
|
||||||
|
161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x a40 */
|
||||||
|
64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20, /* 0x a50 */
|
||||||
|
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, /* 0x a60 */
|
||||||
|
59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156, /* 0x a70 */
|
||||||
|
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x a80 */
|
||||||
|
124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, /* 0x a90 */
|
||||||
|
65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x aa0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254, /* 0x ab0 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, /* 0x ac0 */
|
||||||
|
84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20, /* 0x ad0 */
|
||||||
|
125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3, /* 0x ae0 */
|
||||||
|
176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80, /* 0x af0 */
|
||||||
|
124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, /* 0x b00 */
|
||||||
|
59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, /* 0x b10 */
|
||||||
|
99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60, /* 0x b20 */
|
||||||
|
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x b30 */
|
||||||
|
65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x b40 */
|
||||||
|
125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x b50 */
|
||||||
|
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x b60 */
|
||||||
|
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x b70 */
|
||||||
|
125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x b80 */
|
||||||
|
56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, /* 0x b90 */
|
||||||
|
47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, /* 0x ba0 */
|
||||||
|
65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, /* 0x bb0 */
|
||||||
|
64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, /* 0x bc0 */
|
||||||
|
56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, /* 0x bd0 */
|
||||||
|
99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60, /* 0x be0 */
|
||||||
|
127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, /* 0x bf0 */
|
||||||
|
65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x c00 */
|
||||||
|
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x c10 */
|
||||||
|
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x c20 */
|
||||||
|
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x c30 */
|
||||||
|
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x c40 */
|
||||||
|
56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192, /* 0x c50 */
|
||||||
|
47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13, /* 0x c60 */
|
||||||
|
124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2, /* 0x c70 */
|
||||||
|
125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60, /* 0x c80 */
|
||||||
|
125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, /* 0x c90 */
|
||||||
|
72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, /* 0x ca0 */
|
||||||
|
97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, /* 0x cb0 */
|
||||||
|
87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, /* 0x cc0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126, /* 0x cd0 */
|
||||||
|
127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, /* 0x ce0 */
|
||||||
|
66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, /* 0x cf0 */
|
||||||
|
56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1, /* 0x d00 */
|
||||||
|
59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, /* 0x d10 */
|
||||||
|
84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208, /* 0x d20 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x d30 */
|
||||||
|
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x d40 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x d50 */
|
||||||
|
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x d60 */
|
||||||
|
124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1, /* 0x d70 */
|
||||||
|
125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, /* 0x d80 */
|
||||||
|
55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, /* 0x d90 */
|
||||||
|
65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255, /* 0x da0 */
|
||||||
|
127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16, /* 0x db0 */
|
||||||
|
124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, /* 0x dc0 */
|
||||||
|
64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255, /* 0x dd0 */
|
||||||
|
96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, /* 0x de0 */
|
||||||
|
56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, /* 0x df0 */
|
||||||
|
72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80, /* 0x e00 */
|
||||||
|
144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100, /* 0x e10 */
|
||||||
|
185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,124, 8, 2,166, /* 0x e20 */
|
||||||
|
148, 33,255,160,189,193, 0, 24,144, 1, 0,100, 59, 32, 0, 0, /* 0x e30 */
|
||||||
|
137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0,147, 38, 0, 0, /* 0x e40 */
|
||||||
|
147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166,124, 18, 2, 20, /* 0x e50 */
|
||||||
|
57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54,127,153, 0, 64, /* 0x e60 */
|
||||||
|
57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, 57, 41,255,255, /* 0x e70 */
|
||||||
|
57,107,255,255,145, 33, 0, 8,124,206, 51,120,124,147, 35,120, /* 0x e80 */
|
||||||
|
124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, 59, 3, 0, 4, /* 0x e90 */
|
||||||
|
59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, 58, 32, 0, 1, /* 0x ea0 */
|
||||||
|
58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, 64,156, 0, 28, /* 0x eb0 */
|
||||||
|
124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60,125,120, 3, 46, /* 0x ec0 */
|
||||||
|
57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20,126,108,155,120, /* 0x ed0 */
|
||||||
|
56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,127,140,232, 0, /* 0x ee0 */
|
||||||
|
57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156, /* 0x ef0 */
|
||||||
|
136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, 64,153,255,224, /* 0x f00 */
|
||||||
|
127,153,160, 64, 64,156, 8,100, 62,192, 0,255, 98,214,255,255, /* 0x f10 */
|
||||||
|
128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, 86,224, 32, 54, /* 0x f20 */
|
||||||
|
124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,127,140,232, 0, /* 0x f30 */
|
||||||
|
65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x f40 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, 85, 0,170,254, /* 0x f50 */
|
||||||
|
125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12, /* 0x f60 */
|
||||||
|
47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8,127,224, 6, 48, /* 0x f70 */
|
||||||
|
125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, 32, 7, 8, 0, /* 0x f80 */
|
||||||
|
124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20,124, 6,195, 46, /* 0x f90 */
|
||||||
|
125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, 64,157, 0,180, /* 0x fa0 */
|
||||||
|
124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, 99,123,255,255, /* 0x fb0 */
|
||||||
|
87,255, 8, 60, 87,252, 5,238,127,136,216, 64, 87,128, 8, 60, /* 0x fc0 */
|
||||||
|
84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, 84,169, 64, 46, /* 0x fd0 */
|
||||||
|
124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0, /* 0x fe0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0, /* 0x ff0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x1000 */
|
||||||
|
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, 47, 28, 0, 0, /* 0x1010 */
|
||||||
|
125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, 64,156, 0, 20, /* 0x1020 */
|
||||||
|
176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28, /* 0x1030 */
|
||||||
|
177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12, /* 0x1040 */
|
||||||
|
47,131, 0,255, 64,157,255,108, 47,131, 0,255, 65,157, 0,132, /* 0x1050 */
|
||||||
|
63,224, 0,255, 99,255,255,255,127,136,248, 64, 84,103, 8, 60, /* 0x1060 */
|
||||||
|
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x1070 */
|
||||||
|
65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1080 */
|
||||||
|
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x1090 */
|
||||||
|
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x10a0 */
|
||||||
|
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x10b0 */
|
||||||
|
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x10c0 */
|
||||||
|
125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, 64,157,255,140, /* 0x10d0 */
|
||||||
|
47,151, 0, 3, 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1, /* 0x10e0 */
|
||||||
|
65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9, /* 0x10f0 */
|
||||||
|
65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, 58,247,255,250, /* 0x1100 */
|
||||||
|
72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, 84,224,217,126, /* 0x1110 */
|
||||||
|
124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80, /* 0x1120 */
|
||||||
|
124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, 65,158, 6, 92, /* 0x1130 */
|
||||||
|
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1140 */
|
||||||
|
57,140, 0, 1,161,103, 1,128, 85, 0,170,254,125, 64, 89,214, /* 0x1150 */
|
||||||
|
127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, 47,151, 0, 6, /* 0x1160 */
|
||||||
|
124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128,126, 15,131,120, /* 0x1170 */
|
||||||
|
125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0,127, 81,211,120, /* 0x1180 */
|
||||||
|
64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100, /* 0x1190 */
|
||||||
|
72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x11a0 */
|
||||||
|
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32, /* 0x11b0 */
|
||||||
|
127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46, /* 0x11c0 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,152, /* 0x11d0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0,188, /* 0x11e0 */
|
||||||
|
32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, 86,233, 40, 52, /* 0x11f0 */
|
||||||
|
124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152, /* 0x1200 */
|
||||||
|
125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,127,140,232, 0, /* 0x1210 */
|
||||||
|
65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x1220 */
|
||||||
|
85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, 85, 0,170,254, /* 0x1230 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, 32, 11, 8, 0, /* 0x1240 */
|
||||||
|
47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,224, /* 0x1250 */
|
||||||
|
125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9, /* 0x1260 */
|
||||||
|
64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,127,245, 0,174, /* 0x1270 */
|
||||||
|
125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228, /* 0x1280 */
|
||||||
|
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,125, 10, 64, 80, /* 0x1290 */
|
||||||
|
176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80,127,136,176, 64, /* 0x12a0 */
|
||||||
|
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152, /* 0x12b0 */
|
||||||
|
65,157, 0, 32,127,140,232, 0, 65,158, 4,208,137, 44, 0, 0, /* 0x12c0 */
|
||||||
|
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x12d0 */
|
||||||
|
161,103, 1,176, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x12e0 */
|
||||||
|
64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x12f0 */
|
||||||
|
125, 72, 83,120,126, 41,139,120,176, 7, 1,176, 72, 0, 0,140, /* 0x1300 */
|
||||||
|
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x1310 */
|
||||||
|
124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,127,140,232, 0, /* 0x1320 */
|
||||||
|
65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x1330 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, 85, 0,170,254, /* 0x1340 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0, /* 0x1350 */
|
||||||
|
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 9,131,120, /* 0x1360 */
|
||||||
|
176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,124, 0, 88, 80, /* 0x1370 */
|
||||||
|
125,233,123,120,176, 7, 1,200,124,170, 40, 80,125, 10, 64, 80, /* 0x1380 */
|
||||||
|
126, 15,131,120,126, 48,139,120,127, 81,211,120,125, 58, 75,120, /* 0x1390 */
|
||||||
|
47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11, /* 0x13a0 */
|
||||||
|
124, 23, 3,120, 56,216, 10,104,127,136,176, 64, 65,157, 0, 32, /* 0x13b0 */
|
||||||
|
127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46, /* 0x13c0 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 0, /* 0x13d0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, /* 0x13e0 */
|
||||||
|
32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112, /* 0x13f0 */
|
||||||
|
124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, 59,128, 0, 0, /* 0x1400 */
|
||||||
|
59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156,125, 10, 64, 80, /* 0x1410 */
|
||||||
|
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1420 */
|
||||||
|
176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, 65,158, 3, 92, /* 0x1430 */
|
||||||
|
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1440 */
|
||||||
|
57,140, 0, 1,161,102, 0, 2, 85, 0,170,254,125, 64, 89,214, /* 0x1450 */
|
||||||
|
127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54, /* 0x1460 */
|
||||||
|
125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x1470 */
|
||||||
|
56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3,176, 6, 0, 2, /* 0x1480 */
|
||||||
|
72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1490 */
|
||||||
|
176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, 59,128, 0, 16, /* 0x14a0 */
|
||||||
|
59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, 99,255,255,255, /* 0x14b0 */
|
||||||
|
56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, /* 0x14c0 */
|
||||||
|
84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, 65,154, 2,188, /* 0x14d0 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x14e0 */
|
||||||
|
125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x14f0 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x1500 */
|
||||||
|
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x1510 */
|
||||||
|
124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,103, 0, 1, /* 0x1520 */
|
||||||
|
125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, 47,151, 0, 3, /* 0x1530 */
|
||||||
|
124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, 65,157, 1,232, /* 0x1540 */
|
||||||
|
47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, 64,157, 0, 8, /* 0x1550 */
|
||||||
|
57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, 56,201, 3, 96, /* 0x1560 */
|
||||||
|
57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, 99,255,255,255, /* 0x1570 */
|
||||||
|
56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,127, 12,232, 0, /* 0x1580 */
|
||||||
|
84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, 65,154, 1,252, /* 0x1590 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x15a0 */
|
||||||
|
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x15b0 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x15c0 */
|
||||||
|
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x15d0 */
|
||||||
|
124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1, /* 0x15e0 */
|
||||||
|
125,102, 59, 46, 66, 0,255,144, 56,132,255,192, 47,132, 0, 3, /* 0x15f0 */
|
||||||
|
124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112, /* 0x1600 */
|
||||||
|
84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,125,105, 3,166, /* 0x1610 */
|
||||||
|
65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60,125, 56, 74, 20, /* 0x1620 */
|
||||||
|
84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100, /* 0x1630 */
|
||||||
|
57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, 97,107,255,255, /* 0x1640 */
|
||||||
|
127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, 87, 90, 8, 60, /* 0x1650 */
|
||||||
|
65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46, /* 0x1660 */
|
||||||
|
57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,127,133, 64, 64, /* 0x1670 */
|
||||||
|
65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196, /* 0x1680 */
|
||||||
|
56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, 56,216, 6, 68, /* 0x1690 */
|
||||||
|
60,128, 0,255, 96,132,255,255, 59,128, 0, 1, 59,224, 0, 1, /* 0x16a0 */
|
||||||
|
127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, 84,169, 64, 46, /* 0x16b0 */
|
||||||
|
124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0, /* 0x16c0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, /* 0x16d0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x16e0 */
|
||||||
|
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80, /* 0x16f0 */
|
||||||
|
125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, /* 0x1700 */
|
||||||
|
72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46, /* 0x1710 */
|
||||||
|
127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, 55, 90, 0, 1, /* 0x1720 */
|
||||||
|
65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, 65,157, 0, 92, /* 0x1730 */
|
||||||
|
124, 26,200, 80,127,245, 0,174, 56, 99,255,255,127,249,169,174, /* 0x1740 */
|
||||||
|
59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16,124, 20,200, 16, /* 0x1750 */
|
||||||
|
124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, 64,130,255,212, /* 0x1760 */
|
||||||
|
127,153,160, 64, 65,156,247,172, 60, 0, 0,255, 96, 0,255,255, /* 0x1770 */
|
||||||
|
127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, 56, 96, 0, 1, /* 0x1780 */
|
||||||
|
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1790 */
|
||||||
|
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x17a0 */
|
||||||
|
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x17b0 */
|
||||||
|
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 8, /* 0x17c0 */
|
||||||
|
124, 8, 3,166, 78,128, 0, 32, 85, 80, 88, 33,161,216,208,213, /* 0x17d0 */
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17e0 */
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 45,116,109,112, 47,112,111,119,101, /* 0x17f0 */
|
||||||
|
114,112, 99, 45,108,105,110,117,120, 46,107,101,114,110,101,108, /* 0x1800 */
|
||||||
|
46,118,109,108,105,110,117,120, 46, 98,105,110, 58, 32, 32, 32, /* 0x1810 */
|
||||||
|
32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108, /* 0x1820 */
|
||||||
|
102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99, /* 0x1830 */
|
||||||
|
116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x1840 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x1850 */
|
||||||
|
32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x1860 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x1870 */
|
||||||
|
32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x1880 */
|
||||||
|
32, 76, 73, 78, 85, 88, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1890 */
|
||||||
|
48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18a0 */
|
||||||
|
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x18b0 */
|
||||||
|
48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x18c0 */
|
||||||
|
84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x18d0 */
|
||||||
|
65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 76, 73, 78, 85, 88, /* 0x18e0 */
|
||||||
|
48, 49, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */
|
||||||
|
56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1900 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 99, 32, /* 0x1910 */
|
||||||
|
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1920 */
|
||||||
|
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1930 */
|
||||||
|
10, 32, 32, 50, 32, 76, 73, 78, 85, 88, 48, 50, 48, 32, 32, 32, /* 0x1940 */
|
||||||
|
32, 32, 32, 48, 48, 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, /* 0x1950 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1960 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, /* 0x1970 */
|
||||||
|
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1980 */
|
||||||
|
78, 76, 89, 10, 32, 32, 51, 32, 76, 73, 78, 85, 88, 48, 51, 48, /* 0x1990 */
|
||||||
|
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x19a0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x19b0 */
|
||||||
|
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 56, 32, 32, 50, 42, /* 0x19c0 */
|
||||||
|
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x19d0 */
|
||||||
|
65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, /* 0x19e0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, /* 0x19f0 */
|
||||||
|
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a00 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 56, 32, /* 0x1a10 */
|
||||||
|
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1a20 */
|
||||||
|
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1a30 */
|
||||||
|
10, 32, 32, 53, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, /* 0x1a40 */
|
||||||
|
32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, /* 0x1a50 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1a60 */
|
||||||
|
32, 48, 48, 48, 48, 48, 49, 57, 56, 32, 32, 50, 42, 42, 48, 32, /* 0x1a70 */
|
||||||
|
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1a80 */
|
||||||
|
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 78, /* 0x1a90 */
|
||||||
|
82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1aa0 */
|
||||||
|
48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ab0 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ac0 */
|
||||||
|
50, 99, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1ad0 */
|
||||||
|
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1ae0 */
|
||||||
|
79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 32, 32, 32, /* 0x1af0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1b00 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1b10 */
|
||||||
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 99, 32, 32, 50, /* 0x1b20 */
|
||||||
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1b30 */
|
||||||
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, /* 0x1b40 */
|
||||||
|
95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1b50 */
|
||||||
|
56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1b60 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 99, /* 0x1b70 */
|
||||||
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1b80 */
|
||||||
|
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1b90 */
|
||||||
|
89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, /* 0x1ba0 */
|
||||||
|
32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, /* 0x1bb0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */
|
||||||
|
32, 32, 48, 48, 48, 48, 48, 52, 57, 48, 32, 32, 50, 42, 42, 48, /* 0x1bd0 */
|
||||||
|
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1be0 */
|
||||||
|
79, 78, 76, 89, 10, 32, 49, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1bf0 */
|
||||||
|
67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, /* 0x1c00 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c10 */
|
||||||
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48,101, 50, 99, 32, 32, 50, /* 0x1c20 */
|
||||||
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1c30 */
|
||||||
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 76, 90, 77, 65, /* 0x1c40 */
|
||||||
|
95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c50 */
|
||||||
|
49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1c60 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 99, 56, /* 0x1c70 */
|
||||||
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1c80 */
|
||||||
|
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 85, /* 0x1c90 */
|
||||||
|
80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1ca0 */
|
||||||
|
48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1cb0 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x1cc0 */
|
||||||
|
55,100, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1cd0 */
|
||||||
|
78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, /* 0x1ce0 */
|
||||||
|
77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, /* 0x1cf0 */
|
||||||
|
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, /* 0x1d00 */
|
||||||
|
85, 88, 48, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x1d10 */
|
||||||
|
73, 78, 85, 88, 48, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */
|
||||||
|
32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 51, /* 0x1d30 */
|
||||||
|
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, /* 0x1d40 */
|
||||||
|
48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d50 */
|
||||||
|
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x1d60 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1d70 */
|
||||||
|
67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d80 */
|
||||||
|
32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 48, 48, 9, 48, 48, /* 0x1d90 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, 48, 48, 48, 10, /* 0x1da0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1db0 */
|
||||||
|
32, 76, 73, 78, 85, 88, 48, 49, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */
|
||||||
|
48, 48, 32, 76, 73, 78, 85, 88, 48, 49, 48, 10, 48, 48, 48, 48, /* 0x1dd0 */
|
||||||
|
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1de0 */
|
||||||
|
50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x1df0 */
|
||||||
|
66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e00 */
|
||||||
|
100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1e10 */
|
||||||
|
48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e20 */
|
||||||
|
32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, /* 0x1e30 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, /* 0x1e40 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1e50 */
|
||||||
|
90, 77, 65, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, /* 0x1e60 */
|
||||||
|
65, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e70 */
|
||||||
|
100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, /* 0x1e80 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1e90 */
|
||||||
|
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1ea0 */
|
||||||
|
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, /* 0x1eb0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1ec0 */
|
||||||
|
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1ed0 */
|
||||||
|
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, /* 0x1ee0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1ef0 */
|
||||||
|
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1f00 */
|
||||||
|
100, 32, 32, 85, 80, 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, /* 0x1f10 */
|
||||||
|
48, 48, 48, 48, 32, 85, 80, 88, 49, 72, 69, 65, 68, 10, 48, 48, /* 0x1f20 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x1f30 */
|
||||||
|
85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105, /* 0x1f40 */
|
||||||
|
108,116,101,114, 95,108,101,110,103,116,104, 10, 48, 48, 48, 48, /* 0x1f50 */
|
||||||
|
48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x1f60 */
|
||||||
|
68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105,108,116, /* 0x1f70 */
|
||||||
|
101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f80 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x1f90 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32,101,111,102, 95,110,114,118, 10, 10, /* 0x1fa0 */
|
||||||
|
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x1fb0 */
|
||||||
|
68, 83, 32, 70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 48, 48, /* 0x1fc0 */
|
||||||
|
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x1fd0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x1fe0 */
|
||||||
|
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, /* 0x1ff0 */
|
||||||
|
80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x2000 */
|
||||||
|
73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 52, /* 0x2010 */
|
||||||
|
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x2020 */
|
||||||
|
32, 32, 32, 76, 73, 78, 85, 88, 48, 50, 48, 10, 10, 82, 69, 76, /* 0x2030 */
|
||||||
|
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2040 */
|
||||||
|
70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 49, 48, 93, 58, 10, /* 0x2050 */
|
||||||
|
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2060 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2070 */
|
||||||
|
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x2080 */
|
||||||
|
65, 68, 68, 82, 51, 50, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x2090 */
|
||||||
|
101,114, 95,108,101,110,103,116,104, 10, 48, 48, 48, 48, 48, 48, /* 0x20a0 */
|
||||||
|
48, 52, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, /* 0x20b0 */
|
||||||
|
32, 32, 32, 32, 32,102,105,108,116,101,114, 95, 99,116,111, 10, /* 0x20c0 */
|
||||||
|
10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x20d0 */
|
||||||
|
82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, /* 0x20e0 */
|
||||||
|
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x20f0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2100 */
|
||||||
|
69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, /* 0x2110 */
|
||||||
|
95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32,101,111,102, /* 0x2120 */
|
||||||
|
95,110,114,118, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2130 */
|
||||||
|
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2140 */
|
||||||
|
86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2150 */
|
||||||
|
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2160 */
|
||||||
|
32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, /* 0x2170 */
|
||||||
|
82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x2180 */
|
||||||
|
32, 32,101,111,102, 95,110,114,118, 10, 10, 82, 69, 76, 79, 67, /* 0x2190 */
|
||||||
|
65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x21a0 */
|
||||||
|
82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x21b0 */
|
||||||
|
84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21c0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x21d0 */
|
||||||
|
48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, /* 0x21e0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32,101,111,102, 95,110,114,118, 10, 10, /* 0x21f0 */
|
||||||
|
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2200 */
|
||||||
|
68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x2210 */
|
||||||
|
48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x2220 */
|
||||||
|
80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2230 */
|
||||||
|
86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, /* 0x2240 */
|
||||||
|
95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, /* 0x2250 */
|
||||||
|
32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, /* 0x2260 */
|
||||||
|
48, 48, 48, 48, 49, 48, 10 /* 0x2270 */
|
||||||
|
};
|
||||||
@@ -67,7 +67,8 @@ def do_file(fn):
|
|||||||
elif opts.bfdname == "elf32-i386" and opts.elfosabi == "linux":
|
elif opts.bfdname == "elf32-i386" and opts.elfosabi == "linux":
|
||||||
if e_ident[4:7] != "\x01\x01\x01":
|
if e_ident[4:7] != "\x01\x01\x01":
|
||||||
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
||||||
write("\x00Linux\x00\x00\x00")
|
##write("\x00Linux\x00\x00\x00")
|
||||||
|
write("\x00" * 9)
|
||||||
elif opts.bfdname == "elf32-i386" and opts.elfosabi == "openbsd":
|
elif opts.bfdname == "elf32-i386" and opts.elfosabi == "openbsd":
|
||||||
if e_ident[4:7] != "\x01\x01\x01":
|
if e_ident[4:7] != "\x01\x01\x01":
|
||||||
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
||||||
@@ -75,11 +76,13 @@ def do_file(fn):
|
|||||||
elif opts.bfdname == "elf32-powerpc" and opts.elfosabi == "linux":
|
elif opts.bfdname == "elf32-powerpc" and opts.elfosabi == "linux":
|
||||||
if e_ident[4:7] != "\x01\x02\x01":
|
if e_ident[4:7] != "\x01\x02\x01":
|
||||||
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
||||||
write("\x00Linux\x00\x00\x00")
|
##write("\x00Linux\x00\x00\x00")
|
||||||
|
write("\x00" * 9)
|
||||||
elif opts.bfdname == "elf64-x86_64" and opts.elfosabi == "linux":
|
elif opts.bfdname == "elf64-x86_64" and opts.elfosabi == "linux":
|
||||||
if e_ident[4:7] != "\x02\x01\x01":
|
if e_ident[4:7] != "\x02\x01\x01":
|
||||||
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
raise Exception, "%s is not %s" % (fn, opts.bfdname)
|
||||||
write("\x00Linux\x00\x00\x00")
|
##write("\x00Linux\x00\x00\x00")
|
||||||
|
write("\x00" * 9)
|
||||||
else:
|
else:
|
||||||
done = 0
|
done = 0
|
||||||
else:
|
else:
|
||||||
|
|||||||
+38
-27
@@ -54,56 +54,67 @@ def add_dep(state, fn, mode):
|
|||||||
fn = os.path.normcase(fn)
|
fn = os.path.normcase(fn)
|
||||||
if fn in files:
|
if fn in files:
|
||||||
return
|
return
|
||||||
# FIXME: could use samestat() etc.
|
# FIXME: could use os.path.samestat() etc.
|
||||||
files.append(fn)
|
files.append(fn)
|
||||||
files_st[fn] = os.stat(fn)
|
files_st[fn] = os.stat(fn)
|
||||||
|
|
||||||
|
|
||||||
def not_found(l, s, state):
|
def not_found(state, l, inc, fatal=None):
|
||||||
if opts.fatal:
|
if fatal is None:
|
||||||
raise Exception, "%s:%d: include file %s not found" % (state[0], state[2], s)
|
fatal = opts.fatal
|
||||||
|
if fatal:
|
||||||
|
raise Exception, "%s:%d: include file %s not found" % (state[0], state[2], inc)
|
||||||
return l
|
return l
|
||||||
|
|
||||||
|
|
||||||
def handle_inc_c(l, state, ofp):
|
def parse_comment(state, l, comment):
|
||||||
m = re.search(r"^\s*\#\s*include\s+([\"\<].+)", l)
|
cf = {}
|
||||||
|
if not comment: return cf
|
||||||
|
m = re.search(r"gpp_inc:(.+?):", comment.strip())
|
||||||
|
if not m: return cf
|
||||||
|
flags = re.split(r"\s+", m.group(1).strip())
|
||||||
|
for f in flags:
|
||||||
|
assert f, (f, flags, m.groups(), comment)
|
||||||
|
if f == "ignore=0": cf["fatal"] = 1
|
||||||
|
elif f == "ignore=1": cf["fatal"] = 0
|
||||||
|
else:
|
||||||
|
raise Exception, "%s:%d: bad flags %s %s" % (state[0], state[2], f, str(flags))
|
||||||
|
return cf
|
||||||
|
|
||||||
|
|
||||||
|
def handle_inc_c(state, l, ofp):
|
||||||
|
m = re.search(r"^\s*\#\s*include\s+([\"\<])(.+?)([\"\>])(.*)$", l)
|
||||||
if not m:
|
if not m:
|
||||||
return l
|
return l
|
||||||
s = m.group(1).strip()
|
q1, inc, q2, comment = m.groups()
|
||||||
# FIXME: strip comments ?
|
cf = parse_comment(state, l, comment)
|
||||||
if len(s) < 3:
|
if q1 == '<' and q2 == '>':
|
||||||
return not_found(l, s, state)
|
|
||||||
if s[0] == '<' and s[-1] == '>':
|
|
||||||
dirs = opts.includes
|
dirs = opts.includes
|
||||||
elif s[0] == '"' and s[-1] == '"':
|
elif q1 == '"' and q2 == '"':
|
||||||
dirs = [state[1]] + opts.includes
|
dirs = [state[1]] + opts.includes
|
||||||
else:
|
else:
|
||||||
raise Exception, "syntax error: include line " + l
|
raise Exception, "syntax error: include line " + l
|
||||||
inc = s[1:-1]
|
|
||||||
for dir in dirs:
|
for dir in dirs:
|
||||||
fn = os.path.join(dir, inc)
|
fn = os.path.join(dir, inc)
|
||||||
if os.path.isfile(fn):
|
if os.path.isfile(fn):
|
||||||
add_dep(state, fn, s[0] == '<')
|
add_dep(state, fn, q1 == '<')
|
||||||
handle_file(fn, ofp, state)
|
handle_file(fn, ofp, state)
|
||||||
return None
|
return None
|
||||||
return not_found(l, s, state)
|
return not_found(state, l, inc, cf.get("fatal"))
|
||||||
|
|
||||||
|
|
||||||
def handle_inc_nasm(l, state, ofp):
|
def handle_inc_nasm(state, l, ofp):
|
||||||
m = re.search(r"^\s*\%\s*include\s+([\"\<].+)", l)
|
m = re.search(r"^\s*\%\s*include\s+([\"\<])(.+?)([\"\>])(.*)$", l)
|
||||||
if not m:
|
if not m:
|
||||||
return l
|
return l
|
||||||
s = m.group(1).strip()
|
q1, inc, q2, comment = m.groups()
|
||||||
# FIXME: strip comments ?
|
cf = parse_comment(state, l, comment)
|
||||||
if len(s) < 3:
|
if q1 == '<' and q2 == '>':
|
||||||
return not_found(l, s, state)
|
|
||||||
if s[0] == '<' and s[-1] == '>':
|
|
||||||
pass
|
pass
|
||||||
elif s[0] == '"' and s[-1] == '"':
|
elif q1 == '"' and q2 == '"':
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
raise Exception, "syntax error: include line " + l
|
raise Exception, "syntax error: include line " + l
|
||||||
inc = s[1:-1]
|
|
||||||
# info: nasm simply does concat the includes
|
# info: nasm simply does concat the includes
|
||||||
for prefix in opts.includes + [""]:
|
for prefix in opts.includes + [""]:
|
||||||
fn = prefix + inc
|
fn = prefix + inc
|
||||||
@@ -111,7 +122,7 @@ def handle_inc_nasm(l, state, ofp):
|
|||||||
add_dep(state, fn, False)
|
add_dep(state, fn, False)
|
||||||
handle_file(fn, ofp, state)
|
handle_file(fn, ofp, state)
|
||||||
return None
|
return None
|
||||||
return not_found(l, s, state)
|
return not_found(state, l, inc, cf.get("fatal"))
|
||||||
|
|
||||||
|
|
||||||
def handle_file(ifn, ofp, parent_state=None):
|
def handle_file(ifn, ofp, parent_state=None):
|
||||||
@@ -121,9 +132,9 @@ def handle_file(ifn, ofp, parent_state=None):
|
|||||||
state[2] += 1 # line counter
|
state[2] += 1 # line counter
|
||||||
l = l.rstrip("\n")
|
l = l.rstrip("\n")
|
||||||
if opts.mode == "c":
|
if opts.mode == "c":
|
||||||
l = handle_inc_c(l, state, ofp)
|
l = handle_inc_c(state, l, ofp)
|
||||||
elif opts.mode == "nasm":
|
elif opts.mode == "nasm":
|
||||||
l = handle_inc_nasm(l, state, ofp)
|
l = handle_inc_nasm(state, l, ofp)
|
||||||
if l is not None:
|
if l is not None:
|
||||||
ofp.write(l + "\n")
|
ofp.write(l + "\n")
|
||||||
|
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ def create_bindump(bindump_fn, dump_fn):
|
|||||||
e = f[1], int(f[2], 16), int(f[5], 16), int(f[6][3:], 10), len(sections)
|
e = f[1], int(f[2], 16), int(f[5], 16), int(f[6][3:], 10), len(sections)
|
||||||
sections.append(e)
|
sections.append(e)
|
||||||
assert not section_names.has_key(e[0]), e
|
assert not section_names.has_key(e[0]), e
|
||||||
|
assert not e[0].endswith(":"), ("bad section name", e)
|
||||||
section_names[e[0]] = e
|
section_names[e[0]] = e
|
||||||
##print sections
|
##print sections
|
||||||
# preprocessSymbols
|
# preprocessSymbols
|
||||||
@@ -100,6 +101,8 @@ def create_bindump(bindump_fn, dump_fn):
|
|||||||
assert f[1] in "gl", (l, f)
|
assert f[1] in "gl", (l, f)
|
||||||
assert f[2] in "dFO", (l, f)
|
assert f[2] in "dFO", (l, f)
|
||||||
section = section_names[f[3]]
|
section = section_names[f[3]]
|
||||||
|
elif len(f) == 5 and f[2] == "*ABS*":
|
||||||
|
pass
|
||||||
elif len(f) == 5:
|
elif len(f) == 5:
|
||||||
assert f[1] in "gl", (l, f)
|
assert f[1] in "gl", (l, f)
|
||||||
section = section_names[f[2]]
|
section = section_names[f[2]]
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
|
|||||||
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
||||||
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
||||||
endif
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
vpath %.c $(top_srcdir)/src/stub/src/c
|
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||||
|
|
||||||
STUBS =
|
STUBS =
|
||||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
include $(top_srcdir)/src/stub/src/c/Makevars.lzma
|
||||||
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
STUBS += lzma_d_cf.S lzma_d_cs.S
|
STUBS += lzma_d_cf.S lzma_d_cs.S
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -36,6 +38,7 @@ $c += -Os -fomit-frame-pointer
|
|||||||
$c += -fno-unit-at-a-time
|
$c += -fno-unit-at-a-time
|
||||||
$c += -ffunction-sections
|
$c += -ffunction-sections
|
||||||
$c += -fwrapv
|
$c += -fwrapv
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
$c += -I$(UPX_LZMADIR)
|
$c += -I$(UPX_LZMADIR)
|
||||||
$c += -I$(top_srcdir)/src
|
$c += -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
|
|||||||
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
||||||
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
||||||
endif
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
vpath %.c $(top_srcdir)/src/stub/src/c
|
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||||
|
|
||||||
STUBS =
|
STUBS =
|
||||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
include $(top_srcdir)/src/stub/src/c/Makevars.lzma
|
||||||
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
STUBS += lzma_d_cf.S lzma_d_cs.S
|
STUBS += lzma_d_cf.S lzma_d_cs.S
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -39,6 +41,7 @@ $c += -Os -fomit-frame-pointer
|
|||||||
$c += -fno-unit-at-a-time
|
$c += -fno-unit-at-a-time
|
||||||
$c += -ffunction-sections
|
$c += -ffunction-sections
|
||||||
$c += -fwrapv
|
$c += -fwrapv
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
$c += -I$(UPX_LZMADIR)
|
$c += -I$(UPX_LZMADIR)
|
||||||
$c += -I$(top_srcdir)/src
|
$c += -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,11 @@
|
|||||||
#include "lzma_d_cs.S"
|
#include "lzma_d_cs.S"
|
||||||
|
|
||||||
section LZMA_DEC20
|
section LZMA_DEC20
|
||||||
|
#if 1 /*{*/
|
||||||
#include "lzma_d_cf.S"
|
#include "lzma_d_cf.S"
|
||||||
|
#else /*}{*/
|
||||||
|
#include "lzma_d-arm.S"
|
||||||
|
#endif /*}*/
|
||||||
|
|
||||||
section LZMA_DEC30
|
section LZMA_DEC30
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
|
|||||||
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
||||||
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
||||||
endif
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
vpath %.c $(top_srcdir)/src/stub/src/c
|
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||||
|
|
||||||
STUBS =
|
STUBS =
|
||||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
include $(top_srcdir)/src/stub/src/c/Makevars.lzma
|
||||||
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
STUBS += lzma_d_cf.S lzma_d_cs.S
|
STUBS += lzma_d_cf.S lzma_d_cs.S
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -37,6 +39,7 @@ $c += -Os -fomit-frame-pointer
|
|||||||
$c += -fno-unit-at-a-time
|
$c += -fno-unit-at-a-time
|
||||||
$c += -ffunction-sections
|
$c += -ffunction-sections
|
||||||
$c += -fwrapv
|
$c += -fwrapv
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
$c += -I$(UPX_LZMADIR)
|
$c += -I$(UPX_LZMADIR)
|
||||||
$c += -I$(top_srcdir)/src
|
$c += -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro loadcon8 reg,val8
|
.macro loadcon8 reg,val8
|
||||||
.byte \val8, \reg<<4, 0xa0, 0xe3 /* mov \reg,#\val8 */
|
.long (0xe3<<24)|(0xa0<<16)|((\reg<<4)<<8)+(\val8) /* mov \reg,#\val8 */
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
// vi:ts=8:et:nowrap
|
// vi:ts=8:et:nowrap
|
||||||
|
|||||||
@@ -0,0 +1,296 @@
|
|||||||
|
MAKEFLAGS += -rR
|
||||||
|
.SUFFIXES:
|
||||||
|
.SECONDEXPANSION:
|
||||||
|
|
||||||
|
ifndef top_srcdir
|
||||||
|
__dir_list = . .. ../.. ../../.. ../../../.. ../../../../..
|
||||||
|
__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
|
||||||
|
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
|
||||||
|
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
|
||||||
|
endif
|
||||||
|
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
|
||||||
|
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||||
|
|
||||||
|
STUBS =
|
||||||
|
include $(top_srcdir)/src/stub/src/c/Makevars.lzma
|
||||||
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
STUBS += lzma_d_cf.S lzma_d_cs.S
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
default.targets = all
|
||||||
|
ifeq ($(strip $(STUBS)),)
|
||||||
|
STUBS = NO_STUBS
|
||||||
|
all.targets =
|
||||||
|
endif
|
||||||
|
include $(top_srcdir)/src/stub/Makefile
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# //
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
# enumerate the names of all environment variables
|
||||||
|
# FIXME: "origin" does not work for things like "export LC_ALL = C"
|
||||||
|
##__minienv_varlist = $(foreach v,$1,$(if $(findstring environment,$(origin $v)),$v))
|
||||||
|
__minienv_varlist = $(foreach v,$1,$(if $($v),$v))
|
||||||
|
# enumerate the names of all environment variables
|
||||||
|
__minienv_expand = $(foreach v,$(call __minienv_varlist,$1),$v='$($v)')
|
||||||
|
|
||||||
|
DOSBOX = true
|
||||||
|
DOSBOX = dosbox
|
||||||
|
DOSBOX = /usr/bin/time -p dosbox -exit
|
||||||
|
|
||||||
|
ifneq ($(wildcard /usr/bin/wine /usr/local/bin/wine),)
|
||||||
|
WINEENV = @env
|
||||||
|
WINEENV = @env -i $(call __minienv_expand,DISPLAY HOME LANG LC_ALL PATH USER TERM)
|
||||||
|
winedir_s = z:$(shell winepath -s $(realpath $1))
|
||||||
|
winedir_w = $(shell winepath -w $(realpath $1))
|
||||||
|
else
|
||||||
|
WINEENV = false 'WINEENV'
|
||||||
|
winedir_s = $1
|
||||||
|
winedir_w = $1
|
||||||
|
endif
|
||||||
|
|
||||||
|
# work around limitations of wine's cmd.exe
|
||||||
|
define mkbat
|
||||||
|
$(ECHO_E) '@set PATH=$3;%PATH%' > $1
|
||||||
|
$(ECHO_E) '@set INCLUDE=$4' >> $1
|
||||||
|
$(ECHO_E) '@set LIB=$5' >> $1
|
||||||
|
$(ECHO_E) '@set a=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||||
|
$(ECHO_e) '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
$(ECHO_e) '@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
$(ECHO_E) '@set b=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||||
|
$(ECHO_e) '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
$(ECHO_e) '@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
$(ECHO_E) '$2 %a% %b% %1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||||
|
$(UNIX2DOS) $1
|
||||||
|
endef
|
||||||
|
|
||||||
|
TMP_DEPS = tmp/.tmp-stamp tmp/bcc.bat tmp/cl.bat tmp/dmc.bat
|
||||||
|
|
||||||
|
tmp/bcc.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||||
|
@$(call mkbat,$@,bcc.exe,$(call winedir_w,$(BC502DIR)/bin))
|
||||||
|
tmp/cl.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||||
|
@$(call mkbat,$@,cl.exe,$(call winedir_w,$(VC152DIR)/bin),$(call winedir_w,$(VC152DIR)/include),$(call winedir_w,$(VC152DIR)/lib))
|
||||||
|
tmp/dmc.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||||
|
@$(call mkbat,$@,dmc.exe,$(call winedir_w,$(DM849DIR)/bin))
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // method-lzma
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
lzma_d_c% : tc_list = method-lzma arch-i086 default
|
||||||
|
lzma_d_c% : tc_bfdname =
|
||||||
|
|
||||||
|
# gcc
|
||||||
|
c := tc.arch-i086.gcc
|
||||||
|
$c += -MF /dev/null
|
||||||
|
$c += -Wall -W
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
|
$c += -I$(UPX_LZMADIR)
|
||||||
|
$c += -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
# Borland C/C++ 5.02
|
||||||
|
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||||
|
c := tc.method-lzma.bcc
|
||||||
|
$c = $(WINEENV) wine cmd.exe /c tmp/bcc.bat
|
||||||
|
$c += -ms
|
||||||
|
$c += -O1 -1
|
||||||
|
$c += -w
|
||||||
|
$c += -D__INT_MAX__=32767
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
|
ifeq ($(UPX_LZMA_VERSION),0x449)
|
||||||
|
$c += -I$(subst \,/,$(call winedir_w,$(UPX_LZMADIR)/C/Compress/Lzma))
|
||||||
|
else
|
||||||
|
$c += -I$(subst \,/,$(call winedir_w,$(UPX_LZMADIR)/C/7zip/Compress/LZMA_C))
|
||||||
|
endif
|
||||||
|
$c += -I$(top_srcdir)/src
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Digital Mars C/C++ 8.49
|
||||||
|
# http://www.digitalmars.com/download/freecompiler.html
|
||||||
|
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||||
|
c := tc.method-lzma.dmc
|
||||||
|
$c = $(WINEENV) DMC1='$(DMC1)' DMC2='$(DMC2)' wine cmd.exe /c tmp/dmc.bat
|
||||||
|
$c += -ms -R
|
||||||
|
$c += -NS
|
||||||
|
$c += -w- -w7 -r
|
||||||
|
$c += @DMC1 @DMC2
|
||||||
|
DMC1 := -o -0
|
||||||
|
DMC1 += -D__INT_MAX__=32767
|
||||||
|
DMC1 += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
|
DMC2 := -I$(call winedir_w,$(UPX_LZMADIR))
|
||||||
|
DMC2 += -I$(call winedir_w,$(top_srcdir)/src)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Visual C/C++ 1.52 (8.00c)
|
||||||
|
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||||
|
c := tc.method-lzma.cl
|
||||||
|
$c = $(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/cl.bat
|
||||||
|
$c += -AS -Gd
|
||||||
|
$c += -Gy
|
||||||
|
$c += -O2 -Gf -Gs -G0
|
||||||
|
$c += -W4
|
||||||
|
CL := -nologo
|
||||||
|
CL += -D__INT_MAX__=32767
|
||||||
|
CL += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
|
CL += -I$(call winedir_s,$(UPX_LZMADIR))
|
||||||
|
CL += -I$(call winedir_s,$(top_srcdir)/src)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Open Watcom C/C++ 1.6
|
||||||
|
# http://www.openwatcom.com/
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
c := tc.method-lzma.wcl
|
||||||
|
$c = PATH='$(WATCOM)/binl:$(PATH)' $(WATCOM)/binl/wcl -zq -bt=dos
|
||||||
|
$c += -ms -ecc
|
||||||
|
$c += -zm -zc
|
||||||
|
$c += -os -s -0 -d0
|
||||||
|
$c += -w5 -we -fr=/dev/null
|
||||||
|
$c += -D__INT_MAX__=32767
|
||||||
|
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
|
||||||
|
$c += -I$(UPX_LZMADIR)
|
||||||
|
$c += -I$(top_srcdir)/src
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
ifneq ($(UPX_LZMA_VERSION),)
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
|
||||||
|
lzma_d_c%.S : tmp/lzma_d_c%.i cleanasm.py $(MAKEFILE_LIST)
|
||||||
|
$(PYTHON) cleanasm.py --label-prefix=$(LABEL_PREFIX) $< $@
|
||||||
|
|
||||||
|
tmp/lzma_d_c%.i : lzma_d_c.c wdis2gas.py $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||||
|
rm -f tmp/$T*.i tmp/$T*.o tmp/$T*.obj tmp/$T*.S
|
||||||
|
# compile
|
||||||
|
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||||
|
## $(call tc,bcc) $(PP_FLAGS) -c -otmp/$T_bc.obj $<
|
||||||
|
## $(call tc,wdis) tmp/$T_bc.obj | $(RTRIM) > tmp/$T_bc.obj.disasm
|
||||||
|
endif
|
||||||
|
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||||
|
$(call tc,dmc) $(PP_FLAGS) -c -otmp/$T_dm.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T_dm.obj | $(RTRIM) > tmp/$T_dm.obj.disasm
|
||||||
|
endif
|
||||||
|
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||||
|
$(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T_vc.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T_vc.obj | $(RTRIM) > tmp/$T_vc.obj.disasm
|
||||||
|
endif
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
$(call tc,wcl) $(PP_FLAGS) -c -fo=tmp/$T_wc.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T_wc.obj | $(RTRIM) > tmp/$T_wc.obj.disasm
|
||||||
|
endif
|
||||||
|
# convert
|
||||||
|
$(PYTHON) wdis2gas.py tmp/$T_wc.obj.disasm tmp/$T.S
|
||||||
|
$(call tc,gcc) -c -o tmp/$T.o tmp/$T.S
|
||||||
|
$(call tc,f-objstrip,tmp/$T.o)
|
||||||
|
$(call tc,objdump) -b elf32-i386 -m i8086 -M intel -dr -j .text.LzmaDecode --no-show -w tmp/$T.o | $(RTRIM) | $(PERL) -pe 's/\bDWORD\b/dword/g; s/\bWORD\b/word/g; s/\bBYTE\b/byte/g; s/\bPTR\b/ptr/g;' > $@
|
||||||
|
|
||||||
|
.PRECIOUS: lzma_d_c%.i tmp/lzma_d_c%.i
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
lzma_d_cf.% : PP_FLAGS = -DFAST
|
||||||
|
lzma_d_cs.% : PP_FLAGS = -DSMALL
|
||||||
|
lzma_d_cf.% : LABEL_PREFIX = .Lf
|
||||||
|
lzma_d_cs.% : LABEL_PREFIX = .Ls
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // cc_test
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wdis),)
|
||||||
|
|
||||||
|
CC_TEST_DEPS = $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||||
|
cc_test_bc : tc_list = method-lzma arch-i086 default
|
||||||
|
cc_test_bc: cc_test.c $(CC_TEST_DEPS)
|
||||||
|
$(call tc,bcc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
cc_test_all: cc_test_bc
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||||
|
cc_test_dm : tc_list = method-lzma arch-i086 default
|
||||||
|
cc_test_dm: cc_test.c $(CC_TEST_DEPS)
|
||||||
|
$(call tc,dmc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
cc_test_all: cc_test_dm
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||||
|
cc_test_vc : tc_list = method-lzma arch-i086 default
|
||||||
|
cc_test_vc: cc_test.c $(CC_TEST_DEPS)
|
||||||
|
$(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
cc_test_all: cc_test_vc
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
cc_test_wc : tc_list = method-lzma arch-i086 default
|
||||||
|
cc_test_wc: cc_test.c $(CC_TEST_DEPS)
|
||||||
|
$(call tc,wcl) $(PP_FLAGS) -c -fo=tmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
cc_test_all: cc_test_wc
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: cc_test_all
|
||||||
|
|
||||||
|
endif # wdis
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // l_test
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
L_TEST_DEPS = lzma_d_c.c $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||||
|
|
||||||
|
tmp/l_test_gcc_i386.% : tc_list = arch-i086 default
|
||||||
|
tmp/l_test_gcc_i386.out: l_test.c $(L_TEST_DEPS)
|
||||||
|
$(call tc,gcc) -O0 -g -o $@ $<
|
||||||
|
./$@
|
||||||
|
l_test_all: tmp/l_test_gcc_i386.out
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||||
|
tmp/l_test_bc.% : tc_list = method-lzma arch-i086 default
|
||||||
|
tmp/l_test_bc.exe: l_test.c $(L_TEST_DEPS)
|
||||||
|
$(call tc,bcc) -o$(subst /,\\,$@) $<
|
||||||
|
@rm -f l_test.o l_test.obj
|
||||||
|
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||||
|
##l_test_all: tmp/l_test_bc.exe
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||||
|
tmp/l_test_dm.% : tc_list = method-lzma arch-i086 default
|
||||||
|
tmp/l_test_dm.exe: l_test.c $(L_TEST_DEPS)
|
||||||
|
$(call tc,dmc) -ml -o$(subst /,\\,$@) $<
|
||||||
|
@rm -f l_test.o l_test.obj
|
||||||
|
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||||
|
l_test_all: tmp/l_test_dm.exe
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||||
|
tmp/l_test_vc.% : tc_list = method-lzma arch-i086 default
|
||||||
|
tmp/l_test_vc.exe: l_test.c $(L_TEST_DEPS)
|
||||||
|
$(call tc,cl) -Fe$(subst /,\\,$@) $<
|
||||||
|
@rm -f l_test.o l_test.obj
|
||||||
|
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||||
|
l_test_all: tmp/l_test_vc.exe
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
tmp/l_test_wc.% : tc_list = method-lzma arch-i086 default
|
||||||
|
tmp/l_test_wc.exe: l_test.c $(L_TEST_DEPS)
|
||||||
|
$(call tc,wcl) -fe=$@ $<
|
||||||
|
@rm -f l_test.o l_test.obj
|
||||||
|
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||||
|
l_test_all: tmp/l_test_wc.exe
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: l_test_all
|
||||||
|
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
/* cc_test.c -- examine compiler-generated library calls
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 2006-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
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
|
||||||
|
<mfx@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#if 0 && defined(__WATCOMC__)
|
||||||
|
#define __cdecl __watcall
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
//
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
typedef short int16_t;
|
||||||
|
typedef unsigned short uint16_t;
|
||||||
|
typedef long int32_t;
|
||||||
|
typedef unsigned long uint32_t;
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
// simulated 32-bit pointer
|
||||||
|
typedef char __huge* hptr;
|
||||||
|
typedef long hptrdiff_t;
|
||||||
|
typedef unsigned long hsize_t;
|
||||||
|
#elif 1
|
||||||
|
// ignore segment overflow
|
||||||
|
typedef char __far* hptr;
|
||||||
|
typedef long hptrdiff_t;
|
||||||
|
typedef unsigned long hsize_t;
|
||||||
|
#else
|
||||||
|
// no segment
|
||||||
|
typedef char __near* hptr;
|
||||||
|
typedef short hptrdiff_t;
|
||||||
|
typedef unsigned short hsize_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// pia - pointer add
|
||||||
|
hptr __cdecl pia(hptr a, hsize_t d) { return a + d; }
|
||||||
|
hptr __cdecl pia1(hptr a) { return a + 1; }
|
||||||
|
|
||||||
|
// pis - pointer subtract
|
||||||
|
hptr __cdecl pis(hptr a, hsize_t d) { return a - d; }
|
||||||
|
hptr __cdecl pis1(hptr a) { return a - 1; }
|
||||||
|
|
||||||
|
// pts - pointer diff
|
||||||
|
hptrdiff_t __cdecl pts(hptr a, hptr b) { return a - b; }
|
||||||
|
|
||||||
|
// ptc - pointer compare (__PTC sets zero and carry flags)
|
||||||
|
int __cdecl ptc_eq(hptr a, hptr b) { return a == b; }
|
||||||
|
int __cdecl ptc_ne(hptr a, hptr b) { return a != b; }
|
||||||
|
int __cdecl ptc_lt(hptr a, hptr b) { return a < b; }
|
||||||
|
int __cdecl ptc_le(hptr a, hptr b) { return a <= b; }
|
||||||
|
int __cdecl ptc_gt(hptr a, hptr b) { return a > b; }
|
||||||
|
int __cdecl ptc_ge(hptr a, hptr b) { return a >= b; }
|
||||||
|
|
||||||
|
// u4m - unsigned multiplication
|
||||||
|
uint32_t __cdecl u4m(uint32_t a, uint32_t b) { return a * b; }
|
||||||
|
uint32_t __pascal u4m_p(uint32_t a, uint32_t b) { return b * a; }
|
||||||
|
|
||||||
|
// i4m - signed multiplication
|
||||||
|
int32_t __cdecl i4m(int32_t a, int32_t b) { return a * b; }
|
||||||
|
int32_t __pascal i4m_p(int32_t a, int32_t b) { return b * a; }
|
||||||
|
|
||||||
|
// just for testing
|
||||||
|
uint16_t __cdecl u2m(uint16_t a, uint16_t b) { return a * b; }
|
||||||
|
int16_t __cdecl i2m(int16_t a, int16_t b) { return a * b; }
|
||||||
|
uint32_t __cdecl u2m4(uint16_t a, uint16_t b) { return a * b; }
|
||||||
|
int32_t __cdecl i2m4(int16_t a, int16_t b) { return a * b; }
|
||||||
|
|
||||||
|
uint16_t __cdecl u2shl8 (uint16_t a) { return a << 8; }
|
||||||
|
uint32_t __cdecl u4shl8 (uint32_t a) { return a << 8; }
|
||||||
|
uint16_t __cdecl u2shl12(uint16_t a) { return a << 12; }
|
||||||
|
uint32_t __cdecl u4shl12(uint32_t a) { return a << 12; }
|
||||||
|
uint32_t __cdecl u4shl16(uint32_t a) { return a << 16; }
|
||||||
|
uint32_t __cdecl u4shl24(uint32_t a) { return a << 24; }
|
||||||
|
uint16_t __cdecl u2shlv(uint16_t a, unsigned v) { return a << v; }
|
||||||
|
uint32_t __cdecl u4shlv(uint32_t a, unsigned v) { return a << v; }
|
||||||
|
|
||||||
|
void __pascal p4nshlv_v(unsigned char v, uint32_t __near *a) { *a <<= v; }
|
||||||
|
void __pascal p4fshlv_v(unsigned char v, uint32_t __far *a) { *a <<= v; }
|
||||||
|
uint32_t __pascal p4nshlv(unsigned char v, uint32_t __near *a) { return *a <<= v; }
|
||||||
|
uint32_t __pascal p4fshlv(unsigned char v, uint32_t __far *a) { return *a <<= v; }
|
||||||
|
|
||||||
|
hptrdiff_t __cdecl hptr2int(hptr a) { return (hptrdiff_t) a; }
|
||||||
|
hptr __cdecl int2hptr(hptrdiff_t a) { return (hptr) a; }
|
||||||
|
|
||||||
|
|
||||||
|
/* vim:set ts=4 et: */
|
||||||
@@ -0,0 +1,409 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# cleanasm.py --
|
||||||
|
#
|
||||||
|
# This file is part of the UPX executable compressor.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
# 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>
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import getopt, os, re, string, sys
|
||||||
|
|
||||||
|
|
||||||
|
class opts:
|
||||||
|
label_prefix = ".L"
|
||||||
|
verbose = 0
|
||||||
|
# optimizer flags
|
||||||
|
auto_inline = 1
|
||||||
|
call_rewrite = 1
|
||||||
|
loop_rewrite = 1
|
||||||
|
|
||||||
|
|
||||||
|
inline_map = {
|
||||||
|
"__aNNalshl": ["M_aNNalshl", 1],
|
||||||
|
"__aNahdiff": ["M_aNahdiff", 1],
|
||||||
|
"__PIA": ["M_PIA", 999],
|
||||||
|
"__PTS": ["M_PTS", 999],
|
||||||
|
"__PTC": ["M_PTC", 999],
|
||||||
|
"__U4M": ["M_U4M", 999],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // main
|
||||||
|
# ************************************************************************/
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
shortopts, longopts = "qv", [
|
||||||
|
"label-prefix=", "quiet", "verbose"
|
||||||
|
]
|
||||||
|
xopts, args = getopt.gnu_getopt(argv[1:], shortopts, longopts)
|
||||||
|
for opt, optarg in xopts:
|
||||||
|
if 0: pass
|
||||||
|
elif opt in ["-q", "--quiet"]: opts.verbose = opts.verbose - 1
|
||||||
|
elif opt in ["-v", "--verbose"]: opts.verbose = opts.verbose + 1
|
||||||
|
elif opt in ["--label-prefix"]: opts.label_prefix = optarg
|
||||||
|
else: assert 0, ("getopt problem:", opt, optarg, xopts, args)
|
||||||
|
|
||||||
|
#
|
||||||
|
assert opts.label_prefix
|
||||||
|
assert len(args) == 2
|
||||||
|
ifile = args[0]
|
||||||
|
ofile = args[1]
|
||||||
|
# read ifile
|
||||||
|
lines = open(ifile, "rb").readlines()
|
||||||
|
lines = filter(None, map(string.rstrip, lines))
|
||||||
|
#
|
||||||
|
#
|
||||||
|
labels = {}
|
||||||
|
def parse_label(inst, args):
|
||||||
|
k = v = None
|
||||||
|
m = re.search(r"^(.*?)\b(2|R_386_PC16)\s+(__\w+)$", args)
|
||||||
|
if m and k is None:
|
||||||
|
# external 2-byte label
|
||||||
|
k, v = m.group(3).strip(), [1, 2, None, 0]
|
||||||
|
m = re.search("^0x([0-9a-z]+)$", args)
|
||||||
|
if m and k is None:
|
||||||
|
# local label
|
||||||
|
k, v = m.group(1).strip(), [0, 0, None, 0]
|
||||||
|
m = re.search("^([0-9a-z]+)\s+<", args)
|
||||||
|
if m and k is None:
|
||||||
|
# local label
|
||||||
|
k, v = m.group(1).strip(), [0, 0, None, 0]
|
||||||
|
assert k and v, (inst, args)
|
||||||
|
v[2] = k # new name
|
||||||
|
if labels.has_key(k):
|
||||||
|
assert labels[k][:2] == v[:2]
|
||||||
|
return k, v
|
||||||
|
def add_label(k, v):
|
||||||
|
if labels.has_key(k):
|
||||||
|
assert labels[k][:2] == v[:2]
|
||||||
|
else:
|
||||||
|
labels[k] = v
|
||||||
|
labels[k][3] += 1 # usage counter
|
||||||
|
return k
|
||||||
|
|
||||||
|
olines = []
|
||||||
|
def omatch(pos, mlen, m, debug=0):
|
||||||
|
assert len(m) >= abs(mlen)
|
||||||
|
def sgn(x):
|
||||||
|
if x < 0: return -1
|
||||||
|
if x > 0: return 1
|
||||||
|
return 0
|
||||||
|
def match(a, b):
|
||||||
|
if b is None:
|
||||||
|
return False
|
||||||
|
if "^" in a or "*" in a:
|
||||||
|
# regexp
|
||||||
|
return re.search(a, b.lower())
|
||||||
|
else:
|
||||||
|
return a.lower() == b.lower()
|
||||||
|
mpos = []
|
||||||
|
while len(mpos) != abs(mlen):
|
||||||
|
if pos < 0 or pos >= len(olines):
|
||||||
|
return []
|
||||||
|
o = olines[pos]
|
||||||
|
if o[1] != "*DEL*":
|
||||||
|
mpos.append(pos)
|
||||||
|
pos += sgn(mlen)
|
||||||
|
if mlen < 0:
|
||||||
|
mpos.reverse()
|
||||||
|
if debug and 1: print mlen, m, [olines[x] for x in mpos]
|
||||||
|
dpos = []
|
||||||
|
i = -abs(mlen)
|
||||||
|
while i < 0:
|
||||||
|
pos = mpos[i]
|
||||||
|
o = olines[pos]
|
||||||
|
assert o[1] != "*DEL*"
|
||||||
|
assert len(m[i]) == 2, (i, m)
|
||||||
|
m0 = match(m[i][0], o[1])
|
||||||
|
m1 = match(m[i][1], o[2])
|
||||||
|
if not m0 or not m1:
|
||||||
|
return []
|
||||||
|
dpos.append([pos, m0, m1])
|
||||||
|
i += 1
|
||||||
|
assert len(dpos) == abs(mlen)
|
||||||
|
return dpos
|
||||||
|
def orewrite_inst(i, inst, args, dpos):
|
||||||
|
for pos, m0, m1 in dpos:
|
||||||
|
olines[pos][1] = "*DEL*"
|
||||||
|
olines[i][1] = inst
|
||||||
|
olines[i][2] = args
|
||||||
|
olines[i][3] = None
|
||||||
|
def orewrite_call(i, k, v, dpos):
|
||||||
|
for pos, m0, m1 in dpos:
|
||||||
|
olines[pos][1] = "*DEL*"
|
||||||
|
v[2] = k
|
||||||
|
olines[i][2] = None
|
||||||
|
olines[i][3] = add_label(k, v)
|
||||||
|
|
||||||
|
#
|
||||||
|
# pass 1
|
||||||
|
func = None
|
||||||
|
for i in range(len(lines)):
|
||||||
|
l = lines[i]
|
||||||
|
m = re.search(r"^0{8,16}\s*<(\.text\.)?(\w+)>:", l)
|
||||||
|
if m:
|
||||||
|
func = re.sub(r"^_+|_+$", "", m.group(2))
|
||||||
|
if not func in ["LzmaDecode"]:
|
||||||
|
continue
|
||||||
|
m = re.search(r"^(\s*[0-9a-z]+):\s+(\w+)(.*)", l)
|
||||||
|
if not m:
|
||||||
|
continue
|
||||||
|
label = m.group(1).strip()
|
||||||
|
inst = m.group(2).strip()
|
||||||
|
args = ""
|
||||||
|
if m.group(3): args = m.group(3).strip()
|
||||||
|
#
|
||||||
|
if inst in ["movl",] and re.search(r"\b[de]s\b", args):
|
||||||
|
# fix bug in objdump
|
||||||
|
inst = "movw"
|
||||||
|
m = re.search(r"^(.+?)\b0x0\s+(\w+):\s+(1|2|R_386_16|R_386_PC16)\s+(__\w+)$", args)
|
||||||
|
if m:
|
||||||
|
# 1 or 2 byte reloc
|
||||||
|
args = m.group(1) + m.group(4)
|
||||||
|
olines.append([label, inst, args, None])
|
||||||
|
#
|
||||||
|
# pass 2
|
||||||
|
for i in range(len(olines)):
|
||||||
|
label, inst, args, args_label = olines[i]
|
||||||
|
#
|
||||||
|
if inst == "*DEL*":
|
||||||
|
continue
|
||||||
|
#
|
||||||
|
if opts.call_rewrite and inst in ["call"]:
|
||||||
|
k, v = parse_label(inst, args)
|
||||||
|
if v[:2] == [1, 2]: # external 2-byte
|
||||||
|
if k == "__aNahdiff":
|
||||||
|
s = [
|
||||||
|
["push", "word ptr [bp+8]"],
|
||||||
|
["push", "word ptr [bp+6]"],
|
||||||
|
["push", r"word ptr \[bp([+-]\d+)\]$"],
|
||||||
|
["push", r"word ptr \[bp([+-]\d+)\]$"],
|
||||||
|
]
|
||||||
|
dpos = omatch(i-1, -4, s)
|
||||||
|
if dpos:
|
||||||
|
orewrite_inst(i, "*DEL*", "", dpos)
|
||||||
|
continue
|
||||||
|
if k in ["__LMUL", "__U4M",]:
|
||||||
|
s1 = [
|
||||||
|
["mov", "bx,0x300"],
|
||||||
|
["xor", "cx,cx"],
|
||||||
|
]
|
||||||
|
s2 = [
|
||||||
|
["shl", "ax,1"],
|
||||||
|
["rcl", "dx,1"],
|
||||||
|
]
|
||||||
|
dpos1 = omatch(i-1, -2, s1)
|
||||||
|
dpos2 = omatch(i+1, 2, s2)
|
||||||
|
if dpos1 and dpos2:
|
||||||
|
orewrite_inst(i, "M_U4M_dxax_0x0600", "", dpos1 + dpos2)
|
||||||
|
continue
|
||||||
|
s = [
|
||||||
|
["mov", "bx,word ptr [bx]"],
|
||||||
|
["xor", "cx,cx"],
|
||||||
|
]
|
||||||
|
dpos = omatch(i-1, -2, s, debug=0)
|
||||||
|
if 0 and dpos:
|
||||||
|
orewrite_inst(i, "M_U4M_dxax_00bx_ptr", "", dpos)
|
||||||
|
continue
|
||||||
|
dpos = omatch(i-1, -1, s)
|
||||||
|
if dpos:
|
||||||
|
orewrite_inst(i, "M_U4M_dxax_00bx", "", dpos)
|
||||||
|
continue
|
||||||
|
if k == "__PIA":
|
||||||
|
s = [
|
||||||
|
["mov", "bx,0x1"],
|
||||||
|
["xor", "cx,cx"],
|
||||||
|
]
|
||||||
|
dpos = omatch(i-1, -2, s)
|
||||||
|
if dpos:
|
||||||
|
orewrite_inst(i, "M_PIA1", "", dpos)
|
||||||
|
continue
|
||||||
|
if k == "__PTC":
|
||||||
|
s = [
|
||||||
|
["jne", "(.*)"],
|
||||||
|
]
|
||||||
|
dpos = omatch(i+1, 1, s)
|
||||||
|
if dpos:
|
||||||
|
olines[i][1] = "M_PTC_JNE"
|
||||||
|
k, v = parse_label("jne", dpos[0][2].group(1))
|
||||||
|
orewrite_call(i, k, v, dpos)
|
||||||
|
continue
|
||||||
|
if opts.loop_rewrite and inst in ["loop"]:
|
||||||
|
s = [
|
||||||
|
["mov", r"^c[lx],0xb$"],
|
||||||
|
["shr", "dx,1"],
|
||||||
|
["rcr", "ax,1"],
|
||||||
|
]
|
||||||
|
dpos = omatch(i-1, -3, s)
|
||||||
|
if dpos:
|
||||||
|
orewrite_inst(i, "M_shrd_11", "", dpos)
|
||||||
|
continue
|
||||||
|
s = [
|
||||||
|
["mov", r"^c[lx],0x8$"],
|
||||||
|
["shl", "ax,1"],
|
||||||
|
["rcl", "dx,1"],
|
||||||
|
]
|
||||||
|
dpos = omatch(i-1, -3, s)
|
||||||
|
if dpos:
|
||||||
|
orewrite_inst(i, "M_shld_8", "", dpos)
|
||||||
|
continue
|
||||||
|
s1 = [
|
||||||
|
["mov", r"^c[lx],0x8$"],
|
||||||
|
["shl", "si,1"],
|
||||||
|
["rcl", "di,1"],
|
||||||
|
]
|
||||||
|
s2 = [
|
||||||
|
["les", r"^bx,dword ptr \[bp([+-]\d+)\]$"],
|
||||||
|
]
|
||||||
|
dpos1 = omatch(i-1, -3, s1)
|
||||||
|
dpos2 = omatch(i+1, 1, s2)
|
||||||
|
if 1 and dpos1 and dpos2:
|
||||||
|
# bx and cx are free for use
|
||||||
|
orewrite_inst(i, "M_shld_disi_8_bxcx", "", dpos1)
|
||||||
|
continue
|
||||||
|
s1 = [
|
||||||
|
["mov", "ax,si"],
|
||||||
|
["mov", r"^c[lx],0x8$"],
|
||||||
|
["shl", "ax,1"],
|
||||||
|
["rcl", "di,1"],
|
||||||
|
]
|
||||||
|
s2 = [
|
||||||
|
["mov", "si,ax"],
|
||||||
|
["les", r"^bx,dword ptr \[bp([+-]\d+)\]$"],
|
||||||
|
]
|
||||||
|
dpos1 = omatch(i-1, -4, s1)
|
||||||
|
dpos2 = omatch(i+1, 2, s2)
|
||||||
|
if 1 and dpos1 and dpos2:
|
||||||
|
# bx and cx are free for use
|
||||||
|
orewrite_inst(i, "M_shld_diax_8_bxcx", "", dpos1[-3:])
|
||||||
|
continue
|
||||||
|
s1 = [
|
||||||
|
["mov", r"^c[lx],0x8$"],
|
||||||
|
["shl", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||||
|
["rcl", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||||
|
]
|
||||||
|
s2 = [
|
||||||
|
["mov", r"^dx,word ptr"],
|
||||||
|
["mov", r"^ax,word ptr"],
|
||||||
|
]
|
||||||
|
s3 = [
|
||||||
|
["mov", r"^ax,word ptr"],
|
||||||
|
["mov", r"^dx,word ptr"],
|
||||||
|
]
|
||||||
|
dpos1 = omatch(i-1, -3, s1)
|
||||||
|
dpos2 = omatch(i+1, 2, s2)
|
||||||
|
dpos3 = omatch(i+1, 2, s3)
|
||||||
|
if dpos1 and (dpos2 or dos3):
|
||||||
|
bp_dx, bp_ax = dpos1[-1][2].group(1), dpos1[-2][2].group(1)
|
||||||
|
m = "M_shld_8_bp %s %s" % (bp_dx, bp_ax)
|
||||||
|
orewrite_inst(i, m, "", dpos1)
|
||||||
|
continue
|
||||||
|
s1 = [
|
||||||
|
["mov", r"^word ptr \[bp([+-]\d+)\],si$"],
|
||||||
|
["mov", r"^word ptr \[bp([+-]\d+)\],di$"],
|
||||||
|
["mov", r"^c[lx],0xb$"],
|
||||||
|
["shr", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||||
|
["rcr", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||||
|
]
|
||||||
|
s2 = [
|
||||||
|
["mov", r"^bx,word ptr"],
|
||||||
|
["mov", r"^bx,word ptr"],
|
||||||
|
["mov", r"^ax,word ptr \[bp([+-]\d+)\]$"],
|
||||||
|
["mov", r"^dx,word ptr \[bp([+-]\d+)\]$"],
|
||||||
|
]
|
||||||
|
dpos1 = omatch(i-1, -5, s1)
|
||||||
|
dpos2 = omatch(i+1, 4, s2)
|
||||||
|
if dpos1 and dpos2:
|
||||||
|
bp_dx, bp_ax = dpos1[-2][2].group(1), dpos1[-1][2].group(1)
|
||||||
|
bp_di, bp_si = dpos1[-4][2].group(1), dpos1[-5][2].group(1)
|
||||||
|
assert bp_dx == dpos2[-1][2].group(1)
|
||||||
|
assert bp_ax == dpos2[-2][2].group(1)
|
||||||
|
assert bp_dx == bp_di
|
||||||
|
assert bp_ax == bp_si
|
||||||
|
m = "M_shrd_11_disi_bp %s %s" % (bp_dx, bp_ax)
|
||||||
|
orewrite_inst(i, m, "", dpos1 + dpos2[-2:])
|
||||||
|
continue
|
||||||
|
#
|
||||||
|
if inst in [
|
||||||
|
"call", "ja", "jae", "jb", "jbe", "jcxz", "je",
|
||||||
|
"jg", "jge", "jl", "jle", "jmp", "jne", "loop",
|
||||||
|
]:
|
||||||
|
k, v = parse_label(inst, args)
|
||||||
|
olines[i][2] = None
|
||||||
|
olines[i][3] = add_label(k, v)
|
||||||
|
#
|
||||||
|
# pass 3
|
||||||
|
digits, i = 1, len(labels)
|
||||||
|
while i >= 10:
|
||||||
|
digits += 1
|
||||||
|
i /= 10
|
||||||
|
format = "%s0%dd" % ("%", digits)
|
||||||
|
counter = 0
|
||||||
|
for i in range(len(olines)):
|
||||||
|
label, inst, args, args_label = olines[i]
|
||||||
|
# rewrite local labels
|
||||||
|
v = labels.get(label)
|
||||||
|
if v is not None:
|
||||||
|
assert v[:3] == [0, 0, label], (label, v)
|
||||||
|
v[2] = opts.label_prefix + format % counter
|
||||||
|
counter += 1
|
||||||
|
# handle inlining
|
||||||
|
if opts.auto_inline and inst == "call":
|
||||||
|
v = labels[args_label]
|
||||||
|
if v[:2] == [1, 2]: # external 2-byte
|
||||||
|
x = inline_map.get(v[2])
|
||||||
|
if x and v[3] <= x[1]: # max. number of calls
|
||||||
|
##print "inline", v, x
|
||||||
|
if x:
|
||||||
|
olines[i][1] = x[0]
|
||||||
|
olines[i][2] = "/* inlined */"
|
||||||
|
olines[i][2] = ""
|
||||||
|
olines[i][3] = None
|
||||||
|
#
|
||||||
|
# write ofile
|
||||||
|
ofp = open(ofile, "wb")
|
||||||
|
for label, inst, args, args_label in olines:
|
||||||
|
if labels.has_key(label):
|
||||||
|
if opts.verbose:
|
||||||
|
ofp.write("%s: /* %d */\n" % (labels[label][2], labels[label][3]))
|
||||||
|
else:
|
||||||
|
ofp.write("%s:\n" % (labels[label][2]))
|
||||||
|
if inst == "*DEL*":
|
||||||
|
continue
|
||||||
|
if args_label:
|
||||||
|
if opts.verbose:
|
||||||
|
args = "%s /* %d */" % (labels[args_label][2], labels[args_label][3])
|
||||||
|
else:
|
||||||
|
args = labels[args_label][2]
|
||||||
|
l = "%8s%-7s %s" % ("", inst, args)
|
||||||
|
ofp.write(l.rstrip() + "\n")
|
||||||
|
ofp.close()
|
||||||
|
##print olines
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main(sys.argv))
|
||||||
|
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
/* l_test.c --
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 2007-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
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
|
||||||
|
<mfx@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "stub/src/c/lzma_d_c.c"
|
||||||
|
|
||||||
|
#if (ACC_ARCH_I086)
|
||||||
|
#define bytep unsigned char __huge *
|
||||||
|
typedef unsigned long uint32_t;
|
||||||
|
#else
|
||||||
|
#define bytep unsigned char *
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if (ACC_OS_DOS16)
|
||||||
|
# if (ACC_CC_BORLANDC || ACC_CC_TURBOC)
|
||||||
|
int __cdecl printf(const char *, ...);
|
||||||
|
void * __cdecl malloc(unsigned);
|
||||||
|
void __far * __cdecl farmalloc(unsigned long);
|
||||||
|
# define acc_halloc(x) ((void __huge *) farmalloc(x))
|
||||||
|
# elif (ACC_CC_DMC || ACC_CC_MSC)
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <malloc.h>
|
||||||
|
# define acc_halloc(x) _halloc(x,1)
|
||||||
|
# elif (ACC_CC_WATCOMC)
|
||||||
|
int __watcall printf(const char *, ...);
|
||||||
|
void * __watcall malloc(unsigned);
|
||||||
|
void __huge * __watcall halloc(long, unsigned);
|
||||||
|
# define acc_halloc(x) halloc(x,1)
|
||||||
|
# else
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define printf __builtin_printf
|
||||||
|
# define malloc(x) __builtin_malloc(x)
|
||||||
|
# define acc_halloc(x) malloc(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
//
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
>>> import pylzma; d="\1" + "\0"*131070 + "\2"; print len(d)
|
||||||
|
>>> c=pylzma.compress(d, eos=0)[5:]; print len(c), map(ord, c)
|
||||||
|
*/
|
||||||
|
static const unsigned char c_data[92] = {
|
||||||
|
0, 0, 128, 65, 72, 1, 140, 46, 188, 80, 161, 51, 135, 75, 212, 2, 20, 181, 241, 145, 230, 34, 107, 72, 201, 86, 118, 176, 70, 120, 214, 184, 247, 212, 250, 132, 59, 160, 44, 112, 185, 177, 245, 126, 103, 190, 14, 145, 73, 36, 148, 246, 166, 58, 41, 192, 68, 167, 144, 98, 122, 42, 61, 195, 135, 248, 98, 136, 254, 191, 96, 21, 192, 75, 86, 63, 228, 231, 15, 70, 52, 239, 169, 194, 249, 109, 126, 11, 123, 48, 0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
int r;
|
||||||
|
uint32_t src_len = sizeof(c_data);
|
||||||
|
uint32_t dst_len = 131072ul;
|
||||||
|
uint32_t src_out = 0;
|
||||||
|
uint32_t dst_out = 0;
|
||||||
|
const bytep src;
|
||||||
|
bytep dst;
|
||||||
|
CLzmaDecoderState *s;
|
||||||
|
|
||||||
|
printf("Decompress %lu %lu\n", (long)src_len, (long)dst_len);
|
||||||
|
s = (CLzmaDecoderState *) malloc(32768u);
|
||||||
|
src = c_data;
|
||||||
|
dst = (bytep) acc_halloc(dst_len);
|
||||||
|
if (!s || !dst) {
|
||||||
|
printf("ERROR: Out of memory!\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
for (i = 0; i != dst_len; ++i)
|
||||||
|
dst[i] = 255;
|
||||||
|
|
||||||
|
s->Properties.lc = 3; s->Properties.lp = 0; s->Properties.pb = 2;
|
||||||
|
r = LzmaDecode(s, src, src_len, &src_out, dst, dst_len, &dst_out);
|
||||||
|
|
||||||
|
if (r != 0 || src_out != src_len || dst_out != dst_len)
|
||||||
|
{
|
||||||
|
printf("ERROR: Decompression error %d %lu %lu\n", r, (long)src_out, (long)dst_out);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
if (dst[i] != 1)
|
||||||
|
goto data_error;
|
||||||
|
while (++i != dst_len - 1)
|
||||||
|
if (dst[i] != 0)
|
||||||
|
goto data_error;
|
||||||
|
if (dst[i] != 2)
|
||||||
|
goto data_error;
|
||||||
|
|
||||||
|
printf("Decompression test passed. All done.\n");
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
data_error:
|
||||||
|
printf("ERROR: Decompression data error at offset %lu.\n", (long)i);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* vim:set ts=4 et: */
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
/*
|
||||||
|
; lzma_d.ash -- 16-bit assembly
|
||||||
|
;
|
||||||
|
; This file is part of the UPX executable compressor.
|
||||||
|
;
|
||||||
|
; Copyright (C) 2006-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
; 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
|
||||||
|
; <markus@oberhumer.com>
|
||||||
|
; http://www.oberhumer.com/opensource/upx/
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
; ------------- DECOMPRESSION -------------
|
||||||
|
|
||||||
|
; Input:
|
||||||
|
; ds:si - source
|
||||||
|
; es:di - dest
|
||||||
|
; cld
|
||||||
|
|
||||||
|
; Output:
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
//
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
// init
|
||||||
|
section LZMA_DEC00
|
||||||
|
//.byte 0xcc
|
||||||
|
|
||||||
|
mov bp, sp
|
||||||
|
#if 0
|
||||||
|
// DEBUG - check for enough stack
|
||||||
|
lea bx, [bp + lzma_stack_adjust - 256]
|
||||||
|
cmp bp, bx
|
||||||
|
1: jcs 1b
|
||||||
|
#endif
|
||||||
|
lea bx, [bp + lzma_stack_adjust]
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// clear stack
|
||||||
|
xor ax, ax
|
||||||
|
1: push ax
|
||||||
|
cmp sp, bx
|
||||||
|
jnzs 1b
|
||||||
|
#else
|
||||||
|
mov sp, bx
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inc si
|
||||||
|
inc si
|
||||||
|
|
||||||
|
push bx // &outSizeProcessed __near [bp + 24]
|
||||||
|
mov ax, offset lzma_u_len_hi // outSize
|
||||||
|
push ax // [bp + 22]
|
||||||
|
mov ax, offset lzma_u_len
|
||||||
|
push ax // [bp + 20]
|
||||||
|
push es // out [bp + 18]
|
||||||
|
push di // [bp + 16]
|
||||||
|
|
||||||
|
add bx, 4
|
||||||
|
push bx // &inSizeProcessed __near [bp + 14]
|
||||||
|
mov ax, offset lzma_c_len_hi // inSize
|
||||||
|
push ax // [bp + 12]
|
||||||
|
mov ax, offset lzma_c_len
|
||||||
|
push ax // [bp + 10]
|
||||||
|
push ds // in [bp + 8]
|
||||||
|
push si // [bp + 6]
|
||||||
|
|
||||||
|
add bx, 4
|
||||||
|
push bx // &state __near [bp + 4]
|
||||||
|
|
||||||
|
// enter small memory model
|
||||||
|
push ds // save ds && dummy for call
|
||||||
|
push ss
|
||||||
|
pop ds
|
||||||
|
|
||||||
|
// fill properties
|
||||||
|
movw [bx], offset lzma_properties
|
||||||
|
movw [bx+2], offset lzma_properties_hi
|
||||||
|
|
||||||
|
ignore_reloc_overflow lzma_u_len
|
||||||
|
ignore_reloc_overflow lzma_c_len
|
||||||
|
ignore_reloc_overflow lzma_properties
|
||||||
|
|
||||||
|
|
||||||
|
#define ret
|
||||||
|
section LZMA_DEC10
|
||||||
|
.arch i8086, nojumps
|
||||||
|
#define SMALL 1
|
||||||
|
#include "lzma_m.h"
|
||||||
|
#include "lzma_d_cs.S"
|
||||||
|
#undef SMALL
|
||||||
|
section LZMA_DEC20
|
||||||
|
.arch i8086, nojumps
|
||||||
|
#define FAST 1
|
||||||
|
#include "lzma_m.h"
|
||||||
|
#include "lzma_d_cf.S"
|
||||||
|
#undef FAST
|
||||||
|
.arch i8086, jumps
|
||||||
|
#undef ret
|
||||||
|
|
||||||
|
|
||||||
|
// cleanup
|
||||||
|
section LZMA_DEC30
|
||||||
|
pop ds
|
||||||
|
|
||||||
|
section LZMA_DEC31
|
||||||
|
// clear dirty stack
|
||||||
|
mov sp, bp
|
||||||
|
mov bx, offset clear_dirty_stack_low
|
||||||
|
xor ax, ax
|
||||||
|
1: push ax
|
||||||
|
cmp sp, bx
|
||||||
|
jnzs 1b
|
||||||
|
|
||||||
|
section LZMA_DEC32
|
||||||
|
mov sp, bp
|
||||||
|
mov di, offset lzma_u_len
|
||||||
|
ignore_reloc_overflow lzma_u_len
|
||||||
|
|
||||||
|
section LZMA_DEC33
|
||||||
|
pop ax
|
||||||
|
push ax
|
||||||
|
add ax, offset lzma_u_len_segment
|
||||||
|
mov es, ax
|
||||||
|
|
||||||
|
|
||||||
|
// vi:ts=4:et
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user