1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00
This commit is contained in:
László Molnár 2010-08-16 13:20:28 +02:00
commit 47d728667d
20 changed files with 747 additions and 540 deletions

View File

@ -14,6 +14,7 @@ a935d577fc7dd9c2c87761c9c702805da6ce1e51 RELEASE_193
b0353253b0b3d062eb5adb50d4b665a96620da45 RELEASE_195
b82ef51896199484afe5b0553af7d1e59b7ce428 BRANCHPOINT_FOR_upx2.hg
c2e0cd4d621b047f254f2def42132a03683ff52c RELEASE_192
c9a983b7da9d4a2311f74366478348412cac2986 RELEASE_305
d276aa09033c24d0981bc3f4fee5628aecc988ad RELEASE_290
eb1ce56dce7dd1835964362470610925963b9043 RELEASE_110
ed96891ef795bceec6b7ff3ca1ca7764431bfb39 RELEASE_191

View File

@ -38,13 +38,5 @@ endif
$(MAKE) -C doc $@
ifneq ($(wildcard .hg/.),)
# automatically generate ChangeLog from local Mercurial repo
ChangeLog:
hg log --style=changelog > $@
.PHONY: ChangeLog
endif
.PHONY: default all mostlyclean clean distclean maintainer-clean

6
NEWS
View File

@ -2,13 +2,15 @@
User visible changes for UPX
==================================================================
Changes in 3.06 (XX XXX XXXX):
Changes in 3.05 (27 Apr 2010):
* Withdraw support for shared libraries on Darwin (Apple Mac OS X)
because upx does not understand enough about .dylib.
* i386-linux and amd64-linux support shared libraries (DT_INIT must
exist, all info needed by runtime loader must be first in .text, etc.)
* Linux /proc/self/exe now is preserved by default, by leaving behind
one page. New compress-time option --unmap-all-pages is available.
* Withdraw support for shared libraries on Darwin (Apple Mac OS X)
because upx does not understand enough about .dylib.
* bug fixes
Changes in 3.04 (27 Sep 2009):

View File

@ -98,7 +98,7 @@ If you want to modify the stub sources you'll also need
- A number of cross-assemblers and cross-compilers - precompiled
binaries for i386-linux hosts are available from
http://sourceforge.net/project/showfiles.php?group_id=2331
http://sourceforge.net/projects/upx/files/upx-tools/20060823/
Misc. notes

View File

@ -546,7 +546,7 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
}
error:
*dst_len = os.b_pos;
*dst_len = (unsigned) os.b_pos;
//printf("\nlzma_compress: %d: %u %u %u %u %u, %u - > %u\n", r, res->pos_bits, res->lit_pos_bits, res->lit_context_bits, res->dict_size, res->num_probs, src_len, *dst_len);
//printf("%u %u %u\n", is.__m_RefCount, os.__m_RefCount, progress.__m_RefCount);
return r;

View File

@ -36,6 +36,21 @@
// ACC
**************************************************************************/
#if (defined(_WIN32) || defined(_WIN64)) && defined(_MSC_VER)
#ifndef _CRT_NONSTDC_NO_DEPRECATE
#define _CRT_NONSTDC_NO_DEPRECATE 1
#endif
#ifndef _CRT_NONSTDC_NO_WARNINGS
#define _CRT_NONSTDC_NO_WARNINGS 1
#endif
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE 1
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS 1
#endif
#endif
#include "miniacc.h"
#if ((ACC_OS_WIN32 || ACC_OS_WIN64) && ACC_CC_MWERKS) && defined(__MSL__)
# undef HAVE_UTIME_H /* this pulls in <windows.h> */

View File

@ -51,8 +51,9 @@ void show_head(void)
fg = con_fg(f,FG_GREEN);
con_fprintf(f,
" Ultimate Packer for eXecutables\n"
" Copyright (C) 1996 - 2009\n"
" Copyright (C) 1996 - %s\n"
"UPX %-10s Markus Oberhumer, Laszlo Molnar & John Reiser %14s\n\n",
UPX_VERSION_YEAR,
#if (ACC_OS_DOS16 || ACC_OS_DOS32)
V("d"),
#elif (ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
@ -113,6 +114,7 @@ struct PackerNames
{
PackerNames *self = (PackerNames *) user;
self->add(p);
delete p; p = NULL;
return NULL;
}
static int __acc_cdecl_qsort cmp_fname(const void *a, const void *b) {

View File

@ -469,7 +469,7 @@ int ElfLinker::getSection(const char *sname, int *slen) const
const Section *section = findSection(sname);
if (slen)
*slen = section->size;
return section->output - output;
return (int) (section->output - output);
}
int ElfLinker::getSectionSize(const char *sname) const

View File

@ -1351,27 +1351,40 @@ void upx_sanity_check(void)
assert(TestBELE<BE32>::test());
assert(TestBELE<BE64>::test());
{
static const unsigned char dd[32] = { 0, 0, 0, 0, 0, 0, 0,
0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
0, 0, 0, 0,
0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78,
static const unsigned char dd[32]
#if 1 && (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE) && defined(__ELF__)
__attribute__((__aligned__(16)))
#endif
= { 0, 0, 0, 0, 0, 0, 0,
0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
0, 0, 0, 0,
0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78,
0, 0, 0, 0, 0 };
const unsigned char *d;
const N_BELE_RTP::AbstractPolicy *bele;
d = dd + 7;
assert(upx_adler32(d, 4) == 0x09f003f7);
assert(upx_adler32(d, 4, 0) == 0x09ec03f6);
assert(upx_adler32(d, 4, 1) == 0x09f003f7);
bele = &N_BELE_RTP::be_policy;
assert(get_be16(d) == 0xfffe);
assert(bele->get16(d) == 0xfffe);
assert(get_be16_signed(d) == -2);
assert(get_be24(d) == 0xfffefd);
assert(bele->get24(d) == 0xfffefd);
assert(get_be24_signed(d) == -259);
assert(get_be32(d) == 0xfffefdfc);
assert(bele->get32(d) == 0xfffefdfc);
assert(get_be32_signed(d) == -66052);
bele = &N_BELE_RTP::le_policy;
assert(get_le16(d) == 0xfeff);
assert(bele->get16(d) == 0xfeff);
assert(get_le16_signed(d) == -257);
assert(get_le24(d) == 0xfdfeff);
assert(bele->get24(d) == 0xfdfeff);
assert(get_le24_signed(d) == -131329);
assert(get_le32(d) == 0xfcfdfeff);
assert(bele->get32(d) == 0xfcfdfeff);
assert(get_le32_signed(d) == -50462977);
assert(get_le64_signed(d) == ACC_INT64_C(-506097522914230529));
assert(find_be16(d, 2, 0xfffe) == 0);

View File

@ -41,7 +41,7 @@
#ifndef __ACC_H_INCLUDED
#define __ACC_H_INCLUDED 1
#define ACC_VERSION 20100205L
#define ACC_VERSION 20100419L
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
# define __CYGWIN__ __CYGWIN32__
#endif
@ -758,6 +758,9 @@
#elif (UINT_MAX <= ACC_0xffffL) && defined(__AVR__)
# define ACC_ARCH_AVR 1
# define ACC_INFO_ARCH "avr"
#elif defined(__avr32__) || defined(__AVR32__)
# define ACC_ARCH_AVR32 1
# define ACC_INFO_ARCH "avr32"
#elif defined(__bfin__)
# define ACC_ARCH_BLACKFIN 1
# define ACC_INFO_ARCH "blackfin"
@ -1316,9 +1319,11 @@ extern "C" {
#elif !defined(ACC_ABI_BIG_ENDIAN) && !defined(ACC_ABI_LITTLE_ENDIAN)
#if (ACC_ARCH_ALPHA) && (ACC_ARCH_CRAY_MPP)
# define ACC_ABI_BIG_ENDIAN 1
#elif (ACC_ARCH_IA64) && (ACC_OS_POSIX_LINUX || ACC_OS_WIN64)
# define ACC_ABI_LITTLE_ENDIAN 1
#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
#elif (ACC_ARCH_M68K || ACC_ARCH_S390)
#elif (ACC_ARCH_AVR32 || ACC_ARCH_M68K || ACC_ARCH_S390)
# define ACC_ABI_BIG_ENDIAN 1
#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
# if (__LITTLE_ENDIAN__ == 1)
@ -1669,7 +1674,7 @@ extern "C" {
# endif
#endif
#if !defined(ACC_UNCONST_CAST)
# if 1 && defined(__cplusplus)
# if 0 && defined(__cplusplus)
# define ACC_UNCONST_CAST(t,e) (const_cast<t> (e))
# elif (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
# define ACC_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((acc_uintptr_t) ((const void *) (e))))))
@ -2312,8 +2317,12 @@ extern "C" {
# undef HAVE_SNPRINTF
# undef HAVE_VSNPRINTF
#elif (ACC_CC_INTELC)
# ifndef snprintf
# define snprintf _snprintf
# endif
# ifndef vsnprintf
# define vsnprintf _vsnprintf
# endif
#elif (ACC_CC_LCCWIN32)
# define utime _utime
#elif (ACC_CC_MSC)
@ -2324,8 +2333,16 @@ extern "C" {
# undef HAVE_SNPRINTF
# undef HAVE_VSNPRINTF
# elif (_MSC_VER < 1500)
# ifndef snprintf
# define snprintf _snprintf
# endif
# ifndef vsnprintf
# define vsnprintf _vsnprintf
# endif
# else
# ifndef snprintf
# define snprintf _snprintf
# endif
# endif
# if ((_MSC_VER < 800) && ACC_OS_WIN16)
# undef HAVE_ALLOCA

View File

@ -167,7 +167,7 @@ PackLinuxElf::PackLinuxElf(InputFile *f)
PackLinuxElf::~PackLinuxElf()
{
delete[] file_image;
delete[] file_image; file_image = NULL;
}
void PackLinuxElf::pack3(OutputFile *fo, Filter &ft)
@ -400,6 +400,7 @@ PackLinuxElf32::PackLinuxElf32(InputFile *f)
shstrtab(NULL), n_elf_shnum(0),
sec_strndx(NULL), sec_dynsym(NULL), sec_dynstr(NULL)
{
memset(&ehdri, 0, sizeof(ehdri));
if (f) {
f->seek(0, SEEK_SET);
f->readx(&ehdri, sizeof(ehdri));
@ -408,7 +409,7 @@ PackLinuxElf32::PackLinuxElf32(InputFile *f)
PackLinuxElf32::~PackLinuxElf32()
{
delete[] phdri;
delete[] phdri; phdri = NULL;
}
PackLinuxElf64::PackLinuxElf64(InputFile *f)
@ -417,6 +418,7 @@ PackLinuxElf64::PackLinuxElf64(InputFile *f)
shstrtab(NULL), n_elf_shnum(0),
sec_strndx(NULL), sec_dynsym(NULL), sec_dynstr(NULL)
{
memset(&ehdri, 0, sizeof(ehdri));
if (f) {
f->seek(0, SEEK_SET);
f->readx(&ehdri, sizeof(ehdri));
@ -425,7 +427,7 @@ PackLinuxElf64::PackLinuxElf64(InputFile *f)
PackLinuxElf64::~PackLinuxElf64()
{
delete[] phdri;
delete[] phdri; phdri = NULL;
}
Linker* PackLinuxElf64amd::newLinker() const
@ -2033,9 +2035,6 @@ void PackLinuxElf64::pack2(OutputFile *fo, Filter &ft)
throwEOFException();
}
#include "bele.h"
using namespace N_BELE_CTP;
// Filter 0x50, 0x51 assume HostPolicy::isLE
static const int *
ARM_getFilters(bool const isBE)

View File

@ -861,6 +861,8 @@ unsigned PackMachBase<T>::find_SEGMENT_gap(
}
unsigned const hi = msegcmd[k].fileoff + msegcmd[k].filesize;
unsigned lo = ph.u_file_size;
if (lo < hi)
throwCantPack("bad input: LC_SEGMENT beyond end-of-file");
unsigned j = k;
for (;;) { // circular search, optimize for adjacent ascending
++j;

View File

@ -986,11 +986,14 @@ void PackVmlinuxPPC32::buildLoader(const Filter *ft)
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);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E,NRV_TAIL", NULL);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B,NRV_TAIL", NULL);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D,NRV_TAIL", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
else throwBadLoader();
if (hasLoaderSection("CFLUSH"))
addLoader("CFLUSH");
addLoader("IDENTSTR,UPX1HEAD", NULL);
}

View File

@ -162,54 +162,72 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
{
if ((p = func(new PackDjgpp2(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackTmt(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackWcle(f), user)) != NULL)
return p;
delete p; p = NULL;
#if 0
if ((p = func(new PackVxd(f), user)) != NULL)
return p;
delete p; p = NULL;
#endif
#if 0
if ((p = func(new PackW16Ne(f), user)) != NULL)
return p;
delete p; p = NULL;
#endif
if ((p = func(new PackW32Pe(f), user)) != NULL)
return p;
delete p; p = NULL;
}
if ((p = func(new PackArmPe(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackExe(f), user)) != NULL)
return p;
delete p; p = NULL;
//
// atari
//
if ((p = func(new PackTos(f), user)) != NULL)
return p;
delete p; p = NULL;
//
// linux kernel
//
if ((p = func(new PackVmlinuxARMEL(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuxARMEB(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuxPPC32(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuxI386(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuzI386(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackBvmlinuzI386(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuzARMEL(f), user)) != NULL)
return p;
delete p; p = NULL;
#if 0
if ((p = func(new PackElks8086(f), user)) != NULL)
return p;
delete p; p = NULL;
#endif
//
@ -222,75 +240,101 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
{
if ((p = func(new PackLinuxI386sep(f), user)) != NULL)
return p;
delete p; p = NULL;
}
#endif
if (o->o_unix.use_ptinterp) {
if ((p = func(new PackLinuxElf32x86interp(f), user)) != NULL)
return p;
delete p; p = NULL;
}
if ((p = func(new PackFreeBSDElf32x86(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackNetBSDElf32x86(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackOpenBSDElf32x86(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32x86(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf64amd(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32armLe(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32armBe(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32mipsel(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32mipseb(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxI386sh(f), user)) != NULL)
return p;
delete p; p = NULL;
}
if ((p = func(new PackBSDI386(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackMachFat(f), user)) != NULL) // cafebabe conflict
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxI386(f), user)) != NULL) // cafebabe conflict
return p;
delete p; p = NULL;
//
// psone
//
if ((p = func(new PackPs1(f), user)) != NULL)
return p;
delete p; p = NULL;
//
// .sys and .com
//
if ((p = func(new PackSys(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackCom(f), user)) != NULL)
return p;
delete p; p = NULL;
// Mach (MacOS X PowerPC)
if ((p = func(new PackMachPPC32(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackMachI386(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackMachAMD64(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackMachARMEL(f), user)) != NULL)
return p;
delete p; p = NULL;
// 2010-03-12 omit these because PackMachBase<T>::pack4dylib (p_mach.cpp)
// does not understand what the Darwin (Apple Mac OS X) dynamic loader
// assumes about .dylib file structure.
//if ((p = func(new PackDylibI386(f), user)) != NULL)
// return p;
//delete p; p = NULL;
//if ((p = func(new PackDylibPPC32(f), user)) != NULL)
// return p;
//delete p; p = NULL;
//if ((p = func(new PackDylibAMD64(f), user)) != NULL)
// return p;
//delete p; p = NULL;
return NULL;
}

View File

@ -214,7 +214,7 @@ protected:
DLL_FLAG = 0x2000,
FBIG_ENDIAN = 0x8000
};
//NEW: DLL characteristics definition for ASLR, ... - Stefan Widmann
enum {
IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040,

File diff suppressed because it is too large Load Diff

View File

@ -90,6 +90,42 @@ section NRV2D
section NRV2E
#include "arch/powerpc/32/nrv2e_d.S"
section NRV_TAIL
eof_nrv:
#define dst0 a4
#define tmp a1
lwz dst0,0(ldst) // original dst
mtlr t3 // return address
subf a0,lsrc,src
subf tmp,dst0,dst // -1+ dst length
addi a0,a0,1 // return 0: good; else: bad [+1: correct for lbzu]
addi tmp,tmp,1 // dst length
stw tmp,0(ldst)
#undef tmp
// CACHELINE=32 is the observed minimum line size of any cache.
// Some caches may have larger lines, but it is cumbersome to lookup
// {AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE: /usr/include/elf.h},
// then save the correct size in a variable {where to put it?}, or to modify
// the two instructions here. If a cache has larger lines, then we expect
// that the second dcbst (or icbi) on a the same line will be fast.
// If not, then too bad.
section CFLUSH // In: a2=dst= &highest stored byte; a4=dst0= &lowest stored byte
CACHELINE=32
ori dst0,dst0,-1+ CACHELINE // highest addr on cache line
cfl_nrv:
dcbst 0,dst0 // initiate store (modified) cacheline to memory
cmpl cr0,dst0,dst // did we cover the highest-addressed byte?
icbi 0,dst0 // discard instructions from cacheline
addi dst0,dst0,CACHELINE // highest addr on next line
blt cr0,cfl_nrv // not done yet
#undef dst0
sync // wait for all memory operations to finish
isync // discard prefetched instructions (if any)
cfl_ret:
ret
#undef hibit
#undef src

View File

@ -0,0 +1,61 @@
file format elf64-x86-64
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 MACHMAINX 00000015 0000000000000000 0000000000000000 00000040 2**0 CONTENTS, RELOC, READONLY
1 NRV_HEAD 00000066 0000000000000000 0000000000000000 00000055 2**0 CONTENTS, READONLY
2 NRV2E 000000b7 0000000000000000 0000000000000000 000000bb 2**0 CONTENTS, RELOC, READONLY
3 NRV2D 0000009e 0000000000000000 0000000000000000 00000172 2**0 CONTENTS, RELOC, READONLY
4 NRV2B 00000090 0000000000000000 0000000000000000 00000210 2**0 CONTENTS, RELOC, READONLY
5 LZMA_ELF00 00000064 0000000000000000 0000000000000000 000002a0 2**0 CONTENTS, RELOC, READONLY
6 LZMA_DEC10 000009f7 0000000000000000 0000000000000000 00000304 2**0 CONTENTS, READONLY
7 LZMA_DEC20 000009f7 0000000000000000 0000000000000000 00000cfb 2**0 CONTENTS, READONLY
8 LZMA_DEC30 00000014 0000000000000000 0000000000000000 000016f2 2**0 CONTENTS, READONLY
9 NRV_TAIL 00000000 0000000000000000 0000000000000000 00001706 2**0 CONTENTS, READONLY
10 MACHMAINY 00000011 0000000000000000 0000000000000000 00001706 2**0 CONTENTS, READONLY
11 MACHMAINZ 00000135 0000000000000000 0000000000000000 00001717 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
0000000000000000 l d MACHMAINX 0000000000000000 MACHMAINX
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
0000000000000000 l d MACHMAINY 0000000000000000 MACHMAINY
0000000000000000 l d MACHMAINZ 0000000000000000 MACHMAINZ
0000000000000000 l d NRV2E 0000000000000000 NRV2E
0000000000000000 l d NRV2D 0000000000000000 NRV2D
0000000000000000 l d NRV2B 0000000000000000 NRV2B
0000000000000000 l d LZMA_ELF00 0000000000000000 LZMA_ELF00
0000000000000000 l d LZMA_DEC10 0000000000000000 LZMA_DEC10
0000000000000000 l d LZMA_DEC20 0000000000000000 LZMA_DEC20
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
0000000000000000 g MACHMAINX 0000000000000000 _start
0000000000000011 g MACHMAINY 0000000000000000 end_decompress
RELOCATION RECORDS FOR [MACHMAINX]:
OFFSET TYPE VALUE
0000000000000009 R_X86_64_PC32 MACHMAINZ+0xffffffffffffffff
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
00000000000000ae R_X86_64_PC32 NRV_HEAD+0x0000000000000021
000000000000005b R_X86_64_PC32 MACHMAINY+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2D]:
OFFSET TYPE VALUE
0000000000000095 R_X86_64_PC32 NRV_HEAD+0x0000000000000021
000000000000005b R_X86_64_PC32 MACHMAINY+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2B]:
OFFSET TYPE VALUE
000000000000008a R_X86_64_PC32 NRV_HEAD+0x0000000000000021
0000000000000052 R_X86_64_PC32 MACHMAINY+0xfffffffffffffffc
RELOCATION RECORDS FOR [LZMA_ELF00]:
OFFSET TYPE VALUE
0000000000000006 R_X86_64_PC32 LZMA_DEC30+0x0000000000000010
RELOCATION RECORDS FOR [MACHMAINZ]:
OFFSET TYPE VALUE
000000000000000f R_X86_64_32 MACHMAINZ+0x0000000000000135
0000000000000014 R_X86_64_32 MACHMAINX+0x000000000000000d
0000000000000048 R_X86_64_32 MACHMAINZ+0x0000000000000135
000000000000004e R_X86_64_32 MACHMAINX+0x000000000000000d

View File

@ -9,21 +9,25 @@ Idx Name Size VMA LMA File off Algn Flags
4 NRV2B 000000f0 00000000 00000000 000000a8 2**0 CONTENTS, RELOC, READONLY
5 NRV2D 0000012c 00000000 00000000 00000198 2**0 CONTENTS, RELOC, READONLY
6 NRV2E 00000148 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY
7 LZMA 00000000 00000000 00000000 0000040c 2**0 CONTENTS, READONLY
8 LZMA_ELF00 0000008c 00000000 00000000 0000040c 2**0 CONTENTS, RELOC, READONLY
9 LZMA_DEC10 0000099c 00000000 00000000 00000498 2**0 CONTENTS, READONLY
10 LZMA_DEC20 0000099c 00000000 00000000 00000e34 2**0 CONTENTS, READONLY
11 LZMA_DEC30 00000020 00000000 00000000 000017d0 2**0 CONTENTS, READONLY
12 UPX1HEAD 00000020 00000000 00000000 000017f0 2**0 CONTENTS, READONLY
7 NRV_TAIL 0000001c 00000000 00000000 0000040c 2**0 CONTENTS, READONLY
8 CFLUSH 00000024 00000000 00000000 00000428 2**0 CONTENTS, READONLY
9 LZMA 00000000 00000000 00000000 0000044c 2**0 CONTENTS, READONLY
10 LZMA_ELF00 0000008c 00000000 00000000 0000044c 2**0 CONTENTS, RELOC, READONLY
11 LZMA_DEC10 0000099c 00000000 00000000 000004d8 2**0 CONTENTS, READONLY
12 LZMA_DEC20 0000099c 00000000 00000000 00000e74 2**0 CONTENTS, READONLY
13 LZMA_DEC30 00000020 00000000 00000000 00001810 2**0 CONTENTS, READONLY
14 UPX1HEAD 00000020 00000000 00000000 00001830 2**0 CONTENTS, READONLY
SYMBOL TABLE:
00000000 l d LINUX020 00000000 LINUX020
00000000 l d LINUX030 00000000 LINUX030
00000000 l d NRV_TAIL 00000000 NRV_TAIL
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
00000000 l d LINUX000 00000000 LINUX000
00000000 l d LINUX010 00000000 LINUX010
00000000 l d NRV2B 00000000 NRV2B
00000000 l d NRV2D 00000000 NRV2D
00000000 l d NRV2E 00000000 NRV2E
00000000 l d CFLUSH 00000000 CFLUSH
00000000 l d LZMA 00000000 LZMA
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
@ -31,7 +35,6 @@ SYMBOL TABLE:
00000000 l d UPX1HEAD 00000000 UPX1HEAD
00000000 *UND* 00000000 filter_length
00000000 *UND* 00000000 filter_cto
00000000 *UND* 00000000 eof_nrv
RELOCATION RECORDS FOR [LINUX000]:
OFFSET TYPE VALUE
@ -45,15 +48,15 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [NRV2B]:
OFFSET TYPE VALUE
00000090 R_PPC_REL14 eof_nrv
00000090 R_PPC_REL14 NRV_TAIL
RELOCATION RECORDS FOR [NRV2D]:
OFFSET TYPE VALUE
000000b4 R_PPC_REL14 eof_nrv
000000b4 R_PPC_REL14 NRV_TAIL
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
000000b4 R_PPC_REL14 eof_nrv
000000b4 R_PPC_REL14 NRV_TAIL
RELOCATION RECORDS FOR [LZMA_ELF00]:
OFFSET TYPE VALUE

View File

@ -1,6 +1,6 @@
#define UPX_VERSION_HEX 0x030500 /* 03.05.00 */
#define UPX_VERSION_STRING "3.05"
#define UPX_VERSION_STRING4 "3.05"
#define UPX_VERSION_DATE "Apr 27th 2010"
#define UPX_VERSION_DATE_ISO "2010-04-27"
#define UPX_VERSION_HEX 0x030600 /* 03.06.00 */
#define UPX_VERSION_STRING "3.06"
#define UPX_VERSION_STRING4 "3.06"
#define UPX_VERSION_DATE "Apr 28th 2010"
#define UPX_VERSION_DATE_ISO "2010-04-28"
#define UPX_VERSION_YEAR "2010"