ELF2: arm32 shared libraries; runs on Android 14 under TermUX
NYI: complex DT_INIT (R_RELR, etc.)
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: stub/src/arm.v4a-expand.S
modified: stub/src/arm.v4a-linux.elf-entry.S
modified: stub/src/arm.v4a-linux.elf-so_entry.S
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/src/i386-linux.elf-main2.c
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/src/upxfd_android.c
plus generated *.h *.map *.dump
This commit is contained in:
parent
5d5f4d1765
commit
94eebc3ee5
297
src/p_lx_elf.cpp
297
src/p_lx_elf.cpp
@ -1485,6 +1485,7 @@ PackLinuxElf32::buildLinuxLoader(
|
||||
}
|
||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "EXP_TAIL,SO_TAIL,SO_MAIN");
|
||||
(void)len; // Pacify the anal-retentive static analyzer which hates a good idiom.
|
||||
NO_printf("%s\n", sec);
|
||||
addLoader(sec, nullptr);
|
||||
relocateLoader();
|
||||
{
|
||||
@ -1521,8 +1522,8 @@ PackLinuxElf32::buildLinuxLoader(
|
||||
"LZMA_DAISY,LZMA_ELF00,LZMA_DEC20,LZMA_DEC30");
|
||||
}
|
||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "EXP_TAIL,SYSCALLS");
|
||||
//fprintf(stderr, "%s\n", sec);
|
||||
(void)len;
|
||||
NO_printf("%s\n", sec);
|
||||
addLoader(sec, nullptr);
|
||||
relocateLoader();
|
||||
{
|
||||
@ -1645,6 +1646,7 @@ PackLinuxElf64::buildLinuxLoader(
|
||||
}
|
||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "EXP_TAIL,SO_TAIL,SO_MAIN");
|
||||
(void)len;
|
||||
NO_printf("\n%s\n", sec);
|
||||
addLoader(sec, nullptr);
|
||||
relocateLoader();
|
||||
{
|
||||
@ -1679,6 +1681,7 @@ PackLinuxElf64::buildLinuxLoader(
|
||||
}
|
||||
len += snprintf(&sec[len], sizeof(sec) - len, ",%s", "EXP_TAIL,SYSCALLS");
|
||||
(void)len;
|
||||
NO_printf("\n%s\n", sec);
|
||||
addLoader(sec, nullptr);
|
||||
relocateLoader();
|
||||
{
|
||||
@ -2656,6 +2659,161 @@ PackLinuxElf32::canPackOSABI(Elf32_Ehdr const *ehdr)
|
||||
return true; // good so far
|
||||
}
|
||||
|
||||
#define WANT_SHDR_ENUM
|
||||
#include "p_elf_enum.h"
|
||||
#undef WANT_SHDR_ENUM
|
||||
|
||||
upx_uint64_t PackLinuxElf32::canPack_Shdr(Elf32_Phdr const *pload_x0)
|
||||
{
|
||||
Elf32_Shdr const *shdr_xva = nullptr;
|
||||
Elf32_Shdr const *shdr = shdri;
|
||||
for (int j= e_shnum; --j>=0; ++shdr) {
|
||||
unsigned const sh_type = get_te32(&shdr->sh_type);
|
||||
if (Elf32_Shdr::SHF_EXECINSTR & get_te32(&shdr->sh_flags)) {
|
||||
shdr_xva = shdr;
|
||||
xct_va = umin((unsigned) xct_va, get_te32(&shdr->sh_addr));
|
||||
}
|
||||
// Hook the first slot of DT_PREINIT_ARRAY or DT_INIT_ARRAY.
|
||||
if (!user_init_rp && (
|
||||
( Elf32_Dyn::DT_PREINIT_ARRAY==upx_dt_init
|
||||
&& Elf32_Shdr::SHT_PREINIT_ARRAY==sh_type)
|
||||
|| ( Elf32_Dyn::DT_INIT_ARRAY ==upx_dt_init
|
||||
&& Elf32_Shdr::SHT_INIT_ARRAY ==sh_type) )) {
|
||||
unsigned user_init_ava = get_te32(&shdr->sh_addr);
|
||||
user_init_off = get_te32(&shdr->sh_offset);
|
||||
if ((u32_t)file_size <= user_init_off) {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad Elf32_Shdr[%d].sh_offset %#x",
|
||||
-1+ e_shnum - j, user_init_off);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
// Check that &file_image[user_init_off] has
|
||||
// *_RELATIVE or *_ABS* relocation, and fetch user_init_va.
|
||||
// If Elf32_Rela then the actual value is in Rela.r_addend.
|
||||
int z_rel = dt_table[Elf32_Dyn::DT_REL];
|
||||
int z_rsz = dt_table[Elf32_Dyn::DT_RELSZ];
|
||||
if (z_rel && z_rsz) {
|
||||
unsigned rel_off = get_te32(&dynseg[-1+ z_rel].d_val);
|
||||
if ((unsigned)file_size <= rel_off) {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad Elf32_Dynamic[DT_REL] %#x\n",
|
||||
rel_off);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
Elf32_Rel *rp = (Elf32_Rel *)&file_image[rel_off];
|
||||
unsigned relsz = get_te32(&dynseg[-1+ z_rsz].d_val);
|
||||
if ((unsigned)file_size <= relsz) {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad Elf32_Dynamic[DT_RELSZ] %#x\n",
|
||||
relsz);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
Elf32_Rel *last = (Elf32_Rel *)(relsz + (char *)rp);
|
||||
for (; rp < last; ++rp) {
|
||||
unsigned r_va = get_te32(&rp->r_offset);
|
||||
if (r_va == user_init_ava) { // found the Elf32_Rel
|
||||
user_init_rp = rp;
|
||||
unsigned r_info = get_te32(&rp->r_info);
|
||||
unsigned r_type = ELF32_R_TYPE(r_info);
|
||||
set_te32(&dynsym[0].st_name, r_va); // for decompressor
|
||||
set_te32(&dynsym[0].st_value, r_info);
|
||||
if (Elf32_Ehdr::EM_ARM == e_machine) {
|
||||
if (R_ARM_RELATIVE == r_type) {
|
||||
user_init_va = get_te32(&file_image[user_init_off]);
|
||||
}
|
||||
else if (R_ARM_ABS32 == r_type) {
|
||||
unsigned symj = ELF32_R_SYM(r_info);
|
||||
user_init_va = get_te32(&dynsym[symj].st_value);
|
||||
set_te32(&rp->r_info, ELF32_R_INFO(0, R_ARM_RELATIVE));
|
||||
// pack3() will set &file_image[user_init_off]
|
||||
}
|
||||
else {
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
else if (Elf32_Ehdr::EM_386 == e_machine) {
|
||||
if (R_386_RELATIVE == r_type) {
|
||||
user_init_va = get_te32(&file_image[user_init_off]);
|
||||
}
|
||||
else if (R_386_32 == r_type) {
|
||||
unsigned symj = ELF32_R_SYM(r_info);
|
||||
user_init_va = get_te32(&dynsym[symj].st_value);
|
||||
set_te32(&rp->r_info, ELF32_R_INFO(0, R_386_RELATIVE));
|
||||
// pack3() will set &file_image[user_init_off]
|
||||
}
|
||||
else {
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
else {
|
||||
bad:
|
||||
char msg[50]; snprintf(msg, sizeof(msg),
|
||||
"bad relocation %#x DT_INIT_ARRAY[0]",
|
||||
r_info);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
unsigned const p_filesz = get_te32(&pload_x0->p_filesz);
|
||||
if (!((user_init_va - xct_va) < p_filesz)) {
|
||||
// Not in executable portion of first executable PT_LOAD.
|
||||
if (0==user_init_va && opt->o_unix.android_shlib) {
|
||||
// Android allows (0 ==> skip) ?
|
||||
upx_dt_init = 0; // force steal of 'extra' DT_NULL
|
||||
// XXX: FIXME: depends on SHT_DYNAMIC coming later
|
||||
}
|
||||
else {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad init address %#x in Elf32_Shdr[%d].%#x\n",
|
||||
(unsigned)user_init_va, -1+ e_shnum - j, user_init_off);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
// By default /usr/bin/ld leaves 4 extra DT_NULL to support pre-linking.
|
||||
// Take one as a last resort.
|
||||
if ((Elf32_Dyn::DT_INIT==upx_dt_init || !upx_dt_init)
|
||||
&& Elf32_Shdr::SHT_DYNAMIC == sh_type) {
|
||||
unsigned sh_offset = get_te32(&shdr->sh_offset);
|
||||
unsigned sh_size = get_te32(&shdr->sh_size);
|
||||
if ((unsigned)file_size < sh_size
|
||||
|| (unsigned)file_size < sh_offset
|
||||
|| ((unsigned)file_size - sh_offset) < sh_size) {
|
||||
throwCantPack("bad SHT_DYNAMIC");
|
||||
}
|
||||
unsigned const n = get_te32(&shdr->sh_size) / sizeof(Elf32_Dyn);
|
||||
Elf32_Dyn *dynp = (Elf32_Dyn *)&file_image[get_te32(&shdr->sh_offset)];
|
||||
for (; Elf32_Dyn::DT_NULL != dynp->d_tag; ++dynp) {
|
||||
if (upx_dt_init == get_te32(&dynp->d_tag)) {
|
||||
break; // re-found DT_INIT
|
||||
}
|
||||
}
|
||||
if ((1+ dynp) < (n+ dynseg)) { // not the terminator, so take it
|
||||
user_init_va = get_te32(&dynp->d_val); // 0 if (0==upx_dt_init)
|
||||
set_te32(&dynp->d_tag, upx_dt_init = Elf32_Dyn::DT_INIT);
|
||||
user_init_off = (char const *)&dynp->d_val - (char const *)&file_image[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
// If shdr_xva->sh_size is too small, then probably it won't compress.
|
||||
// So look for a Shdr that has PROGBITS and not SHF_WRITE, which is
|
||||
// much larger, and use that for the compressibility decision.
|
||||
if (shdr_xva->sh_size < 0x1000) {
|
||||
shdr = shdr_xva;
|
||||
while (SHT_PROGBITS == get_te32(&shdr[-1].sh_type)) --shdr; // backup
|
||||
for (; SHT_PROGBITS == get_te32(&shdr->sh_type)
|
||||
&& !(SHF_WRITE & get_te32(&shdr->sh_flags)); ++shdr) {
|
||||
if (0x4000 <= get_te32(&shdr->sh_size)) {
|
||||
xct_va = get_te32(&shdr->sh_addr); // hopefully more compressible
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return xct_va;
|
||||
}
|
||||
|
||||
tribool PackLinuxElf32::canPack()
|
||||
{
|
||||
union {
|
||||
@ -2889,138 +3047,9 @@ tribool PackLinuxElf32::canPack()
|
||||
|| Elf32_Ehdr::EM_PPC == get_te16(&ehdr->e_machine)) {
|
||||
throwCantPack("This test UPX cannot pack .so for MIPS or PowerPC; coming soon.");
|
||||
}
|
||||
Elf32_Shdr const *shdr = shdri;
|
||||
xct_va = ~0u;
|
||||
xct_va = ~(upx_uint64_t)0;
|
||||
if (e_shnum) {
|
||||
for (int j= e_shnum; --j>=0; ++shdr) {
|
||||
unsigned const sh_type = get_te32(&shdr->sh_type);
|
||||
if (Elf32_Shdr::SHF_EXECINSTR & get_te32(&shdr->sh_flags)) {
|
||||
xct_va = umin((unsigned) xct_va, get_te32(&shdr->sh_addr));
|
||||
}
|
||||
// Hook the first slot of DT_PREINIT_ARRAY or DT_INIT_ARRAY.
|
||||
if (!user_init_rp && (
|
||||
( Elf32_Dyn::DT_PREINIT_ARRAY==upx_dt_init
|
||||
&& Elf32_Shdr::SHT_PREINIT_ARRAY==sh_type)
|
||||
|| ( Elf32_Dyn::DT_INIT_ARRAY ==upx_dt_init
|
||||
&& Elf32_Shdr::SHT_INIT_ARRAY ==sh_type) )) {
|
||||
unsigned user_init_ava = get_te32(&shdr->sh_addr);
|
||||
user_init_off = get_te32(&shdr->sh_offset);
|
||||
if ((u32_t)file_size <= user_init_off) {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad Elf32_Shdr[%d].sh_offset %#x",
|
||||
-1+ e_shnum - j, user_init_off);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
// Check that &file_image[user_init_off] has
|
||||
// *_RELATIVE or *_ABS* relocation, and fetch user_init_va.
|
||||
// If Elf32_Rela then the actual value is in Rela.r_addend.
|
||||
int z_rel = dt_table[Elf32_Dyn::DT_REL];
|
||||
int z_rsz = dt_table[Elf32_Dyn::DT_RELSZ];
|
||||
if (z_rel && z_rsz) {
|
||||
unsigned rel_off = get_te32(&dynseg[-1+ z_rel].d_val);
|
||||
if ((unsigned)file_size <= rel_off) {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad Elf32_Dynamic[DT_REL] %#x\n",
|
||||
rel_off);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
Elf32_Rel *rp = (Elf32_Rel *)&file_image[rel_off];
|
||||
unsigned relsz = get_te32(&dynseg[-1+ z_rsz].d_val);
|
||||
if ((unsigned)file_size <= relsz) {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad Elf32_Dynamic[DT_RELSZ] %#x\n",
|
||||
relsz);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
Elf32_Rel *last = (Elf32_Rel *)(relsz + (char *)rp);
|
||||
for (; rp < last; ++rp) {
|
||||
unsigned r_va = get_te32(&rp->r_offset);
|
||||
if (r_va == user_init_ava) { // found the Elf32_Rel
|
||||
user_init_rp = rp;
|
||||
unsigned r_info = get_te32(&rp->r_info);
|
||||
unsigned r_type = ELF32_R_TYPE(r_info);
|
||||
set_te32(&dynsym[0].st_name, r_va); // for decompressor
|
||||
set_te32(&dynsym[0].st_value, r_info);
|
||||
if (Elf32_Ehdr::EM_ARM == e_machine) {
|
||||
if (R_ARM_RELATIVE == r_type) {
|
||||
user_init_va = get_te32(&file_image[user_init_off]);
|
||||
}
|
||||
else if (R_ARM_ABS32 == r_type) {
|
||||
unsigned symj = ELF32_R_SYM(r_info);
|
||||
user_init_va = get_te32(&dynsym[symj].st_value);
|
||||
set_te32(&rp->r_info, ELF32_R_INFO(0, R_ARM_RELATIVE));
|
||||
// pack3() will set &file_image[user_init_off]
|
||||
}
|
||||
else {
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
else if (Elf32_Ehdr::EM_386 == e_machine) {
|
||||
if (R_386_RELATIVE == r_type) {
|
||||
user_init_va = get_te32(&file_image[user_init_off]);
|
||||
}
|
||||
else if (R_386_32 == r_type) {
|
||||
unsigned symj = ELF32_R_SYM(r_info);
|
||||
user_init_va = get_te32(&dynsym[symj].st_value);
|
||||
set_te32(&rp->r_info, ELF32_R_INFO(0, R_386_RELATIVE));
|
||||
// pack3() will set &file_image[user_init_off]
|
||||
}
|
||||
else {
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
else {
|
||||
bad:
|
||||
char msg[50]; snprintf(msg, sizeof(msg),
|
||||
"bad relocation %#x DT_INIT_ARRAY[0]",
|
||||
r_info);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
unsigned const p_filesz = get_te32(&pload_x0->p_filesz);
|
||||
if (!((user_init_va - xct_va) < p_filesz)) {
|
||||
// Not in executable portion of first executable PT_LOAD.
|
||||
if (0==user_init_va && opt->o_unix.android_shlib) {
|
||||
// Android allows (0 ==> skip) ?
|
||||
upx_dt_init = 0; // force steal of 'extra' DT_NULL
|
||||
// XXX: FIXME: depends on SHT_DYNAMIC coming later
|
||||
}
|
||||
else {
|
||||
char msg[70]; snprintf(msg, sizeof(msg),
|
||||
"bad init address %#x in Elf32_Shdr[%d].%#x\n",
|
||||
(unsigned)user_init_va, -1+ e_shnum - j, user_init_off);
|
||||
throwCantPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
// By default /usr/bin/ld leaves 4 extra DT_NULL to support pre-linking.
|
||||
// Take one as a last resort.
|
||||
if ((Elf32_Dyn::DT_INIT==upx_dt_init || !upx_dt_init)
|
||||
&& Elf32_Shdr::SHT_DYNAMIC == sh_type) {
|
||||
unsigned sh_offset = get_te32(&shdr->sh_offset);
|
||||
unsigned sh_size = get_te32(&shdr->sh_size);
|
||||
if ((unsigned)file_size < sh_size
|
||||
|| (unsigned)file_size < sh_offset
|
||||
|| ((unsigned)file_size - sh_offset) < sh_size) {
|
||||
throwCantPack("bad SHT_DYNAMIC");
|
||||
}
|
||||
unsigned const n = get_te32(&shdr->sh_size) / sizeof(Elf32_Dyn);
|
||||
Elf32_Dyn *dynp = (Elf32_Dyn *)&file_image[get_te32(&shdr->sh_offset)];
|
||||
for (; Elf32_Dyn::DT_NULL != dynp->d_tag; ++dynp) {
|
||||
if (upx_dt_init == get_te32(&dynp->d_tag)) {
|
||||
break; // re-found DT_INIT
|
||||
}
|
||||
}
|
||||
if ((1+ dynp) < (n+ dynseg)) { // not the terminator, so take it
|
||||
user_init_va = get_te32(&dynp->d_val); // 0 if (0==upx_dt_init)
|
||||
set_te32(&dynp->d_tag, upx_dt_init = Elf32_Dyn::DT_INIT);
|
||||
user_init_off = (char const *)&dynp->d_val - (char const *)&file_image[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
xct_va = canPack_Shdr(pload_x0);
|
||||
}
|
||||
else { // no Sections; use heuristics
|
||||
unsigned const strsz = elf_unsigned_dynamic(Elf32_Dyn::DT_STRSZ);
|
||||
@ -5730,10 +5759,6 @@ void PackLinuxElf32mipsel::defineSymbols(Filter const *ft)
|
||||
PackLinuxElf32::defineSymbols(ft);
|
||||
}
|
||||
|
||||
#define WANT_SHDR_ENUM
|
||||
#include "p_elf_enum.h"
|
||||
#undef WANT_SHDR_ENUM
|
||||
|
||||
// ::forward_Shdrs adds info for the benefit of gdb and Android dlopen().
|
||||
// De-compression (runtime and offline) ignores the added information
|
||||
// because it uses the de-compressed Ehdr etc.
|
||||
|
||||
@ -149,6 +149,7 @@ protected:
|
||||
virtual void ARM_updateLoader(OutputFile *);
|
||||
virtual int ARM_is_QNX(void);
|
||||
|
||||
virtual upx_uint64_t canPack_Shdr(Elf32_Phdr const *pload_x0);
|
||||
virtual void pack1(OutputFile *, Filter &) override; // generate executable header
|
||||
virtual void asl_pack2_Shdrs(OutputFile *, unsigned pre_xct_top); // AndroidSharedLibrary processes Shdrs
|
||||
virtual void asl_slide_Shdrs(); // by so_slide if above xct_off
|
||||
|
||||
1103
src/stub/arm.v4a-linux.elf-entry.h
generated
1103
src/stub/arm.v4a-linux.elf-entry.h
generated
File diff suppressed because it is too large
Load Diff
4357
src/stub/arm.v4a-linux.elf-fold.h
generated
4357
src/stub/arm.v4a-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
1078
src/stub/arm.v4a-linux.elf-so_entry.h
generated
1078
src/stub/arm.v4a-linux.elf-so_entry.h
generated
File diff suppressed because it is too large
Load Diff
3859
src/stub/arm.v4a-linux.elf-so_fold.h
generated
3859
src/stub/arm.v4a-linux.elf-so_fold.h
generated
File diff suppressed because it is too large
Load Diff
1109
src/stub/arm.v5a-linux.elf-entry.h
generated
1109
src/stub/arm.v5a-linux.elf-entry.h
generated
File diff suppressed because it is too large
Load Diff
4395
src/stub/arm.v5a-linux.elf-fold.h
generated
4395
src/stub/arm.v5a-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
1084
src/stub/arm.v5a-linux.elf-so_entry.h
generated
1084
src/stub/arm.v5a-linux.elf-so_entry.h
generated
File diff suppressed because it is too large
Load Diff
3910
src/stub/arm.v5a-linux.elf-so_fold.h
generated
3910
src/stub/arm.v5a-linux.elf-so_fold.h
generated
File diff suppressed because it is too large
Load Diff
1103
src/stub/armeb.v4a-linux.elf-entry.h
generated
1103
src/stub/armeb.v4a-linux.elf-entry.h
generated
File diff suppressed because it is too large
Load Diff
4361
src/stub/armeb.v4a-linux.elf-fold.h
generated
4361
src/stub/armeb.v4a-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
346
src/stub/i386-linux.elf-entry.h
generated
346
src/stub/i386-linux.elf-entry.h
generated
@ -1,5 +1,5 @@
|
||||
/* i386-linux.elf-entry.h
|
||||
created from i386-linux.elf-entry.bin, 3736 (0xe98) bytes
|
||||
created from i386-linux.elf-entry.bin, 3772 (0xebc) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -32,14 +32,14 @@
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_I386_LINUX_ELF_ENTRY_SIZE 3736
|
||||
#define STUB_I386_LINUX_ELF_ENTRY_ADLER32 0x7469419f
|
||||
#define STUB_I386_LINUX_ELF_ENTRY_CRC32 0x08a4e7ed
|
||||
#define STUB_I386_LINUX_ELF_ENTRY_SIZE 3772
|
||||
#define STUB_I386_LINUX_ELF_ENTRY_ADLER32 0xc89f6db4
|
||||
#define STUB_I386_LINUX_ELF_ENTRY_CRC32 0xc0a3e8ec
|
||||
|
||||
unsigned char stub_i386_linux_elf_entry[3736] = {
|
||||
unsigned char stub_i386_linux_elf_entry[3772] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 132, 6, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||
/* 0x0020 */ 168, 6, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||
/* 0x0030 */ 8, 0, 5, 0,243, 15, 30,251,232,252,255,255,255, 1,219,116,
|
||||
/* 0x0040 */ 2,243,195,139, 30,131,238,252, 17,219,195, 94,131,236, 28,141,
|
||||
/* 0x0050 */ 124, 36, 32,232,190, 1, 0, 0,232,185, 1, 0, 0,139, 7,139,
|
||||
@ -104,171 +104,173 @@ unsigned char stub_i386_linux_elf_entry[3736] = {
|
||||
/* 0x0400 */ 131,249,255,116, 30,138, 22,131,202, 32, 15,190,210,138, 3,131,
|
||||
/* 0x0410 */ 200, 32, 15,190,192, 67, 70, 41,194,137,208,117, 11, 73,131,249,
|
||||
/* 0x0420 */ 255,117,226,184, 0, 0, 0, 0, 91, 94,195, 85,137,229, 87, 86,
|
||||
/* 0x0430 */ 83,131,236, 92,186, 0, 0, 0, 0,232, 4, 0, 0, 0,117,112,
|
||||
/* 0x0440 */ 120, 0, 95,184,100, 1, 0, 0,137,251,185, 16, 0, 0, 0,205,
|
||||
/* 0x0450 */ 128,137,198,131,248,234,117, 13,184,100, 1, 0, 0,137,251,137,
|
||||
/* 0x0460 */ 209,205,128,137,198,133,246,121, 73,232, 9, 0, 0, 0, 47,100,
|
||||
/* 0x0470 */ 101,118, 47,115,104,109, 0, 88,137, 69,160,191, 2, 0, 65, 0,
|
||||
/* 0x0480 */ 190,192, 1, 0, 0,137,195,137,249,137,242,106, 5, 88,205,128,
|
||||
/* 0x0490 */ 137,198,133,192,121, 28,232, 13, 0, 0, 0,109,101,109,102,100,
|
||||
/* 0x04a0 */ 95, 99,114,101, 97,116,101, 0, 88, 80,232,252,255,255,255,131,
|
||||
/* 0x04b0 */ 196, 4,129,236, 16, 16, 0, 0,141, 68, 36, 15,131,224,240,137,
|
||||
/* 0x04c0 */ 69,240,199, 0, 0, 0, 0, 0,255,117,240,232,252,255,255,255,
|
||||
/* 0x04d0 */ 191, 0, 0, 0, 0,232, 4, 0, 0, 0, 97,110,100, 0, 89,199,
|
||||
/* 0x04e0 */ 4, 36, 3, 0, 0, 0,141, 69,240, 80, 81,232, 1,255,255,255,
|
||||
/* 0x04f0 */ 131,196, 12,133,192,116, 39,232, 4, 0, 0, 0, 76,105,110, 0,
|
||||
/* 0x0500 */ 88,106, 3,141, 77,240, 81, 80,232,228,254,255,255,131,196, 12,
|
||||
/* 0x0510 */ 133,192,117, 10,128,125,114, 52,126, 4,102,191, 1, 0,133,255,
|
||||
/* 0x0520 */ 117, 99,131,125, 16, 0,117, 8,232,252,255,255,255,137, 69, 16,
|
||||
/* 0x0530 */ 133,255,117, 81,131,254,218,117, 76,131,125, 16, 0,116, 70,139,
|
||||
/* 0x0540 */ 69, 16,128, 56, 0,117, 22,255,117,240, 80,232, 85,253,255,255,
|
||||
/* 0x0550 */ 131,196, 8,137,193,133,192, 15,136,220, 0, 0, 0,190,194, 0,
|
||||
/* 0x0560 */ 0, 0,139, 93, 16,137,241,186,192, 1, 0, 0,106, 5, 88,205,
|
||||
/* 0x0570 */ 128,137,198,137,193,133,192, 15,136,188, 0, 0, 0,139, 93, 16,
|
||||
/* 0x0580 */ 106, 10, 88,205,128,131,125, 12, 0,116,115,133,255,116, 22,137,
|
||||
/* 0x0590 */ 243,139, 77, 12,106, 93, 88,205,128,137,193,133,192, 15,136,150,
|
||||
/* 0x05a0 */ 0, 0, 0,235, 89,104, 0, 16, 0, 0,106, 0,255,117,240,232,
|
||||
/* 0x05b0 */ 252,255,255,255,139,125, 12,131,196, 12,133,255,116, 47,139, 69,
|
||||
/* 0x05c0 */ 240,137, 69,152,137,125,156,129,255, 0, 16, 0, 0,118, 7,199,
|
||||
/* 0x05d0 */ 69,156, 0, 16, 0, 0,137,243,139, 77,152,139, 85,156,106, 4,
|
||||
/* 0x05e0 */ 88,205,128, 59, 69,156,117, 67, 43,125,156,117,215,137,243,185,
|
||||
/* 0x05f0 */ 0, 0, 0, 0,186, 0, 0, 0, 0,106, 19, 88,205,128,106, 0,
|
||||
/* 0x0600 */ 86,131,125, 8, 1, 25,192,131,224,240,131,192, 17, 80,106, 3,
|
||||
/* 0x0610 */ 255,117, 12,255,117, 8,232,252,255,255,255,137,194,131,196, 24,
|
||||
/* 0x0620 */ 137,193, 61, 0,240,255,255,119, 16,235, 7,185,228,255,255,255,
|
||||
/* 0x0630 */ 235, 7,141, 70, 1,137,193, 9,209,137,200,141,101,244, 91, 94,
|
||||
/* 0x0640 */ 95,201,195, 90,232, 19, 0, 0, 0, 0, 0, 0, 0, 0, 46,115,
|
||||
/* 0x0650 */ 121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,
|
||||
/* 0x0660 */ 104,115,116,114,116, 97, 98, 0, 46,114,101,108, 69, 76, 70, 77,
|
||||
/* 0x0670 */ 65, 73, 78, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0680 */ 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0690 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
|
||||
/* 0x06b0 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
|
||||
/* 0x06c0 */ 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
||||
/* 0x06d0 */ 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06e0 */ 0, 0, 0, 0, 0, 9, 0, 0, 96, 0, 0, 0, 6, 0, 0, 0,
|
||||
/* 0x06f0 */ 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0,
|
||||
/* 0x0700 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 6, 0, 0,
|
||||
/* 0x0710 */ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0720 */ 0, 0, 0, 0, 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0730 */ 0, 0, 0, 0, 96, 9, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0,
|
||||
/* 0x0740 */ 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0,
|
||||
/* 0x0750 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 6, 0, 0,
|
||||
/* 0x0760 */ 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0770 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0780 */ 0, 0, 0, 0,196, 7, 0, 0,224, 0, 0, 0, 7, 0, 0, 0,
|
||||
/* 0x0790 */ 3, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
|
||||
/* 0x07a0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, 8, 0, 0,
|
||||
/* 0x07b0 */ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x07c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07e0 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07f0 */ 3, 0, 3, 0, 1, 0, 0, 0,247, 3, 0, 0, 24, 2, 0, 0,
|
||||
/* 0x0800 */ 18, 0, 1, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0810 */ 16, 0, 0, 0, 25, 0, 0, 0,204, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0820 */ 16, 0, 1, 0, 33, 0, 0, 0,114, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0830 */ 16, 0, 1, 0, 38, 0, 0, 0,149, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0840 */ 16, 0, 1, 0, 44, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0850 */ 16, 0, 1, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0860 */ 16, 0, 1, 0, 66, 0, 0, 0,186, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0870 */ 16, 0, 1, 0, 73, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0880 */ 16, 0, 1, 0, 81, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0890 */ 16, 0, 1, 0, 86, 0, 0, 0,164, 1, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x08a0 */ 16, 0, 1, 0, 0,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
||||
/* 0x08b0 */ 100, 95,102,100, 0, 79, 95, 66, 73, 78, 70, 79, 0,109,101,109,
|
||||
/* 0x08c0 */ 112, 99,112,121, 0,109,109, 97,112, 0,117,110, 97,109,101, 0,
|
||||
/* 0x08d0 */ 103,101,116, 95,117,112,120,102,110, 95,112, 97,116,104, 0, 95,
|
||||
/* 0x08e0 */ 115,116, 97,114,116, 0,109,101,109,115,101,116, 0,109,121, 95,
|
||||
/* 0x08f0 */ 98,107,112,116, 0,115,116, 97,116, 0,109,107,100,105,114, 0,
|
||||
/* 0x0900 */ 5, 0, 0, 0, 2, 2, 0, 0,165, 0, 0, 0, 2, 3, 0, 0,
|
||||
/* 0x0910 */ 74, 1, 0, 0, 2, 6, 0, 0, 7, 2, 0, 0, 2, 10, 0, 0,
|
||||
/* 0x0920 */ 14, 2, 0, 0, 2, 12, 0, 0, 60, 2, 0, 0, 2, 13, 0, 0,
|
||||
/* 0x0930 */ 43, 3, 0, 0, 2, 5, 0, 0,119, 4, 0, 0, 2, 11, 0, 0,
|
||||
/* 0x0940 */ 152, 4, 0, 0, 2, 7, 0, 0,245, 4, 0, 0, 2, 8, 0, 0,
|
||||
/* 0x0950 */ 124, 5, 0, 0, 2, 10, 0, 0,227, 5, 0, 0, 2, 6, 0, 0,
|
||||
/* 0x0960 */ 2, 0, 0, 0, 2, 1, 0, 0, 6, 0, 0, 0, 1, 4, 0, 0,
|
||||
/* 0x0970 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51,
|
||||
/* 0x0980 */ 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110,115,
|
||||
/* 0x0990 */ 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x09a0 */ 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77,
|
||||
/* 0x09b0 */ 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32,
|
||||
/* 0x09c0 */ 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110,
|
||||
/* 0x09d0 */ 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77,
|
||||
/* 0x09e0 */ 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 54, 48,102, 32, 32,
|
||||
/* 0x09f0 */ 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32,
|
||||
/* 0x0a00 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76,
|
||||
/* 0x0a10 */ 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 97, 32, 32,
|
||||
/* 0x0a20 */ 48, 32, 32, 48, 32, 32, 48, 54, 52, 51, 32, 32, 50, 42, 42, 48,
|
||||
/* 0x0a30 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79,
|
||||
/* 0x0a40 */ 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0a50 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0a60 */ 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48,
|
||||
/* 0x0a70 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69,
|
||||
/* 0x0a80 */ 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0a90 */ 78, 90, 10, 48, 48, 48, 48, 48, 51,102, 55, 32,103, 32, 32, 32,
|
||||
/* 0x0aa0 */ 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 50, 49,
|
||||
/* 0x0ab0 */ 56, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,
|
||||
/* 0x0ac0 */ 100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0ad0 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78,
|
||||
/* 0x0ae0 */ 70, 79, 10, 48, 48, 48, 48, 48, 49, 99, 99, 32,103, 32, 32, 32,
|
||||
/* 0x0af0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,
|
||||
/* 0x0b00 */ 101,109,112, 99,112,121, 10, 48, 48, 48, 48, 48, 49, 55, 50, 32,
|
||||
/* 0x0430 */ 83,129,236, 60, 16, 0, 0,186, 0, 0, 0, 0,232, 4, 0, 0,
|
||||
/* 0x0440 */ 0,117,112,120, 0, 94,185, 16, 0, 0, 0,184,100, 1, 0, 0,
|
||||
/* 0x0450 */ 137,243,205,128,137,199,131,248,234,117, 13,184,100, 1, 0, 0,
|
||||
/* 0x0460 */ 137,243,137,209,205,128,137,199,133,255,121, 68,232, 9, 0, 0,
|
||||
/* 0x0470 */ 0, 47,100,101,118, 47,115,104,109, 0, 95,185, 2, 0, 65, 0,
|
||||
/* 0x0480 */ 190,192, 1, 0, 0,137,251,137,242,106, 5, 88,205,128,137,199,
|
||||
/* 0x0490 */ 133,192,121, 28,232, 13, 0, 0, 0,109,101,109,102,100, 95, 99,
|
||||
/* 0x04a0 */ 114,101, 97,116,101, 0, 88, 80,232,252,255,255,255,131,196, 4,
|
||||
/* 0x04b0 */ 141,157,244,239,255,255, 83,232,252,255,255,255,190, 0, 0, 0,
|
||||
/* 0x04c0 */ 0,232, 4, 0, 0, 0, 97,110,100, 0, 88,199, 4, 36, 3, 0,
|
||||
/* 0x04d0 */ 0, 0, 83, 80,232, 24,255,255,255,131,196, 12,133,192,116, 39,
|
||||
/* 0x04e0 */ 232, 4, 0, 0, 0, 76,105,110, 0, 88,106, 3, 83, 80,232,254,
|
||||
/* 0x04f0 */ 254,255,255,131,196, 12,133,192,117, 13,128,189,118,240,255,255,
|
||||
/* 0x0500 */ 52,126, 4,102,190, 1, 0,133,246,117,123,131,125, 16, 0,117,
|
||||
/* 0x0510 */ 28,232,252,255,255,255,137, 69, 16,133,192,117, 16,141,133,244,
|
||||
/* 0x0520 */ 239,255,255,137, 69, 16,198,133,244,239,255,255, 0,133,246,117,
|
||||
/* 0x0530 */ 85,131,255,218,117, 80,131,125, 16, 0,116, 74,139, 85, 16,128,
|
||||
/* 0x0540 */ 58, 0,117, 26,141,133,244,239,255,255, 80, 82,232, 84,253,255,
|
||||
/* 0x0550 */ 255,131,196, 8,137,193,133,192, 15,136, 1, 1, 0, 0,185,194,
|
||||
/* 0x0560 */ 0, 0, 0,191,192, 1, 0, 0,139, 93, 16,137,250,106, 5, 88,
|
||||
/* 0x0570 */ 205,128,137,199,137,193,133,192, 15,136,225, 0, 0, 0,139, 93,
|
||||
/* 0x0580 */ 16,106, 10, 88,205,128,131,125, 12, 0, 15,132,148, 0, 0, 0,
|
||||
/* 0x0590 */ 133,246,116, 22,137,251,139, 77, 12,106, 93, 88,205,128,137,193,
|
||||
/* 0x05a0 */ 133,192, 15,136,183, 0, 0, 0,235,122,141,133,244,239,255,255,
|
||||
/* 0x05b0 */ 104, 0, 16, 0, 0,106, 0, 80,232,252,255,255,255,139, 69, 12,
|
||||
/* 0x05c0 */ 137,133,208,239,255,255,131,196, 12,133,192,116, 73,141,181,244,
|
||||
/* 0x05d0 */ 239,255,255,139,149,208,239,255,255,137,149,184,239,255,255,129,
|
||||
/* 0x05e0 */ 250, 0, 16, 0, 0,118, 10,199,133,184,239,255,255, 0, 16, 0,
|
||||
/* 0x05f0 */ 0,137,251,137,241,139,149,184,239,255,255,106, 4, 88,205,128,
|
||||
/* 0x0600 */ 59,133,184,239,255,255,117, 73,139,133,184,239,255,255, 41,133,
|
||||
/* 0x0610 */ 208,239,255,255,117,189,185, 0, 0, 0, 0,137,251,137,202,106,
|
||||
/* 0x0620 */ 19, 88,205,128,106, 0, 87,131,125, 8, 1, 25,192,131,224,240,
|
||||
/* 0x0630 */ 131,192, 17, 80,106, 3,255,117, 12,255,117, 8,232,252,255,255,
|
||||
/* 0x0640 */ 255,137,194,131,196, 24,137,193, 61, 0,240,255,255,119, 16,235,
|
||||
/* 0x0650 */ 7,185,228,255,255,255,235, 7,141, 71, 1,137,193, 9,209,137,
|
||||
/* 0x0660 */ 200,141,101,244, 91, 94, 95,201,195, 90,232, 19, 0, 0, 0, 0,
|
||||
/* 0x0670 */ 0, 0, 0, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,114,
|
||||
/* 0x0680 */ 116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,114,
|
||||
/* 0x0690 */ 101,108, 69, 76, 70, 77, 65, 73, 78, 88, 0, 46,114,101,108, 69,
|
||||
/* 0x06a0 */ 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06d0 */ 31, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06e0 */ 52, 0, 0, 0, 53, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06f0 */ 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0,
|
||||
/* 0x0700 */ 0, 0, 0, 0, 0, 0, 0, 0, 36, 9, 0, 0, 96, 0, 0, 0,
|
||||
/* 0x0710 */ 6, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0,
|
||||
/* 0x0720 */ 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0730 */ 105, 6, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0740 */ 1, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 9, 0, 0, 0,
|
||||
/* 0x0750 */ 0, 0, 0, 0, 0, 0, 0, 0,132, 9, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0760 */ 6, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0,
|
||||
/* 0x0770 */ 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0780 */ 115, 6, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0790 */ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x07a0 */ 0, 0, 0, 0, 0, 0, 0, 0,232, 7, 0, 0,224, 0, 0, 0,
|
||||
/* 0x07b0 */ 7, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x07c0 */ 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07d0 */ 200, 8, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07e0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0800 */ 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0810 */ 0, 0, 0, 0, 3, 0, 3, 0, 1, 0, 0, 0,247, 3, 0, 0,
|
||||
/* 0x0820 */ 62, 2, 0, 0, 18, 0, 1, 0, 17, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0830 */ 0, 0, 0, 0, 16, 0, 0, 0, 25, 0, 0, 0,204, 1, 0, 0,
|
||||
/* 0x0840 */ 0, 0, 0, 0, 16, 0, 1, 0, 33, 0, 0, 0,114, 1, 0, 0,
|
||||
/* 0x0850 */ 0, 0, 0, 0, 16, 0, 1, 0, 38, 0, 0, 0,149, 1, 0, 0,
|
||||
/* 0x0860 */ 0, 0, 0, 0, 16, 0, 1, 0, 44, 0, 0, 0,128, 1, 0, 0,
|
||||
/* 0x0870 */ 0, 0, 0, 0, 16, 0, 1, 0, 59, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0880 */ 0, 0, 0, 0, 16, 0, 1, 0, 66, 0, 0, 0,186, 1, 0, 0,
|
||||
/* 0x0890 */ 0, 0, 0, 0, 16, 0, 1, 0, 73, 0, 0, 0,236, 1, 0, 0,
|
||||
/* 0x08a0 */ 0, 0, 0, 0, 16, 0, 1, 0, 81, 0, 0, 0,131, 1, 0, 0,
|
||||
/* 0x08b0 */ 0, 0, 0, 0, 16, 0, 1, 0, 86, 0, 0, 0,164, 1, 0, 0,
|
||||
/* 0x08c0 */ 0, 0, 0, 0, 16, 0, 1, 0, 0,117,112,120, 95,109,109, 97,
|
||||
/* 0x08d0 */ 112, 95, 97,110,100, 95,102,100, 0, 79, 95, 66, 73, 78, 70, 79,
|
||||
/* 0x08e0 */ 0,109,101,109,112, 99,112,121, 0,109,109, 97,112, 0,117,110,
|
||||
/* 0x08f0 */ 97,109,101, 0,103,101,116, 95,117,112,120,102,110, 95,112, 97,
|
||||
/* 0x0900 */ 116,104, 0, 95,115,116, 97,114,116, 0,109,101,109,115,101,116,
|
||||
/* 0x0910 */ 0,109,121, 95, 98,107,112,116, 0,115,116, 97,116, 0,109,107,
|
||||
/* 0x0920 */ 100,105,114, 0, 5, 0, 0, 0, 2, 2, 0, 0,165, 0, 0, 0,
|
||||
/* 0x0930 */ 2, 3, 0, 0, 74, 1, 0, 0, 2, 6, 0, 0, 7, 2, 0, 0,
|
||||
/* 0x0940 */ 2, 10, 0, 0, 14, 2, 0, 0, 2, 12, 0, 0, 60, 2, 0, 0,
|
||||
/* 0x0950 */ 2, 13, 0, 0, 43, 3, 0, 0, 2, 5, 0, 0,117, 4, 0, 0,
|
||||
/* 0x0960 */ 2, 11, 0, 0,132, 4, 0, 0, 2, 7, 0, 0,222, 4, 0, 0,
|
||||
/* 0x0970 */ 2, 8, 0, 0,133, 5, 0, 0, 2, 10, 0, 0, 9, 6, 0, 0,
|
||||
/* 0x0980 */ 2, 6, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0, 6, 0, 0, 0,
|
||||
/* 0x0990 */ 1, 4, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,
|
||||
/* 0x09a0 */ 101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,
|
||||
/* 0x09b0 */ 105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32,
|
||||
/* 0x09c0 */ 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32,
|
||||
/* 0x09d0 */ 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32,
|
||||
/* 0x09e0 */ 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32,
|
||||
/* 0x09f0 */ 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32,
|
||||
/* 0x0a00 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 54,
|
||||
/* 0x0a10 */ 51, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50,
|
||||
/* 0x0a20 */ 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32,
|
||||
/* 0x0a30 */ 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0a40 */ 48, 97, 32, 32, 48, 32, 32, 48, 32, 32, 48, 54, 54, 57, 32, 32,
|
||||
/* 0x0a50 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83,
|
||||
/* 0x0a60 */ 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48,
|
||||
/* 0x0a70 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76,
|
||||
/* 0x0a80 */ 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0a90 */ 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
|
||||
/* 0x0aa0 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76,
|
||||
/* 0x0ab0 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 51,102, 55, 32,
|
||||
/* 0x0ac0 */ 103, 32, 32, 32, 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x0ad0 */ 32, 48, 50, 51,101, 32,117,112,120, 95,109,109, 97,112, 95, 97,
|
||||
/* 0x0ae0 */ 110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
||||
/* 0x0af0 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79,
|
||||
/* 0x0b00 */ 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48, 49, 99, 99, 32,
|
||||
/* 0x0b10 */ 103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x0b20 */ 32, 48, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 49, 57, 53,
|
||||
/* 0x0b30 */ 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0b40 */ 88, 32, 48, 32,117,110, 97,109,101, 10, 48, 48, 48, 48, 48, 49,
|
||||
/* 0x0b50 */ 56, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
|
||||
/* 0x0b60 */ 73, 78, 88, 32, 48, 32,103,101,116, 95,117,112,120,102,110, 95,
|
||||
/* 0x0b70 */ 112, 97,116,104, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
||||
/* 0x0b80 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
||||
/* 0x0b90 */ 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 49, 98, 97,
|
||||
/* 0x0ba0 */ 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0bb0 */ 88, 32, 48, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0bc0 */ 49,101, 99, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
||||
/* 0x0bd0 */ 65, 73, 78, 88, 32, 48, 32,109,121, 95, 98,107,112,116, 10, 48,
|
||||
/* 0x0be0 */ 48, 48, 48, 48, 49, 56, 51, 32,103, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0bf0 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,115,116, 97,116, 10,
|
||||
/* 0x0c00 */ 48, 48, 48, 48, 48, 49, 97, 52, 32,103, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0c10 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,107,100,105,
|
||||
/* 0x0c20 */ 114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
|
||||
/* 0x0c30 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65,
|
||||
/* 0x0c40 */ 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84,
|
||||
/* 0x0c50 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0c60 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 53, 32,
|
||||
/* 0x0c70 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0c80 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0c90 */ 48, 97, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32,
|
||||
/* 0x0ca0 */ 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, 97,112, 95, 97,
|
||||
/* 0x0cb0 */ 110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 49, 52, 97, 32, 82,
|
||||
/* 0x0cc0 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0cd0 */ 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 50, 48, 55, 32, 82,
|
||||
/* 0x0ce0 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0cf0 */ 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 50, 48,101,
|
||||
/* 0x0d00 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||
/* 0x0d10 */ 32, 32, 32,115,116, 97,116, 10, 48, 48, 48, 48, 48, 50, 51, 99,
|
||||
/* 0x0d20 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||
/* 0x0d30 */ 32, 32, 32,109,107,100,105,114, 10, 48, 48, 48, 48, 48, 51, 50,
|
||||
/* 0x0d40 */ 98, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||
/* 0x0d50 */ 32, 32, 32, 32,109,101,109,112, 99,112,121, 10, 48, 48, 48, 48,
|
||||
/* 0x0d60 */ 48, 52, 55, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0d70 */ 32, 32, 32, 32, 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48,
|
||||
/* 0x0d80 */ 48, 48, 48, 48, 52, 57, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67,
|
||||
/* 0x0d90 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,110, 97,109,101, 10,
|
||||
/* 0x0da0 */ 48, 48, 48, 48, 48, 52,102, 53, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||
/* 0x0db0 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,117,
|
||||
/* 0x0dc0 */ 112,120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 53,
|
||||
/* 0x0dd0 */ 55, 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||
/* 0x0de0 */ 32, 32, 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48,
|
||||
/* 0x0df0 */ 48, 53,101, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0e00 */ 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, 10, 82, 69, 76,
|
||||
/* 0x0e10 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
|
||||
/* 0x0e20 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10,
|
||||
/* 0x0e30 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
|
||||
/* 0x0e40 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
|
||||
/* 0x0e50 */ 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95,
|
||||
/* 0x0e60 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
||||
/* 0x0e70 */ 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95,
|
||||
/* 0x0e80 */ 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0e90 */ 79, 95, 66, 73, 78, 70, 79, 10
|
||||
/* 0x0b20 */ 32, 48, 32,109,101,109,112, 99,112,121, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0b30 */ 49, 55, 50, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
|
||||
/* 0x0b40 */ 65, 73, 78, 88, 32, 48, 32,109,109, 97,112, 10, 48, 48, 48, 48,
|
||||
/* 0x0b50 */ 48, 49, 57, 53, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
|
||||
/* 0x0b60 */ 77, 65, 73, 78, 88, 32, 48, 32,117,110, 97,109,101, 10, 48, 48,
|
||||
/* 0x0b70 */ 48, 48, 48, 49, 56, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69,
|
||||
/* 0x0b80 */ 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116, 95,117,112,
|
||||
/* 0x0b90 */ 120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0ba0 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0bb0 */ 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48,
|
||||
/* 0x0bc0 */ 48, 49, 98, 97, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
|
||||
/* 0x0bd0 */ 77, 65, 73, 78, 88, 32, 48, 32,109,101,109,115,101,116, 10, 48,
|
||||
/* 0x0be0 */ 48, 48, 48, 48, 49,101, 99, 32,103, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0bf0 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,121, 95, 98,107,
|
||||
/* 0x0c00 */ 112,116, 10, 48, 48, 48, 48, 48, 49, 56, 51, 32,103, 32, 32, 32,
|
||||
/* 0x0c10 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,115,
|
||||
/* 0x0c20 */ 116, 97,116, 10, 48, 48, 48, 48, 48, 49, 97, 52, 32,103, 32, 32,
|
||||
/* 0x0c30 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,
|
||||
/* 0x0c40 */ 109,107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79,
|
||||
/* 0x0c50 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69,
|
||||
/* 0x0c60 */ 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84,
|
||||
/* 0x0c70 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0c80 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0c90 */ 48, 48, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32,
|
||||
/* 0x0ca0 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48,
|
||||
/* 0x0cb0 */ 48, 48, 48, 48, 48, 97, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67,
|
||||
/* 0x0cc0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109,
|
||||
/* 0x0cd0 */ 97,112, 95, 97,110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 49,
|
||||
/* 0x0ce0 */ 52, 97, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||
/* 0x0cf0 */ 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 50,
|
||||
/* 0x0d00 */ 48, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||
/* 0x0d10 */ 32, 32, 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48,
|
||||
/* 0x0d20 */ 48, 50, 48,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0d30 */ 32, 32, 32, 32, 32, 32, 32,115,116, 97,116, 10, 48, 48, 48, 48,
|
||||
/* 0x0d40 */ 48, 50, 51, 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0d50 */ 32, 32, 32, 32, 32, 32, 32,109,107,100,105,114, 10, 48, 48, 48,
|
||||
/* 0x0d60 */ 48, 48, 51, 50, 98, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50,
|
||||
/* 0x0d70 */ 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99,112,121, 10,
|
||||
/* 0x0d80 */ 48, 48, 48, 48, 48, 52, 55, 53, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||
/* 0x0d90 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,121, 95, 98,107,
|
||||
/* 0x0da0 */ 112,116, 10, 48, 48, 48, 48, 48, 52, 56, 52, 32, 82, 95, 51, 56,
|
||||
/* 0x0db0 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,110,
|
||||
/* 0x0dc0 */ 97,109,101, 10, 48, 48, 48, 48, 48, 52,100,101, 32, 82, 95, 51,
|
||||
/* 0x0dd0 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,
|
||||
/* 0x0de0 */ 101,116, 95,117,112,120,102,110, 95,112, 97,116,104, 10, 48, 48,
|
||||
/* 0x0df0 */ 48, 48, 48, 53, 56, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
||||
/* 0x0e00 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,115,101,116, 10,
|
||||
/* 0x0e10 */ 48, 48, 48, 48, 48, 54, 48, 57, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||
/* 0x0e20 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10,
|
||||
/* 0x0e30 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
|
||||
/* 0x0e40 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0e50 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80,
|
||||
/* 0x0e60 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86,
|
||||
/* 0x0e70 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95,
|
||||
/* 0x0e80 */ 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0e90 */ 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0ea0 */ 54, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0eb0 */ 32, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
|
||||
};
|
||||
|
||||
2099
src/stub/i386-linux.elf-fold.h
generated
2099
src/stub/i386-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
321
src/stub/i386-linux.elf-so_entry.h
generated
321
src/stub/i386-linux.elf-so_entry.h
generated
@ -1,5 +1,5 @@
|
||||
/* i386-linux.elf-so_entry.h
|
||||
created from i386-linux.elf-so_entry.bin, 3261 (0xcbd) bytes
|
||||
created from i386-linux.elf-so_entry.bin, 3297 (0xce1) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -32,14 +32,14 @@
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_SIZE 3261
|
||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_ADLER32 0x214795d6
|
||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_CRC32 0x855baf9c
|
||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_SIZE 3297
|
||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_ADLER32 0xd917c0ec
|
||||
#define STUB_I386_LINUX_ELF_SO_ENTRY_CRC32 0x87c4b4db
|
||||
|
||||
unsigned char stub_i386_linux_elf_so_entry[3261] = {
|
||||
unsigned char stub_i386_linux_elf_so_entry[3297] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 128, 5, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||
/* 0x0020 */ 164, 5, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
||||
/* 0x0030 */ 8, 0, 5, 0,144, 96,232,252,255,255,255, 1,219,116, 2,243,
|
||||
/* 0x0040 */ 195,139, 30,131,238,252, 17,219,195, 94,102,131,126, 8, 2,116,
|
||||
/* 0x0050 */ 1,244,141, 74,233, 81,139, 6, 80,137,229, 41,196,131,228,248,
|
||||
@ -88,157 +88,160 @@ unsigned char stub_i386_linux_elf_so_entry[3261] = {
|
||||
/* 0x0300 */ 131,249,255,116, 30,138, 22,131,202, 32, 15,190,210,138, 3,131,
|
||||
/* 0x0310 */ 200, 32, 15,190,192, 67, 70, 41,194,137,208,117, 11, 73,131,249,
|
||||
/* 0x0320 */ 255,117,226,184, 0, 0, 0, 0, 91, 94,195, 85,137,229, 87, 86,
|
||||
/* 0x0330 */ 83,131,236, 92,186, 0, 0, 0, 0,232, 4, 0, 0, 0,117,112,
|
||||
/* 0x0340 */ 120, 0, 95,184,100, 1, 0, 0,137,251,185, 16, 0, 0, 0,205,
|
||||
/* 0x0350 */ 128,137,198,131,248,234,117, 13,184,100, 1, 0, 0,137,251,137,
|
||||
/* 0x0360 */ 209,205,128,137,198,133,246,121, 73,232, 9, 0, 0, 0, 47,100,
|
||||
/* 0x0370 */ 101,118, 47,115,104,109, 0, 88,137, 69,160,191, 2, 0, 65, 0,
|
||||
/* 0x0380 */ 190,192, 1, 0, 0,137,195,137,249,137,242,106, 5, 88,205,128,
|
||||
/* 0x0390 */ 137,198,133,192,121, 28,232, 13, 0, 0, 0,109,101,109,102,100,
|
||||
/* 0x03a0 */ 95, 99,114,101, 97,116,101, 0, 88, 80,232,252,255,255,255,131,
|
||||
/* 0x03b0 */ 196, 4,129,236, 16, 16, 0, 0,141, 68, 36, 15,131,224,240,137,
|
||||
/* 0x03c0 */ 69,240,199, 0, 0, 0, 0, 0,255,117,240,232,252,255,255,255,
|
||||
/* 0x03d0 */ 191, 0, 0, 0, 0,232, 4, 0, 0, 0, 97,110,100, 0, 89,199,
|
||||
/* 0x03e0 */ 4, 36, 3, 0, 0, 0,141, 69,240, 80, 81,232, 1,255,255,255,
|
||||
/* 0x03f0 */ 131,196, 12,133,192,116, 39,232, 4, 0, 0, 0, 76,105,110, 0,
|
||||
/* 0x0400 */ 88,106, 3,141, 77,240, 81, 80,232,228,254,255,255,131,196, 12,
|
||||
/* 0x0410 */ 133,192,117, 10,128,125,114, 52,126, 4,102,191, 1, 0,133,255,
|
||||
/* 0x0420 */ 117, 99,131,125, 16, 0,117, 8,232,252,255,255,255,137, 69, 16,
|
||||
/* 0x0430 */ 133,255,117, 81,131,254,218,117, 76,131,125, 16, 0,116, 70,139,
|
||||
/* 0x0440 */ 69, 16,128, 56, 0,117, 22,255,117,240, 80,232, 85,253,255,255,
|
||||
/* 0x0450 */ 131,196, 8,137,193,133,192, 15,136,220, 0, 0, 0,190,194, 0,
|
||||
/* 0x0460 */ 0, 0,139, 93, 16,137,241,186,192, 1, 0, 0,106, 5, 88,205,
|
||||
/* 0x0470 */ 128,137,198,137,193,133,192, 15,136,188, 0, 0, 0,139, 93, 16,
|
||||
/* 0x0480 */ 106, 10, 88,205,128,131,125, 12, 0,116,115,133,255,116, 22,137,
|
||||
/* 0x0490 */ 243,139, 77, 12,106, 93, 88,205,128,137,193,133,192, 15,136,150,
|
||||
/* 0x04a0 */ 0, 0, 0,235, 89,104, 0, 16, 0, 0,106, 0,255,117,240,232,
|
||||
/* 0x04b0 */ 252,255,255,255,139,125, 12,131,196, 12,133,255,116, 47,139, 69,
|
||||
/* 0x04c0 */ 240,137, 69,152,137,125,156,129,255, 0, 16, 0, 0,118, 7,199,
|
||||
/* 0x04d0 */ 69,156, 0, 16, 0, 0,137,243,139, 77,152,139, 85,156,106, 4,
|
||||
/* 0x04e0 */ 88,205,128, 59, 69,156,117, 67, 43,125,156,117,215,137,243,185,
|
||||
/* 0x04f0 */ 0, 0, 0, 0,186, 0, 0, 0, 0,106, 19, 88,205,128,106, 0,
|
||||
/* 0x0500 */ 86,131,125, 8, 1, 25,192,131,224,240,131,192, 17, 80,106, 3,
|
||||
/* 0x0510 */ 255,117, 12,255,117, 8,232,252,255,255,255,137,194,131,196, 24,
|
||||
/* 0x0520 */ 137,193, 61, 0,240,255,255,119, 16,235, 7,185,228,255,255,255,
|
||||
/* 0x0530 */ 235, 7,141, 70, 1,137,193, 9,209,137,200,141,101,244, 91, 94,
|
||||
/* 0x0540 */ 95,201,195, 90,232, 17, 0, 0, 0, 0, 46,115,121,109,116, 97,
|
||||
/* 0x0550 */ 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114,
|
||||
/* 0x0560 */ 116, 97, 98, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x0570 */ 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0,
|
||||
/* 0x0580 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0590 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x05a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x05b0 */ 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 15, 5, 0, 0,
|
||||
/* 0x05c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x05d0 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x05e0 */ 228, 7, 0, 0, 80, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x05f0 */ 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0600 */ 0, 0, 0, 0, 0, 0, 0, 0, 67, 5, 0, 0, 6, 0, 0, 0,
|
||||
/* 0x0610 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0620 */ 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0630 */ 52, 8, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0,
|
||||
/* 0x0640 */ 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0,
|
||||
/* 0x0650 */ 0, 0, 0, 0, 0, 0, 0, 0, 73, 5, 0, 0, 53, 0, 0, 0,
|
||||
/* 0x0660 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0670 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0680 */ 192, 6, 0, 0,208, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0,
|
||||
/* 0x0690 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0,
|
||||
/* 0x06a0 */ 0, 0, 0, 0, 0, 0, 0, 0,144, 7, 0, 0, 84, 0, 0, 0,
|
||||
/* 0x06b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0,
|
||||
/* 0x06e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0,
|
||||
/* 0x06f0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
|
||||
/* 0x0700 */ 8, 0, 0, 0,247, 2, 0, 0, 24, 2, 0, 0, 18, 0, 1, 0,
|
||||
/* 0x0710 */ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0720 */ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0730 */ 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0740 */ 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0750 */ 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0760 */ 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0770 */ 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0780 */ 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0790 */ 0, 95,115,116, 97,114,116, 0,117,112,120, 95,109,109, 97,112,
|
||||
/* 0x07a0 */ 95, 97,110,100, 95,102,100, 0,109,101,109,112, 99,112,121, 0,
|
||||
/* 0x07b0 */ 109,109, 97,112, 0,117,110, 97,109,101, 0,103,101,116, 95,117,
|
||||
/* 0x07c0 */ 112,120,102,110, 95,112, 97,116,104, 0,109,101,109,115,101,116,
|
||||
/* 0x07d0 */ 0,109,121, 95, 98,107,112,116, 0,115,116, 97,116, 0,109,107,
|
||||
/* 0x07e0 */ 100,105,114, 0, 3, 0, 0, 0, 2, 2, 0, 0, 7, 1, 0, 0,
|
||||
/* 0x07f0 */ 2, 9, 0, 0, 14, 1, 0, 0, 2, 11, 0, 0, 60, 1, 0, 0,
|
||||
/* 0x0800 */ 2, 12, 0, 0, 43, 2, 0, 0, 2, 5, 0, 0,119, 3, 0, 0,
|
||||
/* 0x0810 */ 2, 10, 0, 0,152, 3, 0, 0, 2, 7, 0, 0,245, 3, 0, 0,
|
||||
/* 0x0820 */ 2, 8, 0, 0,124, 4, 0, 0, 2, 9, 0, 0,227, 4, 0, 0,
|
||||
/* 0x0830 */ 2, 6, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0,102,105,108,101,
|
||||
/* 0x0840 */ 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45,105, 51,
|
||||
/* 0x0850 */ 56, 54, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,
|
||||
/* 0x0860 */ 120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0870 */ 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32,
|
||||
/* 0x0880 */ 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,
|
||||
/* 0x0890 */ 108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108,
|
||||
/* 0x08a0 */ 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x08b0 */ 32, 32, 32, 32, 32, 32, 48, 53, 48,102, 32, 32, 48, 32, 32, 48,
|
||||
/* 0x08c0 */ 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78,
|
||||
/* 0x08d0 */ 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x08e0 */ 78, 90, 32, 32, 32, 32, 32, 32, 48, 54, 32, 32, 48, 32, 32, 48,
|
||||
/* 0x08f0 */ 32, 32, 48, 53, 52, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
|
||||
/* 0x0900 */ 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65,
|
||||
/* 0x0910 */ 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
|
||||
/* 0x0920 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
||||
/* 0x0930 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0940 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65,
|
||||
/* 0x0950 */ 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48,
|
||||
/* 0x0960 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0970 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,
|
||||
/* 0x0980 */ 116, 10, 48, 48, 48, 48, 48, 50,102, 55, 32,103, 32, 32, 32, 32,
|
||||
/* 0x0990 */ 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 50, 49, 56,
|
||||
/* 0x09a0 */ 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100,
|
||||
/* 0x09b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x09c0 */ 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,101,109,112, 99,112,
|
||||
/* 0x09d0 */ 121, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x09e0 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,109, 97,112, 10,
|
||||
/* 0x09f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0a00 */ 32, 42, 85, 78, 68, 42, 32, 48, 32,117,110, 97,109,101, 10, 48,
|
||||
/* 0x0a10 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0a20 */ 42, 85, 78, 68, 42, 32, 48, 32,103,101,116, 95,117,112,120,102,
|
||||
/* 0x0a30 */ 110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x0a40 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,
|
||||
/* 0x0a50 */ 109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x0a60 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,
|
||||
/* 0x0a70 */ 109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0a80 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48,
|
||||
/* 0x0a90 */ 32,115,116, 97,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
||||
/* 0x0aa0 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,
|
||||
/* 0x0ab0 */ 107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||
/* 0x0ac0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76,
|
||||
/* 0x0ad0 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||
/* 0x0ae0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0af0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0b00 */ 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||
/* 0x0b10 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48,
|
||||
/* 0x0b20 */ 48, 48, 48, 49, 48, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
||||
/* 0x0b30 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,115,101,116, 10,
|
||||
/* 0x0b40 */ 48, 48, 48, 48, 48, 49, 48,101, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||
/* 0x0b50 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,116, 10,
|
||||
/* 0x0b60 */ 48, 48, 48, 48, 48, 49, 51, 99, 32, 82, 95, 51, 56, 54, 95, 80,
|
||||
/* 0x0b70 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,107,100,105,114,
|
||||
/* 0x0b80 */ 10, 48, 48, 48, 48, 48, 50, 50, 98, 32, 82, 95, 51, 56, 54, 95,
|
||||
/* 0x0b90 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112,
|
||||
/* 0x0ba0 */ 99,112,121, 10, 48, 48, 48, 48, 48, 51, 55, 55, 32, 82, 95, 51,
|
||||
/* 0x0bb0 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,
|
||||
/* 0x0bc0 */ 121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48, 51, 57, 56, 32,
|
||||
/* 0x0bd0 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0be0 */ 32, 32,117,110, 97,109,101, 10, 48, 48, 48, 48, 48, 51,102, 53,
|
||||
/* 0x0bf0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||
/* 0x0c00 */ 32, 32, 32,103,101,116, 95,117,112,120,102,110, 95,112, 97,116,
|
||||
/* 0x0c10 */ 104, 10, 48, 48, 48, 48, 48, 52, 55, 99, 32, 82, 95, 51, 56, 54,
|
||||
/* 0x0c20 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,
|
||||
/* 0x0c30 */ 115,101,116, 10, 48, 48, 48, 48, 48, 52,101, 51, 32, 82, 95, 51,
|
||||
/* 0x0c40 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,
|
||||
/* 0x0c50 */ 109, 97,112, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
|
||||
/* 0x0c60 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70,
|
||||
/* 0x0c70 */ 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||
/* 0x0c80 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0c90 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0ca0 */ 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||
/* 0x0cb0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10
|
||||
/* 0x0330 */ 83,129,236, 60, 16, 0, 0,186, 0, 0, 0, 0,232, 4, 0, 0,
|
||||
/* 0x0340 */ 0,117,112,120, 0, 94,185, 16, 0, 0, 0,184,100, 1, 0, 0,
|
||||
/* 0x0350 */ 137,243,205,128,137,199,131,248,234,117, 13,184,100, 1, 0, 0,
|
||||
/* 0x0360 */ 137,243,137,209,205,128,137,199,133,255,121, 68,232, 9, 0, 0,
|
||||
/* 0x0370 */ 0, 47,100,101,118, 47,115,104,109, 0, 95,185, 2, 0, 65, 0,
|
||||
/* 0x0380 */ 190,192, 1, 0, 0,137,251,137,242,106, 5, 88,205,128,137,199,
|
||||
/* 0x0390 */ 133,192,121, 28,232, 13, 0, 0, 0,109,101,109,102,100, 95, 99,
|
||||
/* 0x03a0 */ 114,101, 97,116,101, 0, 88, 80,232,252,255,255,255,131,196, 4,
|
||||
/* 0x03b0 */ 141,157,244,239,255,255, 83,232,252,255,255,255,190, 0, 0, 0,
|
||||
/* 0x03c0 */ 0,232, 4, 0, 0, 0, 97,110,100, 0, 88,199, 4, 36, 3, 0,
|
||||
/* 0x03d0 */ 0, 0, 83, 80,232, 24,255,255,255,131,196, 12,133,192,116, 39,
|
||||
/* 0x03e0 */ 232, 4, 0, 0, 0, 76,105,110, 0, 88,106, 3, 83, 80,232,254,
|
||||
/* 0x03f0 */ 254,255,255,131,196, 12,133,192,117, 13,128,189,118,240,255,255,
|
||||
/* 0x0400 */ 52,126, 4,102,190, 1, 0,133,246,117,123,131,125, 16, 0,117,
|
||||
/* 0x0410 */ 28,232,252,255,255,255,137, 69, 16,133,192,117, 16,141,133,244,
|
||||
/* 0x0420 */ 239,255,255,137, 69, 16,198,133,244,239,255,255, 0,133,246,117,
|
||||
/* 0x0430 */ 85,131,255,218,117, 80,131,125, 16, 0,116, 74,139, 85, 16,128,
|
||||
/* 0x0440 */ 58, 0,117, 26,141,133,244,239,255,255, 80, 82,232, 84,253,255,
|
||||
/* 0x0450 */ 255,131,196, 8,137,193,133,192, 15,136, 1, 1, 0, 0,185,194,
|
||||
/* 0x0460 */ 0, 0, 0,191,192, 1, 0, 0,139, 93, 16,137,250,106, 5, 88,
|
||||
/* 0x0470 */ 205,128,137,199,137,193,133,192, 15,136,225, 0, 0, 0,139, 93,
|
||||
/* 0x0480 */ 16,106, 10, 88,205,128,131,125, 12, 0, 15,132,148, 0, 0, 0,
|
||||
/* 0x0490 */ 133,246,116, 22,137,251,139, 77, 12,106, 93, 88,205,128,137,193,
|
||||
/* 0x04a0 */ 133,192, 15,136,183, 0, 0, 0,235,122,141,133,244,239,255,255,
|
||||
/* 0x04b0 */ 104, 0, 16, 0, 0,106, 0, 80,232,252,255,255,255,139, 69, 12,
|
||||
/* 0x04c0 */ 137,133,208,239,255,255,131,196, 12,133,192,116, 73,141,181,244,
|
||||
/* 0x04d0 */ 239,255,255,139,149,208,239,255,255,137,149,184,239,255,255,129,
|
||||
/* 0x04e0 */ 250, 0, 16, 0, 0,118, 10,199,133,184,239,255,255, 0, 16, 0,
|
||||
/* 0x04f0 */ 0,137,251,137,241,139,149,184,239,255,255,106, 4, 88,205,128,
|
||||
/* 0x0500 */ 59,133,184,239,255,255,117, 73,139,133,184,239,255,255, 41,133,
|
||||
/* 0x0510 */ 208,239,255,255,117,189,185, 0, 0, 0, 0,137,251,137,202,106,
|
||||
/* 0x0520 */ 19, 88,205,128,106, 0, 87,131,125, 8, 1, 25,192,131,224,240,
|
||||
/* 0x0530 */ 131,192, 17, 80,106, 3,255,117, 12,255,117, 8,232,252,255,255,
|
||||
/* 0x0540 */ 255,137,194,131,196, 24,137,193, 61, 0,240,255,255,119, 16,235,
|
||||
/* 0x0550 */ 7,185,228,255,255,255,235, 7,141, 71, 1,137,193, 9,209,137,
|
||||
/* 0x0560 */ 200,141,101,244, 91, 94, 95,201,195, 90,232, 17, 0, 0, 0, 0,
|
||||
/* 0x0570 */ 46,115,121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0,
|
||||
/* 0x0580 */ 46,115,104,115,116,114,116, 97, 98, 0, 46,114,101,108, 69, 76,
|
||||
/* 0x0590 */ 70, 77, 65, 73, 78, 88, 0, 46,114,101,108, 69, 76, 70, 77, 65,
|
||||
/* 0x05a0 */ 73, 78, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x05b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x05c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0,
|
||||
/* 0x05d0 */ 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
|
||||
/* 0x05e0 */ 53, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
||||
/* 0x05f0 */ 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0600 */ 0, 0, 0, 0, 8, 8, 0, 0, 80, 0, 0, 0, 6, 0, 0, 0,
|
||||
/* 0x0610 */ 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0,
|
||||
/* 0x0620 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 5, 0, 0,
|
||||
/* 0x0630 */ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0640 */ 0, 0, 0, 0, 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0650 */ 0, 0, 0, 0, 88, 8, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0,
|
||||
/* 0x0660 */ 3, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0,
|
||||
/* 0x0670 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0,
|
||||
/* 0x0680 */ 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0690 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06a0 */ 0, 0, 0, 0,228, 6, 0, 0,208, 0, 0, 0, 7, 0, 0, 0,
|
||||
/* 0x06b0 */ 4, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
|
||||
/* 0x06c0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 7, 0, 0,
|
||||
/* 0x06d0 */ 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x06e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x06f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0700 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0710 */ 3, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0720 */ 0, 0, 1, 0, 8, 0, 0, 0,247, 2, 0, 0, 62, 2, 0, 0,
|
||||
/* 0x0730 */ 18, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0740 */ 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0750 */ 16, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0760 */ 16, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0770 */ 16, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0780 */ 16, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0790 */ 16, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07a0 */ 16, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x07b0 */ 16, 0, 0, 0, 0, 95,115,116, 97,114,116, 0,117,112,120, 95,
|
||||
/* 0x07c0 */ 109,109, 97,112, 95, 97,110,100, 95,102,100, 0,109,101,109,112,
|
||||
/* 0x07d0 */ 99,112,121, 0,109,109, 97,112, 0,117,110, 97,109,101, 0,103,
|
||||
/* 0x07e0 */ 101,116, 95,117,112,120,102,110, 95,112, 97,116,104, 0,109,101,
|
||||
/* 0x07f0 */ 109,115,101,116, 0,109,121, 95, 98,107,112,116, 0,115,116, 97,
|
||||
/* 0x0800 */ 116, 0,109,107,100,105,114, 0, 3, 0, 0, 0, 2, 2, 0, 0,
|
||||
/* 0x0810 */ 7, 1, 0, 0, 2, 9, 0, 0, 14, 1, 0, 0, 2, 11, 0, 0,
|
||||
/* 0x0820 */ 60, 1, 0, 0, 2, 12, 0, 0, 43, 2, 0, 0, 2, 5, 0, 0,
|
||||
/* 0x0830 */ 117, 3, 0, 0, 2, 10, 0, 0,132, 3, 0, 0, 2, 7, 0, 0,
|
||||
/* 0x0840 */ 222, 3, 0, 0, 2, 8, 0, 0,133, 4, 0, 0, 2, 9, 0, 0,
|
||||
/* 0x0850 */ 9, 5, 0, 0, 2, 6, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0,
|
||||
/* 0x0860 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51,
|
||||
/* 0x0870 */ 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110,115,
|
||||
/* 0x0880 */ 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0890 */ 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77,
|
||||
/* 0x08a0 */ 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32,
|
||||
/* 0x08b0 */ 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110,
|
||||
/* 0x08c0 */ 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77,
|
||||
/* 0x08d0 */ 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 53, 51, 53, 32, 32,
|
||||
/* 0x08e0 */ 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32,
|
||||
/* 0x08f0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76,
|
||||
/* 0x0900 */ 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 54, 32, 32,
|
||||
/* 0x0910 */ 48, 32, 32, 48, 32, 32, 48, 53, 54, 57, 32, 32, 50, 42, 42, 48,
|
||||
/* 0x0920 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79,
|
||||
/* 0x0930 */ 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0940 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0950 */ 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48,
|
||||
/* 0x0960 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69,
|
||||
/* 0x0970 */ 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0980 */ 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
|
||||
/* 0x0990 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,
|
||||
/* 0x09a0 */ 115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 50,102, 55, 32,103,
|
||||
/* 0x09b0 */ 32, 32, 32, 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||
/* 0x09c0 */ 48, 50, 51,101, 32,117,112,120, 95,109,109, 97,112, 95, 97,110,
|
||||
/* 0x09d0 */ 100, 95,102,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32,
|
||||
/* 0x09e0 */ 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,101,
|
||||
/* 0x09f0 */ 109,112, 99,112,121, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
||||
/* 0x0a00 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,
|
||||
/* 0x0a10 */ 109, 97,112, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32,
|
||||
/* 0x0a20 */ 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,117,110, 97,
|
||||
/* 0x0a30 */ 109,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32,
|
||||
/* 0x0a40 */ 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,103,101,116, 95,
|
||||
/* 0x0a50 */ 117,112,120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0a60 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68,
|
||||
/* 0x0a70 */ 42, 32, 48, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0a80 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68,
|
||||
/* 0x0a90 */ 42, 32, 48, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48,
|
||||
/* 0x0aa0 */ 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78,
|
||||
/* 0x0ab0 */ 68, 42, 32, 48, 32,115,116, 97,116, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0ac0 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
|
||||
/* 0x0ad0 */ 32, 48, 32,109,107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65,
|
||||
/* 0x0ae0 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
|
||||
/* 0x0af0 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70,
|
||||
/* 0x0b00 */ 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0b10 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
||||
/* 0x0b20 */ 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51,
|
||||
/* 0x0b30 */ 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0b40 */ 90, 10, 48, 48, 48, 48, 48, 49, 48, 55, 32, 82, 95, 51, 56, 54,
|
||||
/* 0x0b50 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,
|
||||
/* 0x0b60 */ 115,101,116, 10, 48, 48, 48, 48, 48, 49, 48,101, 32, 82, 95, 51,
|
||||
/* 0x0b70 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,115,
|
||||
/* 0x0b80 */ 116, 97,116, 10, 48, 48, 48, 48, 48, 49, 51, 99, 32, 82, 95, 51,
|
||||
/* 0x0b90 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,
|
||||
/* 0x0ba0 */ 107,100,105,114, 10, 48, 48, 48, 48, 48, 50, 50, 98, 32, 82, 95,
|
||||
/* 0x0bb0 */ 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0bc0 */ 109,101,109,112, 99,112,121, 10, 48, 48, 48, 48, 48, 51, 55, 53,
|
||||
/* 0x0bd0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||
/* 0x0be0 */ 32, 32, 32,109,121, 95, 98,107,112,116, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0bf0 */ 51, 56, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32,
|
||||
/* 0x0c00 */ 32, 32, 32, 32, 32, 32,117,110, 97,109,101, 10, 48, 48, 48, 48,
|
||||
/* 0x0c10 */ 48, 51,100,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0c20 */ 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,117,112,120,102,110,
|
||||
/* 0x0c30 */ 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 52, 56, 53, 32, 82,
|
||||
/* 0x0c40 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0c50 */ 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 53, 48, 57,
|
||||
/* 0x0c60 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
|
||||
/* 0x0c70 */ 32, 32, 32,109,109, 97,112, 10, 10, 82, 69, 76, 79, 67, 65, 84,
|
||||
/* 0x0c80 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32,
|
||||
/* 0x0c90 */ 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83,
|
||||
/* 0x0ca0 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0cb0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
|
||||
/* 0x0cc0 */ 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50,
|
||||
/* 0x0cd0 */ 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x0ce0 */ 10
|
||||
};
|
||||
|
||||
1978
src/stub/i386-linux.elf-so_fold.h
generated
1978
src/stub/i386-linux.elf-so_fold.h
generated
File diff suppressed because it is too large
Load Diff
2513
src/stub/mips.r3000-linux.elf-fold.h
generated
2513
src/stub/mips.r3000-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
2494
src/stub/mipsel.r3000-linux.elf-fold.h
generated
2494
src/stub/mipsel.r3000-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
2415
src/stub/powerpc-linux.elf-fold.h
generated
2415
src/stub/powerpc-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
@ -152,7 +152,7 @@ no_filt:
|
||||
ldr arg1,[sp,#1*NBPW] // dst
|
||||
ldr arg2,[arg2] // dstlen
|
||||
add arg2,arg2,arg1 // &dst[dstlen]
|
||||
call __clear_cache
|
||||
//call __clear_cache // subsumed by write()+mmap()
|
||||
|
||||
mov r0,#0; str r0,[sp] // success return from f_expand FIXME
|
||||
ldmia sp!,{r0,r1,r2,r3,r4,r5,r6,r7,pc} // end f_expand
|
||||
|
||||
@ -193,7 +193,7 @@ unfold:
|
||||
mov arg3,sp // &pathname (currently a null string "")
|
||||
mov arg2,u_len
|
||||
mov arg1,#0 // kernel chooses addr
|
||||
call upx_mmap_and_fd // (addr + (1+ fd)) = (ptr, len, pathname, frag_mask)
|
||||
call upx_mmap_and_fd // (addr + (1+ fd)) = (ptr, len, pathname)
|
||||
mov r1,r0,lsr #12
|
||||
mov r1,r1,lsl #12
|
||||
sub r0,r0,r1
|
||||
@ -265,7 +265,7 @@ zfind:
|
||||
ret
|
||||
|
||||
f_expand:
|
||||
#define LINUX_ARM_CACHEFLUSH 1
|
||||
#undef LINUX_ARM_CACHEFLUSH
|
||||
#define NO_METHOD_CHECK 1
|
||||
#include "arch/arm/v4a/nrv2b_d8.S"
|
||||
|
||||
|
||||
@ -33,7 +33,11 @@ NBPW= 4
|
||||
//#define ARM_OLDABI 1
|
||||
#define ARMEL_EABI4 1
|
||||
#include "arch/arm/v5a/macros.S"
|
||||
#define call bl
|
||||
|
||||
#define DEBUG 0
|
||||
#define bkpt .long 0xe7f001f0 /* reserved instr; Linux GNU eabi breakpoint */
|
||||
#define bkpt_th .short 0xde01 /* reserved instr; Linux GNU eabi breakpoint */
|
||||
|
||||
// As of 2023-02-04, "gcc (Debian 10.2.1-6) 10.2.1 20210110" assembles 0xbe10 for:
|
||||
// asm("bkpt #0x10");
|
||||
@ -66,6 +70,8 @@ PAGE_MASK= (~0<<PAGE_SHIFT)
|
||||
PAGE_SIZE= -PAGE_MASK
|
||||
|
||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||
AT_FDCWD= -100
|
||||
RD_ONLY= 0
|
||||
__NR_close= 6 + __NR_SYSCALL_BASE
|
||||
__NR_exit = 1 + __NR_SYSCALL_BASE
|
||||
__NR_memfd_create= 0x181 + __NR_SYSCALL_BASE // 385
|
||||
@ -74,6 +80,27 @@ __NR_mprotect =125 + __NR_SYSCALL_BASE
|
||||
__NR_munmap = 91 + __NR_SYSCALL_BASE
|
||||
__NR_write = 4 + __NR_SYSCALL_BASE
|
||||
|
||||
__NR_SYSCALL_BASE = 0
|
||||
|
||||
__NR_close= 6 + __NR_SYSCALL_BASE
|
||||
__NR_exit= 1 + __NR_SYSCALL_BASE
|
||||
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
||||
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
||||
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
||||
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
||||
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
||||
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
||||
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
||||
__NR_mmap2= 192 + __NR_SYSCALL_BASE
|
||||
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||
__NR_openat= 322 + __NR_SYSCALL_BASE
|
||||
__NR_read= 3 + __NR_SYSCALL_BASE
|
||||
__NR_stat= 106 + __NR_SYSCALL_BASE
|
||||
__NR_uname= 122 + __NR_SYSCALL_BASE
|
||||
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
||||
__NR_write= 4 + __NR_SYSCALL_BASE
|
||||
|
||||
__ARM_NR_BASE = 0xf0000 + __NR_SYSCALL_BASE
|
||||
__ARM_NR_cacheflush = 2 + __ARM_NR_BASE
|
||||
|
||||
@ -145,71 +172,75 @@ _start: .globl _start // in Thumb mode (via PackLinuxElf32::pack3)
|
||||
// argc,argv,envp, r3 convenience, r4-r7 callee-saved, lr ret_addr
|
||||
stmfd sp!,{r0,r1,r2, r3, r4,r5,r6,r7, lr} // MATCH_99
|
||||
|
||||
sub sp,sp,#2*NBPW // space for ADRU, LENU
|
||||
sub sp,sp,#3*NBPW // space for ADRU, LENU, PMASK
|
||||
F_ADRU= 0 * NBPW
|
||||
F_LENU= 1 * NBPW
|
||||
F_ARGC= 2 * NBPW
|
||||
F_PMASK=2 * NBPW
|
||||
F_ARGC= 3 * NBPW
|
||||
|
||||
call4 L70
|
||||
L70_ret:
|
||||
foldi .req lr // &fold_info
|
||||
old_sp .req r5 // busy: lr,r5
|
||||
mov old_sp,sp
|
||||
mfd .req r7
|
||||
rPMASK .req r6 // PAGE_MASK
|
||||
|
||||
ldr r0,[foldi,#sz_unc]
|
||||
str r0,[old_sp,#F_LENU]
|
||||
sub r0,sp,r0 // alloca
|
||||
and sp,r0,#-2*NBPW // align stack
|
||||
str r0,[sp,#F_LENU]
|
||||
ldr r7,[foldi,#sz_cpr] // srclen
|
||||
add r4,foldi,#sz_b_info // src
|
||||
.unreq foldi
|
||||
|
||||
add arg4,old_sp,#F_LENU // &dstlen
|
||||
mov arg3,sp // dst for decompress
|
||||
ldr arg2,[foldi,#sz_cpr] // srclen
|
||||
add arg1,foldi,#sz_b_info // src
|
||||
.unreq foldi // busy: r5
|
||||
bl f_decompress
|
||||
mov arg3,#0 // pathname
|
||||
mov arg2,r0 // sz_unc
|
||||
mov arg1,#0 // any page address
|
||||
call upx_mmap_and_fd
|
||||
add arg4,sp,#F_LENU // &dstlen
|
||||
and arg3,r0,rPMASK // dst for decompress
|
||||
str arg3,[sp,#F_ADRU]
|
||||
mov arg2,r7 // srclen
|
||||
sub mfd,r0,arg3
|
||||
sub mfd,mfd,#1 // mfd
|
||||
mov arg1,r4 // src
|
||||
call f_decompress
|
||||
|
||||
mfd .req r6 // busy: r6,r5
|
||||
O_RDWR= 2
|
||||
O_DIRECTORY= 040000
|
||||
O_TMPFILE= 020000000
|
||||
|
||||
bl L110
|
||||
.word O_RDWR | O_DIRECTORY | O_TMPFILE
|
||||
.word 0700
|
||||
.asciz "/dev/shm"; .balign 4
|
||||
L110:
|
||||
mov r0,lr
|
||||
ldmia r0!,{r1,r2}
|
||||
do_sys7t2 __NR_open; mov mfd,r0
|
||||
|
||||
mov arg2,sp
|
||||
ldr arg3,[old_sp,#F_LENU]
|
||||
do_sys __NR_write
|
||||
mov sp,old_sp // de-alloca
|
||||
.unreq old_sp // busy: r6(mfd)
|
||||
ldr arg3,[sp,#F_LENU]
|
||||
ldr arg2,[sp,#F_ADRU]
|
||||
mov arg1,mfd
|
||||
str rPMASK,[arg2,#0] // forward the PAGE_MASK
|
||||
call write
|
||||
|
||||
mov arg6,#0 // beginning of file
|
||||
mov arg5,mfd
|
||||
mov arg4,#MAP_PRIVATE // modes
|
||||
mov arg4,#MAP_PRIVATE|MAP_FIXED // modes
|
||||
mov arg3,#PROT_READ|PROT_EXEC // prot
|
||||
ldr arg2,[sp,#F_LENU]
|
||||
mov arg1,#0 // addr (kernel chooses)
|
||||
do_sys __NR_mmap64; str r0,[sp,#F_ADRU]
|
||||
ldr arg1,[sp,#F_ADRU] // addr
|
||||
do_sys __NR_mmap2
|
||||
|
||||
mov arg1,mfd
|
||||
.unreq mfd // busy: empty
|
||||
do_sys __NR_close
|
||||
.unreq mfd
|
||||
call close
|
||||
|
||||
adr r0,_start -4 *NBPW // &SO_INFO
|
||||
add r1,sp,#F_ARGC
|
||||
ldr pc,[sp, #F_ADRU] // invoke folded code
|
||||
|
||||
devshm:
|
||||
.asciz "/dev/shm"; .balign 4
|
||||
add arg2,sp,#F_ARGC
|
||||
adr arg1,_start -4 *NBPW // &SO_INFO
|
||||
ldr arg3,[sp, #F_ADRU]
|
||||
add pc,arg3,#3*NBPW // invoke de-compressed code
|
||||
|
||||
f_decompress:
|
||||
#define LINUX_ARM_CACHEFLUSH 1
|
||||
#undef LINUX_ARM_CACHEFLUSH /* handled by write()+mmap() */
|
||||
#include "arch/arm/v4a/nrv2b_d8.S"
|
||||
|
||||
src .req r0
|
||||
dst .req r2
|
||||
tmp .req r3
|
||||
//eof_n2b: .globl eof_n2b
|
||||
// end of a compressed extent
|
||||
POP {tmp} // &input_eof
|
||||
mov r0,src; SUB2 r0,tmp // src -= eof; // return 0: good; else: bad
|
||||
POP {tmp} // original dst
|
||||
POP {r1}; SUB2 dst,tmp // dst -= original dst
|
||||
POP {tmp}; str dst,[tmp] // actual length used at dst XXX: 4GB
|
||||
ret
|
||||
//%esp:
|
||||
// MATCH_04 ptr unfolded_code
|
||||
// MATCH_10 len unfolded_code
|
||||
@ -220,7 +251,108 @@ f_decompress:
|
||||
// IDENTSTR goes here
|
||||
|
||||
section ELFMAINZ
|
||||
get_upxfn_path: .globl get_upxfn_path // char * (*)(void)
|
||||
mov r0,#0 // persistence not desired
|
||||
ret
|
||||
|
||||
memcpy: .globl memcpy // void *memcpy(void *dst, void const *src, size_t len)
|
||||
cmp r2,#0; beq 9f
|
||||
mov r12,r0 // original dst
|
||||
0:
|
||||
ldrb r3,[r1],#1; subs r2,r2,#1
|
||||
strb r3,[r0],#1; bne 0b
|
||||
9:
|
||||
mov r0,r12 // return original dst
|
||||
ret
|
||||
|
||||
memset: .globl memset // (dst, val, n)
|
||||
cmp r2,#0; beq 9f
|
||||
mov r12,r0 // original dst
|
||||
0:
|
||||
strb r1,[r0],#1
|
||||
subs r2,r2,#1
|
||||
bne 0b
|
||||
9:
|
||||
mov r0,r12 // return original dst
|
||||
ret
|
||||
|
||||
mempcpy: .globl mempcpy // (dst, src, n)
|
||||
cmp r2,#0; beq 9f
|
||||
0:
|
||||
ldrb r3,[r1],#1; subs r2,r2,#1
|
||||
strb r3,[r0],#1; bne 0b
|
||||
9:
|
||||
ret // updated dst
|
||||
|
||||
// These Linux system calls are called from upxfd_android.c
|
||||
// in order to work around problems with memfd_create and ftruncate on Android.
|
||||
// Because called from C, then r7 is live; cannot use do_sys7t.
|
||||
.globl memfd_create; memfd_create: do_sys2 __NR_memfd_create; ret
|
||||
.globl close; close: do_sys __NR_close; ret
|
||||
.globl fdatasync; fdatasync: do_sys __NR_fdatasync; ret
|
||||
.globl fsync; fsync: do_sys __NR_fsync; ret
|
||||
.globl ftruncate; ftruncate: do_sys __NR_ftruncate; ret
|
||||
.globl getpid; getpid: do_sys __NR_getpid; ret
|
||||
.globl lseek; lseek: do_sys __NR_lseek; ret
|
||||
.globl mkdir; mkdir: do_sys __NR_mkdir; ret
|
||||
.globl open; open: do_sys __NR_open; ret
|
||||
.globl openat; openat: do_sys2 __NR_openat; ret
|
||||
.globl read; read: do_sys __NR_read; ret
|
||||
.globl stat; stat: do_sys __NR_stat; ret
|
||||
.globl uname; uname: do_sys __NR_uname; ret
|
||||
.globl unlink; unlink: do_sys __NR_unlink; ret
|
||||
.globl write; write: do_sys __NR_write; ret
|
||||
|
||||
.globl my_bkpt
|
||||
my_bkpt:
|
||||
bkpt // my_bkpt
|
||||
ret
|
||||
|
||||
// __NR_oldmmap gets ENOSYS! Must use __NR_mmap2 with all args in registers
|
||||
// Called from C (5th and 6th arg on stack), so must preserve r4 and r5
|
||||
mmap: .globl mmap
|
||||
stmdb sp!,{r4,r5,lr} // called from C: only 4 args in registers
|
||||
ldr arg6,[sp,#4*NBPW]
|
||||
ldr arg5,[sp,#3*NBPW]
|
||||
mov arg6,arg6,lsr #12 @ FIXME? convert to page offset in file
|
||||
mmap_do: // sp: saved r4,r5,lr
|
||||
bic r12,arg1,rPMASK // lo frag
|
||||
sub arg1,arg1,r12 // page align lo end
|
||||
add arg2,arg2,r12
|
||||
do_sys __NR_mmap2
|
||||
ldmia sp!,{r4,r5,pc}
|
||||
|
||||
psa: .asciz "/proc/self/auxv"; .balign 4
|
||||
L70:
|
||||
BUFLEN= 512
|
||||
mfd .req r5
|
||||
sub sp,sp,#BUFLEN
|
||||
mov r4,lr
|
||||
mov rPMASK,#~0; mov rPMASK,rPMASK,lsl #12 // default PAGE_MASK
|
||||
mov r0,#AT_FDCWD
|
||||
adr r1,psa
|
||||
mov r2,#0
|
||||
call openat; mov mfd,r0; tst r0,r0; bmi no_psa
|
||||
mov r2,#BUFLEN
|
||||
mov r1,sp
|
||||
mov r0,mfd
|
||||
call read; tst r0,r0; bmi no_psa1
|
||||
mov r1,sp
|
||||
0:
|
||||
ldr r2,[r1],#2*NBPW
|
||||
AT_PAGESZ= 6
|
||||
subs r2,r2,#AT_PAGESZ; beq 9f
|
||||
subs r0,r0,#2*NBPW; beq no_psa1; b 0b
|
||||
9:
|
||||
ldr rPMASK,[r1,#-NBPW]
|
||||
sub rPMASK,r2,rPMASK
|
||||
no_psa1:
|
||||
mov r0,mfd; call close
|
||||
.unreq mfd
|
||||
no_psa:
|
||||
add sp,sp,#BUFLEN
|
||||
str rPMASK,[sp,#F_PMASK]
|
||||
|
||||
call4 L70_ret
|
||||
fold_info:
|
||||
// b_info (sz_unc, sz_cpr, method) of folded code (C-language, etc.)
|
||||
|
||||
@ -75,20 +75,70 @@ mflg_data: .int MAP_PRIVATE|MAP_ANONYMOUS @ overwritten for QNX vs Linux
|
||||
// %esp:
|
||||
// MATCH_13 ptr unfolded_code; for escape hatch
|
||||
// MATCH_12 len unfolded code; for escape hatch
|
||||
// PAGE_MASK
|
||||
// MATCH_99 9 saved registers {r0= argc, r1= argv, r2= envp, r3-r7, lr)
|
||||
|
||||
F_ADRU= 0 * NBPW
|
||||
F_LENU= 2 * NBPW
|
||||
F_LENU= 1 * NBPW
|
||||
F_PMASK= 2 * NBPW // extra copy?
|
||||
|
||||
.globl upx_so_main // in arm.v?a-linux.elf-so_main.c
|
||||
|
||||
section SO_HEAD
|
||||
fold: .globl fold
|
||||
sub sp,sp,#MAX_ELF_HDR_32; mov r2,sp // &elf_tmp
|
||||
PAGE_MASK: .word 0xfffff000 // default
|
||||
qflg_data: .word 0 // QNX vs Linux: MAP_PRIVATE | MAP_ANONYMOUS
|
||||
upxfn_path:.word 0 // displacement from "zero"
|
||||
|
||||
fold_begin: .globl fold
|
||||
b L05
|
||||
|
||||
get_page_mask: .globl get_page_mask
|
||||
ldr r0,PAGE_MASK
|
||||
ret
|
||||
|
||||
get_upxfn_path: .globl get_upxfn_path // char * (*)(void)
|
||||
adr r1,fold_begin-3*NBPW // "zero"
|
||||
ldr r0,[r1,#1*NBPW] // offset(upxfn_path)
|
||||
cmp r0,#0; beq 1f // nullptr
|
||||
add r0,r0,r1 // &path
|
||||
1:
|
||||
ret
|
||||
|
||||
arg6 .req r5
|
||||
arg5 .req r4
|
||||
arg4 .req r3
|
||||
arg3 .req r2
|
||||
arg2 .req r1
|
||||
arg1 .req r0
|
||||
|
||||
// Sometimes Linux enforces page-aligned address
|
||||
Pmap: .globl Pmap
|
||||
ldr r12,PAGE_MASK
|
||||
bic r12,arg1,r12
|
||||
sub arg1,arg1,r12
|
||||
add arg2,arg2,r12
|
||||
b mmap
|
||||
|
||||
Punmap: .globl Punmap
|
||||
ldr r12,PAGE_MASK
|
||||
bic r12,arg1,r12
|
||||
sub arg1,arg1,r12
|
||||
add arg2,arg2,r12
|
||||
b munmap
|
||||
|
||||
Pprotect: .globl Pprotect
|
||||
ldr r12,PAGE_MASK
|
||||
bic r12,arg1,r12
|
||||
sub arg1,arg1,r12
|
||||
add arg2,arg2,r12
|
||||
b mprotect
|
||||
|
||||
L05:
|
||||
sub sp,sp,#MAX_ELF_HDR_32; mov arg3,sp // &elf_tmp
|
||||
call upx_so_main // (&so_info, &argc); returns &escape_hatch
|
||||
add sp,sp,#MAX_ELF_HDR_32
|
||||
mov lr,r0 // save &escape_hatch
|
||||
ldmia sp!,{r0,r1} // F_ADRU, F_LENU (unfolded region)
|
||||
ldmia sp!,{r0,r1,r2} // F_ADRU, F_LENU, PMASK (unfolded region)
|
||||
mov r7,#0xff & __NR_munmap // FIXME depends on HW and ABI of OS
|
||||
mov pc,lr // goto &escape_hatch
|
||||
|
||||
@ -120,76 +170,97 @@ L10:
|
||||
#endif /*}*/
|
||||
ldr pc,[r2,#4 -2*4] @ Elf32_auxv_t[AT_NULL@.a_type].a_val
|
||||
|
||||
__NR_exit = 1 + __NR_SYSCALL_BASE
|
||||
__NR_read = 3 + __NR_SYSCALL_BASE
|
||||
__NR_write = 4 + __NR_SYSCALL_BASE
|
||||
__NR_open = 5 + __NR_SYSCALL_BASE
|
||||
__NR_close = 6 + __NR_SYSCALL_BASE
|
||||
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
||||
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
||||
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
||||
__NR_brk = 45 + __NR_SYSCALL_BASE
|
||||
__NR_readlink= 85 + __NR_SYSCALL_BASE // 0x55
|
||||
__NR_ftruncate= 93 + __NR_SYSCALL_BASE // 0x5d
|
||||
memcpy: .globl memcpy // void *memcpy(void *dst, void const *src, size_t len)
|
||||
cmp r2,#0; beq 9f
|
||||
mov r12,r0 // original dst
|
||||
0:
|
||||
ldrb r3,[r1],#1; subs r2,r2,#1
|
||||
strb r3,[r0],#1; bne 0b
|
||||
9:
|
||||
mov r0,r12 // return original dst
|
||||
ret
|
||||
|
||||
memset: .globl memset // (dst, val, n)
|
||||
cmp r2,#0; beq 9f
|
||||
mov r12,r0 // original dst
|
||||
0:
|
||||
strb r1,[r0],#1; subs r2,r2,#1
|
||||
bne 0b
|
||||
9:
|
||||
mov r0,r12 // return original dst
|
||||
ret
|
||||
|
||||
__NR_memfd_create= 0x181 + __NR_SYSCALL_BASE // 385
|
||||
__NR_mmap2 = 192 + __NR_SYSCALL_BASE // 0xc0
|
||||
__NR_mprotect = 125 + __NR_SYSCALL_BASE // 0x7d
|
||||
__NR_munmap = 91 + __NR_SYSCALL_BASE // 0x5b
|
||||
mempcpy: .globl mempcpy // (dst, src, n)
|
||||
cmp r2,#0; beq 9f
|
||||
0:
|
||||
ldrb r3,[r1],#1; subs r2,r2,#1
|
||||
strb r3,[r0],#1; bne 0b
|
||||
9:
|
||||
ret // updated dst
|
||||
|
||||
__ARM_NR_BASE = 0x0f0000 + __NR_SYSCALL_BASE
|
||||
__ARM_NR_cacheflush = 2 + __ARM_NR_BASE
|
||||
__NR_SYSCALL_BASE = 0
|
||||
|
||||
__NR_close= 6 + __NR_SYSCALL_BASE
|
||||
__NR_exit= 1 + __NR_SYSCALL_BASE
|
||||
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
||||
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
||||
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
||||
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
||||
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
||||
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
||||
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
||||
__NR_mmap2= 192 + __NR_SYSCALL_BASE
|
||||
__NR_munmap= 91 + __NR_SYSCALL_BASE // 0x5b
|
||||
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||
__NR_read= 3 + __NR_SYSCALL_BASE
|
||||
__NR_stat= 106 + __NR_SYSCALL_BASE
|
||||
__NR_uname= 122 + __NR_SYSCALL_BASE
|
||||
__NR_unlink= 10 + __NR_SYSCALL_BASE
|
||||
__NR_write= 4 + __NR_SYSCALL_BASE
|
||||
|
||||
.globl Pwrite; Pwrite: b write
|
||||
|
||||
// These Linux system calls are called from upxfd_android.c
|
||||
// in order to work around problems with memfd_create and ftruncate on Android.
|
||||
// Because called from C, then r7 is live; cannot use do_sys7t.
|
||||
.globl memfd_create; memfd_create: do_sys2 __NR_memfd_create; ret
|
||||
.globl close; close: do_sys __NR_close; ret
|
||||
.globl exit; exit: do_sys __NR_exit; ret
|
||||
.globl fdatasync; fdatasync: do_sys __NR_fdatasync; ret
|
||||
.globl fsync; fsync: do_sys __NR_fsync; ret
|
||||
.globl ftruncate; ftruncate: do_sys __NR_ftruncate; ret
|
||||
.globl getpid; getpid: do_sys __NR_getpid; ret
|
||||
.globl lseek; lseek: do_sys __NR_lseek; ret
|
||||
.globl mkdir; mkdir: do_sys __NR_mkdir; ret
|
||||
.globl mprotect; mprotect: do_sys __NR_mprotect; ret
|
||||
.globl munmap; munmap: do_sys __NR_munmap; ret
|
||||
.globl open; open: do_sys __NR_open; ret
|
||||
.globl read; read: do_sys __NR_read; ret
|
||||
.globl stat; stat: do_sys __NR_stat; ret
|
||||
.globl uname; uname: do_sys __NR_uname; ret
|
||||
.globl unlink; unlink: do_sys __NR_unlink; ret
|
||||
.globl write; write: do_sys __NR_write; ret
|
||||
|
||||
.globl my_bkpt
|
||||
my_bkpt:
|
||||
bkpt // my_bkpt
|
||||
ret
|
||||
|
||||
.globl exit
|
||||
exit:
|
||||
do_sys __NR_exit
|
||||
|
||||
.globl read
|
||||
read:
|
||||
do_sys __NR_read; ret
|
||||
|
||||
Pwrite: .globl Pwrite
|
||||
write: .globl write
|
||||
do_sys __NR_write; ret
|
||||
|
||||
lseek: .globl lseek
|
||||
do_sys __NR_lseek; ret
|
||||
|
||||
.globl open
|
||||
open:
|
||||
do_sys __NR_open; ret
|
||||
|
||||
.globl close
|
||||
close:
|
||||
do_sys __NR_close; ret
|
||||
|
||||
.globl unlink
|
||||
unlink:
|
||||
do_sys __NR_unlink; ret
|
||||
|
||||
.globl getpid
|
||||
getpid:
|
||||
do_sys __NR_getpid; ret
|
||||
|
||||
.globl brk
|
||||
brk:
|
||||
do_sys __NR_brk; ret
|
||||
|
||||
.globl readlink
|
||||
readlink:
|
||||
do_sys __NR_readlink; ret
|
||||
|
||||
ftruncate: .globl ftruncate
|
||||
do_sys __NR_ftruncate; ret
|
||||
|
||||
memfd_create: .globl memfd_create
|
||||
do_sys7t2 __NR_memfd_create; ret
|
||||
// __NR_oldmmap gets ENOSYS! Must use __NR_mmap2 with all args in registers
|
||||
// Called from C (5th and 6th arg on stack), so must preserve r4 and r5
|
||||
mmap: .globl mmap
|
||||
stmdb sp!,{r4,r5,lr} // called from C: only 4 args in registers
|
||||
ldr arg6,[sp,#4*NBPW]
|
||||
ldr arg5,[sp,#3*NBPW]
|
||||
mov arg6,arg6,lsr #12 @ FIXME? convert to page offset in file
|
||||
mmap_do: // sp: saved r4,r5,lr
|
||||
mov r12,#~0; mov r12,r12,lsl #12 // PAGE_MASK
|
||||
bic r12,arg1,r12 // lo frag
|
||||
sub arg1,arg1,r12 // page align lo end
|
||||
add arg2,arg2,r12
|
||||
do_sys __NR_mmap2
|
||||
ldmia sp!,{r4,r5,pc}
|
||||
|
||||
O_RDWR= 2
|
||||
O_DIRECTORY= 040000
|
||||
@ -201,53 +272,15 @@ table3:
|
||||
.asciz "/dev/shm"; .balign 4
|
||||
|
||||
upxfd_create: .globl upxfd_create
|
||||
bkpt // upxfd_create
|
||||
adr r0,table3
|
||||
ldmia r0!,{r1,r2}
|
||||
do_sys7t2 __NR_open
|
||||
ret
|
||||
|
||||
// Sometimes Linux enforces page-aligned address
|
||||
Pprotect: .globl Pprotect
|
||||
ldr r12,m_off4k
|
||||
and r12,r12,r0
|
||||
sub r0,r0,r12
|
||||
add r1,r1,r12
|
||||
mprotect: .globl mprotect
|
||||
do_sys __NR_mprotect; ret
|
||||
|
||||
Pmap: .globl Pmap
|
||||
ldr r12,m_off4k
|
||||
and r12,r12,r0
|
||||
sub r0,r0,r12
|
||||
add r1,r1,r12
|
||||
mmap: .globl mmap
|
||||
stmdb sp!,{r4,r5,lr}
|
||||
ldr r5,[sp,#4*4]
|
||||
ldr r4,[sp,#3*4]
|
||||
mov r5,r5,lsr #12 @ convert to page number
|
||||
mmap_do:
|
||||
ldr r12,m_off4k
|
||||
and r12,r12,r0 // lo frag
|
||||
sub r0,r0,r12 // page align lo end
|
||||
add r1,r1,r12
|
||||
do_sys __NR_mmap2
|
||||
ldmia sp!,{r4,r5,pc}
|
||||
|
||||
Punmap: .globl Punmap
|
||||
ldr r12,m_off4k
|
||||
and r12,r12,r0
|
||||
sub r0,r0,r12
|
||||
add r1,r1,r12
|
||||
munmap: .globl munmap
|
||||
do_sys __NR_munmap; ret
|
||||
|
||||
m_off4k:
|
||||
.word -1+ (1<<PAGE_SHIFT) // offset mask for 4KiB
|
||||
|
||||
.globl __clear_cache
|
||||
__clear_cache:
|
||||
mov r2,#0
|
||||
do_sys2 __ARM_NR_cacheflush; ret
|
||||
bkpt // clear_cache should not be needed: write() + mmap()
|
||||
|
||||
get_sys_munmap: .globl get_sys_munmap // r0= system call instruction
|
||||
#if defined(ARMEL_DARWIN) /*{*/
|
||||
@ -269,73 +302,6 @@ mmap_privanon: .globl mmap_privanon
|
||||
mvn r4,#0 @ fd= -1
|
||||
b mmap_do
|
||||
|
||||
memcpy: .globl memcpy // void *memcpy(void *dst, void const *src, size_t len);
|
||||
dst .req r0
|
||||
src .req r1
|
||||
len .req r2
|
||||
lim .req r12 // limit value of src for current code loop
|
||||
tst len,len; moveq pc,lr // 0==len is a no_op
|
||||
mov lim,len
|
||||
//b mc_1prep // optimizations not tested!
|
||||
|
||||
// Optimize for dst that is 4-aligned,
|
||||
// such as fetching unaligned struct to local aligned copy.
|
||||
tst dst,#-1+ NBPW; beq mc_dst4
|
||||
mc_1prep:
|
||||
add lim,len,src
|
||||
mc_1:
|
||||
ldrb r3,[src],#1; cmp src,lim
|
||||
strb r3,[dst],#1; bne mc_1
|
||||
ret
|
||||
|
||||
mc_dst4: // dst is 4-aligned. Store words of 4 bytes.
|
||||
tst src,#-1+ NBPW; beq mc_44prep
|
||||
mc_d4prep:
|
||||
bics r3,len,#-1+ NBPW // length of full words
|
||||
add lim,src,r3
|
||||
beq mc_1prep // no full words
|
||||
str len,[sp,#-NBPW]! // save register (mc_s1d4 needs 2 registers)
|
||||
mc_s1d4: // src is not 4-aligned; dst is 4-aligned
|
||||
ldrb r2,[src],#1
|
||||
ldrb r3,[src],#1; orr r2,r2,r3,lsl #1*8
|
||||
ldrb r3,[src],#1; orr r2,r2,r3,lsl #2*8
|
||||
ldrb r3,[src],#1; orr r2,r2,r3,lsl #3*8
|
||||
str r2,[dst],#4
|
||||
cmp src,lim; bne mc_s1d4
|
||||
ldr len,[sp],#NBPW // restore register
|
||||
ands len,len,#-1+ NBPW; bne mc_1prep // 0 < len <= 3
|
||||
ret
|
||||
|
||||
mc_44prep: // both src and dst are 4-aligned. Store blocks of 16 bytes.
|
||||
bics r3,len,#-1+ 4*NBPW // length of 16-byte blocks
|
||||
add lim,src,r3
|
||||
bne mc_s4d4go // 16-byte blocks
|
||||
mc_s4d1prep:
|
||||
bics r3,len,#-1+ NBPW // length of full words
|
||||
add lim,src,r3
|
||||
beq mc_1prep // no full words
|
||||
mc_s4d1:
|
||||
ldr r3,[src],#NBPW
|
||||
str r3,[dst],#NBPW
|
||||
cmp src,lim; bne mc_s4d1
|
||||
ands len,len,#-1+ NBPW; bne mc_1prep // 0 < len <= 3
|
||||
ret
|
||||
|
||||
mc_s4d4go:
|
||||
stmdb sp!,{r4,r5,r6,r7} // save original contents of working storage
|
||||
mc_s4d4:
|
||||
ldmia src!,{r4,r5,r6,r7}
|
||||
stmia dst!,{r4,r5,r6,r7}
|
||||
cmp src,lim; bne mc_s4d4
|
||||
ldmia sp!,{r4,r5,r6,r7} // restore original contents of working storage
|
||||
ands len,len,#-1+ 4*NBPW; bne mc_s4d1prep // 0 < len <= 15
|
||||
ret
|
||||
.unreq dst
|
||||
.unreq src
|
||||
.unreq len
|
||||
.unreq lim
|
||||
|
||||
|
||||
tmp .req r3
|
||||
|
||||
size .req r4
|
||||
@ -379,12 +345,6 @@ underlay: .globl underlay // (unsigned size, char *ptr, unsigned ulen, unsigned
|
||||
.unreq ulen
|
||||
.unreq pflg
|
||||
|
||||
memset: .globl memset // void *memset(void *s, int c, size_t n);
|
||||
tst r2,r2; moveq pc,lr
|
||||
strb r1,[r0],#1; subs r2,r2,#1
|
||||
bgt memset
|
||||
ret
|
||||
|
||||
my_alloca: .globl my_alloca
|
||||
sub r0,sp,r0
|
||||
and r0,r0,#-2*NBPW
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
*/
|
||||
|
||||
#ifndef DEBUG //{
|
||||
#define DEBUG 0
|
||||
#define DEBUG 1
|
||||
#endif //}
|
||||
|
||||
#define NO_WANT_MMAP 1
|
||||
@ -293,7 +293,7 @@ make_hatch_i386(
|
||||
unsigned code[2] = {
|
||||
0x586180cd, // int #0x80; popa; pop %eax
|
||||
0x90e0ff3e, // notrack jmp *%eax; nop
|
||||
}
|
||||
};
|
||||
DPRINTF("make_hatch %%p %%p %%x\\n", phdr, next_unc, frag_mask);
|
||||
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
||||
next_unc += phdr->p_memsz - phdr->p_filesz; // Skip over local .bss
|
||||
|
||||
@ -265,7 +265,13 @@ ERR_LAB
|
||||
error;
|
||||
#endif //}
|
||||
|
||||
#if defined(__i386__) //
|
||||
extern unsigned long upx_mmap_and_fd( // x86_64 Android emulator of i386 is not faithful
|
||||
void *ptr // desired address
|
||||
, unsigned len // also pre-allocate space in file
|
||||
, char *pathname // 0 ==> call get_upxfn_path, which stores if 1st time
|
||||
);
|
||||
|
||||
#if defined(__i386__) //{
|
||||
// Create (or find) an escape hatch to use when munmapping ourselves the stub.
|
||||
// Called by do_xmap to create it; remembered in AT_NULL.d_val
|
||||
static char *
|
||||
@ -318,16 +324,17 @@ make_hatch_arm32(
|
||||
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
|
||||
next_unc += phdr->p_memsz - phdr->p_filesz; // Skip over local .bss
|
||||
frag_mask &= -(long)next_unc; // bytes left on page
|
||||
if (2*4 <= frag_mask) {
|
||||
if (sizeof(code) <= frag_mask) {
|
||||
hatch = (unsigned *)(void *)(~3ul & (long)(3+ next_unc));
|
||||
hatch[0]= code[0];
|
||||
hatch[1]= code[1];
|
||||
__clear_cache(&hatch[0], &hatch[2]);
|
||||
hatch[0] = code[0];
|
||||
hatch[1] = code[1];
|
||||
}
|
||||
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||
int mfd = upxfd_create(); // the directory entry
|
||||
write(mfd, &code, 2*4);
|
||||
hatch = Pmap(0, 2*4, PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
unsigned long fdmap = upx_mmap_and_fd((void *)0, sizeof(code), 0);
|
||||
unsigned mfd = -1+ (0xfff& fdmap);
|
||||
write(mfd, &code, sizeof(code));
|
||||
hatch = mmap((void *)(fdmap & ~0xffful), sizeof(code),
|
||||
PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
}
|
||||
@ -422,31 +429,7 @@ make_hatch_ppc32(
|
||||
|
||||
#define nullptr (void *)0
|
||||
|
||||
#if defined(__i386__) //{
|
||||
unsigned
|
||||
get_PAGE_MASK(void)
|
||||
{
|
||||
return ~0xFFF;
|
||||
}
|
||||
#else //}{
|
||||
unsigned
|
||||
get_PAGE_MASK(void) // the mask which KEEPS the page address
|
||||
{
|
||||
int fd = open(addr_string("/proc/self/auxv"), O_RDONLY, 0);
|
||||
if (fd >= 0) {
|
||||
Elf32_auxv_t data[40];
|
||||
Elf32_auxv_t *end = &data[read(fd, data, sizeof(data)) / sizeof(data[0])];
|
||||
close(fd);
|
||||
Elf32_auxv_t *ptr; for (ptr = &data[0]; ptr < end ; ++ptr) {
|
||||
if (AT_PAGESZ == ptr->a_type) {
|
||||
return (0u - ptr->a_un.a_val);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ~0xFFF;
|
||||
}
|
||||
#endif //}
|
||||
|
||||
extern unsigned get_page_mask(void);
|
||||
extern void *memcpy(void *dst, void const *src, size_t n);
|
||||
extern void *memset(void *dst, unsigned val, size_t n);
|
||||
|
||||
@ -501,7 +484,7 @@ upx_so_main( // returns &escape_hatch
|
||||
Elf32_Ehdr *elf_tmp // scratch for Elf32_Ehdr and Elf32_Phdrs
|
||||
)
|
||||
{
|
||||
unsigned long const page_mask = get_PAGE_MASK();
|
||||
unsigned long const page_mask = get_page_mask();
|
||||
char *const va_load = (char *)&so_info->off_reloc - so_info->off_reloc;
|
||||
So_info so_infc; // So_info Copy
|
||||
memcpy(&so_infc, so_info, sizeof(so_infc)); // before de-compression overwrites
|
||||
@ -518,7 +501,7 @@ upx_so_main( // returns &escape_hatch
|
||||
// Copy compressed data before de-compression overwrites it.
|
||||
char *const sideaddr = mmap(nullptr, cpr_len, PROT_WRITE|PROT_READ,
|
||||
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
|
||||
DPRINTF("sideaddr=%%p\\n", sideaddr);
|
||||
DPRINTF("&sideaddr=%%p\\n", &sideaddr);
|
||||
memcpy(sideaddr, cpr_ptr, cpr_len);
|
||||
|
||||
// Transition to copied data
|
||||
@ -548,37 +531,22 @@ upx_so_main( // returns &escape_hatch
|
||||
|
||||
Elf32_Phdr const *phdr = (Elf32_Phdr *)(1+ elf_tmp);
|
||||
Elf32_Phdr const *const phdrN = &phdr[elf_tmp->e_phnum];
|
||||
while (phdr->p_type != PT_LOAD) ++phdr; // skip PT_PHDR if any
|
||||
Elf32_Addr const base = (Elf32_Addr)va_load - phdr->p_vaddr;
|
||||
DPRINTF("base=%%p\\n", base);
|
||||
|
||||
if (phdr->p_flags & PF_X) {
|
||||
#if defined(__arm__) //{
|
||||
int mfd = upxfd_create();
|
||||
#else //}{
|
||||
int mfd = memfd_create(addr_string("upx"), 0);
|
||||
#endif //}
|
||||
unsigned mfd_len = 0ul - page_mask;
|
||||
Pwrite(mfd, elf_tmp, binfo->sz_unc); // de-compressed Elf_Ehdr and Elf_Phdrs
|
||||
Pwrite(mfd, binfo->sz_unc + va_load, mfd_len - binfo->sz_unc); // rest of 1st page
|
||||
|
||||
Punmap(va_load, mfd_len); // make SELinux forget any previous protection
|
||||
Elf32_Addr va_mfd = (Elf32_Addr)Pmap(va_load, mfd_len, PF_to_PROT(phdr),
|
||||
MAP_FIXED|MAP_PRIVATE, mfd, 0); (void)va_mfd;
|
||||
|
||||
close(mfd);
|
||||
}
|
||||
|
||||
// Process each read-only PT_LOAD.
|
||||
// A read+write PT_LOAD might be relocated by rtld before de-compression,
|
||||
// so it cannot be compressed.
|
||||
struct b_info al_bi; // for aligned data from binfo
|
||||
void *hatch = nullptr;
|
||||
Elf32_Addr base = 0;
|
||||
|
||||
for (; phdr < phdrN; ++phdr)
|
||||
if ( phdr->p_type == PT_LOAD && !(phdr->p_flags & PF_W)) {
|
||||
DPRINTF("phdr@%%p p_offset=%%p p_vaddr=%%p p_filesz=%%p p_memsz=%%p binfo=%%p\\n",
|
||||
phdr, phdr->p_offset, phdr->p_vaddr, phdr->p_filesz, phdr->p_memsz, x0.buf);
|
||||
if (!base) {
|
||||
base = (Elf32_Addr)va_load - phdr->p_vaddr;
|
||||
DPRINTF("base=%%p\\n", base);
|
||||
}
|
||||
|
||||
if ((phdr->p_filesz + phdr->p_offset) <= so_infc.off_xct_off) {
|
||||
continue; // below compressed region
|
||||
@ -608,23 +576,13 @@ upx_so_main( // returns &escape_hatch
|
||||
// Cannot set PROT_EXEC except via mmap() into a region (Linux "vma")
|
||||
// that has never had PROT_WRITE. So use a Linux-only "memory file"
|
||||
// to hold the contents.
|
||||
#if defined(__arm__) //{ Emulate: Android "ABI" has inconsistent __NR_ftruncate.
|
||||
mfd = upxfd_create(); // anonymous file in /dev/shm with 0700 permission
|
||||
size_t goal = x1.size;
|
||||
while (0 < goal) { // /dev/shm limits to 8KiB at a time!!
|
||||
ssize_t len = Pwrite(mfd, x1.buf, goal);
|
||||
if (len < 0) {
|
||||
break; // give up: will SIGSEGV or SIGBUS later
|
||||
}
|
||||
goal -= len;
|
||||
}
|
||||
lseek(mfd, 0, SEEK_SET);
|
||||
#else //}{
|
||||
mfd = memfd_create(addr_string("upx"), 0); // the directory entry
|
||||
ftruncate(mfd, x1.size); // Allocate the pages in the file.
|
||||
#endif //}
|
||||
unsigned long val = upx_mmap_and_fd(x1.buf, x1.size, nullptr);
|
||||
mfd = 0xfff & val;
|
||||
val -= mfd; if ((char *)val != x1.buf) my_bkpt((void *)0x1241, &x1);
|
||||
--mfd;
|
||||
|
||||
Pwrite(mfd, x1.buf, frag); // Save lo fragment of contents on first page.
|
||||
Punmap(x1.buf, x1.size);
|
||||
//Punmap(x1.buf, x1.size);
|
||||
mfd_addr = Pmap(x1.buf, x1.size, PROT_READ|PROT_WRITE, MAP_FIXED|MAP_SHARED, mfd, 0);
|
||||
DPRINTF("mfd_addr= %%p\\n", mfd_addr); // Re-use the address space
|
||||
|
||||
@ -654,7 +612,7 @@ upx_so_main( // returns &escape_hatch
|
||||
if (phdr->p_flags & PF_X) { // SELinux
|
||||
// Map the contents of mfd as per *phdr.
|
||||
DPRINTF("mfd mmap addr=%%p len=%%p\\n", (phdr->p_vaddr + base + pfx), al_bi.sz_unc);
|
||||
Punmap(mfd_addr, frag + al_bi.sz_unc); // Discard RW mapping; mfd has the bytes
|
||||
//Punmap(mfd_addr, frag + al_bi.sz_unc); // Discard RW mapping; mfd has the bytes
|
||||
Pmap((char *)(phdr->p_vaddr + base + pfx), al_bi.sz_unc, PF_to_PROT(phdr),
|
||||
MAP_FIXED|MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
@ -664,6 +622,7 @@ upx_so_main( // returns &escape_hatch
|
||||
}
|
||||
}
|
||||
|
||||
DPRINTF("Punmap sideaddr=%%p cpr_len=%%p\\n", sideaddr, cpr_len);
|
||||
Punmap(sideaddr, cpr_len);
|
||||
DPRINTF("calling user DT_INIT %%p\\n", dt_init);
|
||||
dt_init(so_args->argc, so_args->argv, so_args->envp);
|
||||
|
||||
@ -247,7 +247,15 @@ static int create_upxfn_path(char *name, char *buf)
|
||||
// Also 32-bit Android has inconsistent __NR_ftruncate,
|
||||
// so use direct write()
|
||||
//
|
||||
struct utsname;
|
||||
struct utsname {
|
||||
char sysname[65];
|
||||
char nodename[65];
|
||||
char release[65];
|
||||
char version[65];
|
||||
char machine[65];
|
||||
char domainname[65];
|
||||
|
||||
};
|
||||
extern int uname(struct utsname *);
|
||||
extern char * get_upxfn_path(void);
|
||||
|
||||
@ -310,28 +318,33 @@ unsigned long upx_mmap_and_fd( // returns (mapped_addr | (1+ fd))
|
||||
|
||||
#if ANDROID_FRIEND //{
|
||||
// Varying __NR_ftruncate on Android can hurt even if memfd_create() succeeds.
|
||||
// On Linux, struct utsname has 6 arrays of size 257; but size can be larger.
|
||||
#define BUFLEN 4096
|
||||
void *buf = alloca(BUFLEN); *(int *)buf = 0;
|
||||
uname((struct utsname *)buf);
|
||||
// On Linux, struct utsname has 6 arrays of size 65; but size can be larger.
|
||||
#define BUFLEN PATH_MAX
|
||||
union {
|
||||
struct utsname uts;
|
||||
char buf[BUFLEN];
|
||||
} u;
|
||||
|
||||
uname(&u.uts);
|
||||
int const not_android = (ANDROID_TEST ? 0
|
||||
: ( 0 != strncmplc(addr_string("and"),
|
||||
&((char const *)&buf)[0*65 /*sysname*/], 3) // claims Android
|
||||
&& 0 == strncmplc(addr_string("Lin"),
|
||||
&((char const *)&buf)[0*65 /*sysname*/], 3) // claims Linux
|
||||
&& '4'< ((char const *)&buf)[2*65 /*release*/] ) // young enough
|
||||
);
|
||||
: ( 0 != strncmplc(addr_string("and"), &u.uts.sysname[0], 3)
|
||||
&& 0 == strncmplc(addr_string("Lin"), &u.uts.sysname[0], 3)
|
||||
&& '4'< u.uts.release[0] ));
|
||||
// 2024-08-01: TermUX on Android 14 arm64 running 32-bit program:
|
||||
// claims it is Linux, but kernel is 4.19, and ftruncate() {__NR_ 93)
|
||||
// claims it is Linux, but kernel is 4.19, and ftruncate() {__NR_ 93}
|
||||
// gets signal SIGSYS instead of errno ENOSYS; so is not really Linux!
|
||||
|
||||
// Work-around for missing memfd_create syscall on early 32-bit Android.
|
||||
if (!not_android && !pathname) { // must ask
|
||||
pathname = get_upxfn_path();
|
||||
if (!pathname) { // persistence not desired, so use this->u.buf;
|
||||
pathname = &u.buf[0];
|
||||
pathname[0] = '\0';
|
||||
}
|
||||
}
|
||||
if (!not_android && -ENOSYS == fd && pathname) {
|
||||
if ('\0' == pathname[0]) { // first time; create the pathname and file
|
||||
int rv = create_upxfn_path(pathname, buf);
|
||||
int rv = create_upxfn_path(pathname, u.buf);
|
||||
if (rv < 0) {
|
||||
return rv;
|
||||
}
|
||||
@ -361,11 +374,11 @@ unsigned long upx_mmap_and_fd( // returns (mapped_addr | (1+ fd))
|
||||
}
|
||||
#if ANDROID_FRIEND //{
|
||||
else { // !not_android: ftruncate has varying system call number on 32-bit
|
||||
memset(buf, 0, BUFLEN);
|
||||
memset(u.buf, 0, BUFLEN);
|
||||
unsigned wlen = datlen;
|
||||
while (0 < wlen) {
|
||||
int x = (wlen < BUFLEN) ? wlen : BUFLEN;
|
||||
if (x != write(fd, buf, x)) {
|
||||
if (x != write(fd, u.buf, x)) {
|
||||
return -ENOSPC;
|
||||
}
|
||||
wlen -= x;
|
||||
|
||||
162
src/stub/tmp/arm.v4a-linux.elf-entry.bin.dump
generated
vendored
162
src/stub/tmp/arm.v4a-linux.elf-entry.bin.dump
generated
vendored
@ -4,14 +4,14 @@ Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINZ 01dc 0 0 034 2**0 CONTENTS
|
||||
2 ELFMAINX 06e0 0 0 0210 2**2 CONTENTS
|
||||
2 ELFMAINX 06b0 0 0 0210 2**2 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000000 l d ELFMAINY 0 ELFMAINY
|
||||
00000000 *UND* 0 MFLG
|
||||
000000d8 g ELFMAINZ 0 getpid
|
||||
00000498 g F ELFMAINX 0248 upx_mmap_and_fd
|
||||
00000468 g F ELFMAINX 0248 upx_mmap_and_fd
|
||||
00000008 g ELFMAINZ 0 memcpy
|
||||
00000000 *UND* 0 O_BINFO
|
||||
0000004c g ELFMAINZ 0 mempcpy
|
||||
@ -28,7 +28,7 @@ SYMBOL TABLE:
|
||||
00000128 g ELFMAINZ 0 read
|
||||
00000164 g ELFMAINZ 0 unlink
|
||||
0000002c g ELFMAINZ 0 memset
|
||||
0000016c g F ELFMAINX 0f4 ucl_nrv2b_decompress_8
|
||||
0000016c g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
||||
0000018c g ELFMAINZ 0 my_bkpt
|
||||
000000b0 g ELFMAINZ 0 fsync
|
||||
0000013c g ELFMAINZ 0 stat
|
||||
@ -61,92 +61,92 @@ OFFSET TYPE VALUE
|
||||
00000108 R_ARM_PC24 ELFMAINX
|
||||
00000164 R_ARM_PC24 ELFMAINX
|
||||
0000017c R_ARM_PC24 ELFMAINX
|
||||
000001b4 R_ARM_PC24 ELFMAINX
|
||||
000001bc R_ARM_PC24 ELFMAINX
|
||||
000001c0 R_ARM_PC24 ELFMAINX
|
||||
000001d0 R_ARM_PC24 ELFMAINX
|
||||
000001d4 R_ARM_PC24 ELFMAINX
|
||||
000001d8 R_ARM_PC24 ELFMAINX
|
||||
000001e4 R_ARM_PC24 ELFMAINX
|
||||
000001ec R_ARM_PC24 ELFMAINX
|
||||
000001f0 R_ARM_PC24 ELFMAINX
|
||||
000001f4 R_ARM_PC24 ELFMAINX
|
||||
000001f8 R_ARM_PC24 ELFMAINX
|
||||
00000200 R_ARM_PC24 ELFMAINX
|
||||
00000204 R_ARM_PC24 ELFMAINX
|
||||
00000208 R_ARM_PC24 ELFMAINX
|
||||
00000214 R_ARM_PC24 ELFMAINX
|
||||
00000224 R_ARM_PC24 ELFMAINX
|
||||
0000020c R_ARM_PC24 ELFMAINX
|
||||
00000228 R_ARM_PC24 ELFMAINX
|
||||
00000230 R_ARM_PC24 ELFMAINX
|
||||
00000238 R_ARM_PC24 ELFMAINX
|
||||
0000022c R_ARM_PC24 ELFMAINX
|
||||
0000023c R_ARM_PC24 ELFMAINX
|
||||
00000258 R_ARM_PC24 ELFMAINX
|
||||
0000025c R_ARM_PC24 ELFMAINX
|
||||
0000026c R_ARM_PC24 ELFMAINX
|
||||
00000288 R_ARM_PC24 ELFMAINX
|
||||
000002a0 R_ARM_PC24 ELFMAINX
|
||||
000002b4 R_ARM_PC24 ELFMAINX
|
||||
000002e0 R_ARM_PC24 memset
|
||||
000002ec R_ARM_PC24 stat
|
||||
000002f4 R_ARM_PC24 ELFMAINX
|
||||
00000308 R_ARM_PC24 ELFMAINX
|
||||
00000318 R_ARM_PC24 mkdir
|
||||
00000330 R_ARM_PC24 ELFMAINX
|
||||
00000348 R_ARM_PC24 mempcpy
|
||||
00000358 R_ARM_PC24 ELFMAINX
|
||||
0000035c R_ARM_PC24 ELFMAINX
|
||||
00000380 R_ARM_PC24 open
|
||||
00000394 R_ARM_PC24 read
|
||||
000003a0 R_ARM_PC24 close
|
||||
000003c4 R_ARM_PC24 ELFMAINX
|
||||
000003d4 R_ARM_PC24 ELFMAINX
|
||||
00000270 R_ARM_PC24 ELFMAINX
|
||||
00000284 R_ARM_PC24 ELFMAINX
|
||||
000002b0 R_ARM_PC24 memset
|
||||
000002bc R_ARM_PC24 stat
|
||||
000002c4 R_ARM_PC24 ELFMAINX
|
||||
000002d8 R_ARM_PC24 ELFMAINX
|
||||
000002e8 R_ARM_PC24 mkdir
|
||||
00000300 R_ARM_PC24 ELFMAINX
|
||||
00000318 R_ARM_PC24 mempcpy
|
||||
00000328 R_ARM_PC24 ELFMAINX
|
||||
0000032c R_ARM_PC24 ELFMAINX
|
||||
00000350 R_ARM_PC24 open
|
||||
00000364 R_ARM_PC24 read
|
||||
00000370 R_ARM_PC24 close
|
||||
00000394 R_ARM_PC24 ELFMAINX
|
||||
000003a4 R_ARM_PC24 ELFMAINX
|
||||
000003ac R_ARM_PC24 ELFMAINX
|
||||
000003b8 R_ARM_PC24 ELFMAINX
|
||||
000003c8 R_ARM_PC24 mempcpy
|
||||
000003dc R_ARM_PC24 ELFMAINX
|
||||
000003e8 R_ARM_PC24 ELFMAINX
|
||||
000003e0 R_ARM_PC24 ELFMAINX
|
||||
000003f8 R_ARM_PC24 mempcpy
|
||||
00000408 R_ARM_PC24 ELFMAINX
|
||||
0000040c R_ARM_PC24 ELFMAINX
|
||||
00000410 R_ARM_PC24 ELFMAINX
|
||||
00000428 R_ARM_PC24 mempcpy
|
||||
00000438 R_ARM_PC24 ELFMAINX
|
||||
0000043c R_ARM_PC24 ELFMAINX
|
||||
00000454 R_ARM_PC24 mempcpy
|
||||
0000045c R_ARM_PC24 getpid
|
||||
00000424 R_ARM_PC24 mempcpy
|
||||
0000042c R_ARM_PC24 getpid
|
||||
00000434 R_ARM_PC24 ELFMAINX
|
||||
00000440 R_ARM_PC24 ELFMAINX
|
||||
0000044c R_ARM_PC24 ELFMAINX
|
||||
00000464 R_ARM_PC24 ELFMAINX
|
||||
00000470 R_ARM_PC24 ELFMAINX
|
||||
0000047c R_ARM_PC24 ELFMAINX
|
||||
00000494 R_ARM_PC24 ELFMAINX
|
||||
000004b4 R_ARM_PC24 ELFMAINX
|
||||
000004c8 R_ARM_PC24 memfd_create
|
||||
000004d4 R_ARM_PC24 ELFMAINX
|
||||
000004e0 R_ARM_PC24 memfd_create
|
||||
000004ec R_ARM_PC24 ELFMAINX
|
||||
000004f0 R_ARM_PC24 ELFMAINX
|
||||
00000510 R_ARM_PC24 open
|
||||
00000518 R_ARM_PC24 ELFMAINX
|
||||
0000051c R_ARM_PC24 ELFMAINX
|
||||
00000534 R_ARM_PC24 my_bkpt
|
||||
00000554 R_ARM_PC24 uname
|
||||
00000558 R_ARM_PC24 ELFMAINX
|
||||
0000056c R_ARM_PC24 ELFMAINX
|
||||
00000574 R_ARM_PC24 ELFMAINX
|
||||
00000578 R_ARM_PC24 ELFMAINX
|
||||
0000058c R_ARM_PC24 ELFMAINX
|
||||
00000594 R_ARM_PC24 ELFMAINX
|
||||
000005a4 R_ARM_PC24 ELFMAINX
|
||||
000005ac R_ARM_PC24 ELFMAINX
|
||||
000005b0 R_ARM_PC24 get_upxfn_path
|
||||
000005bc R_ARM_PC24 ELFMAINX
|
||||
000005c4 R_ARM_PC24 ELFMAINX
|
||||
000005d0 R_ARM_PC24 ELFMAINX
|
||||
00000480 R_ARM_PC24 ELFMAINX
|
||||
00000494 R_ARM_PC24 memfd_create
|
||||
000004a0 R_ARM_PC24 ELFMAINX
|
||||
000004ac R_ARM_PC24 memfd_create
|
||||
000004b8 R_ARM_PC24 ELFMAINX
|
||||
000004bc R_ARM_PC24 ELFMAINX
|
||||
000004dc R_ARM_PC24 open
|
||||
000004e4 R_ARM_PC24 ELFMAINX
|
||||
000004e8 R_ARM_PC24 ELFMAINX
|
||||
00000500 R_ARM_PC24 my_bkpt
|
||||
0000050c R_ARM_PC24 uname
|
||||
00000510 R_ARM_PC24 ELFMAINX
|
||||
00000524 R_ARM_PC24 ELFMAINX
|
||||
0000052c R_ARM_PC24 ELFMAINX
|
||||
00000530 R_ARM_PC24 ELFMAINX
|
||||
00000544 R_ARM_PC24 ELFMAINX
|
||||
0000054c R_ARM_PC24 ELFMAINX
|
||||
0000055c R_ARM_PC24 ELFMAINX
|
||||
00000564 R_ARM_PC24 ELFMAINX
|
||||
00000568 R_ARM_PC24 get_upxfn_path
|
||||
00000588 R_ARM_PC24 ELFMAINX
|
||||
00000590 R_ARM_PC24 ELFMAINX
|
||||
0000059c R_ARM_PC24 ELFMAINX
|
||||
000005a8 R_ARM_PC24 ELFMAINX
|
||||
000005b0 R_ARM_PC24 ELFMAINX
|
||||
000005c0 R_ARM_PC24 open
|
||||
000005cc R_ARM_PC24 ELFMAINX
|
||||
000005d4 R_ARM_PC24 unlink
|
||||
000005dc R_ARM_PC24 ELFMAINX
|
||||
000005e4 R_ARM_PC24 ELFMAINX
|
||||
000005f4 R_ARM_PC24 open
|
||||
00000600 R_ARM_PC24 ELFMAINX
|
||||
00000608 R_ARM_PC24 unlink
|
||||
00000610 R_ARM_PC24 ELFMAINX
|
||||
0000061c R_ARM_PC24 ELFMAINX
|
||||
00000624 R_ARM_PC24 ELFMAINX
|
||||
00000630 R_ARM_PC24 ftruncate
|
||||
00000638 R_ARM_PC24 ELFMAINX
|
||||
0000063c R_ARM_PC24 ELFMAINX
|
||||
0000064c R_ARM_PC24 memset
|
||||
0000066c R_ARM_PC24 write
|
||||
00000674 R_ARM_PC24 ELFMAINX
|
||||
0000067c R_ARM_PC24 ELFMAINX
|
||||
0000068c R_ARM_PC24 lseek
|
||||
00000698 R_ARM_PC24 ELFMAINX
|
||||
0000069c R_ARM_PC24 ELFMAINX
|
||||
000006a4 R_ARM_PC24 ELFMAINX
|
||||
000006c8 R_ARM_PC24 mmap
|
||||
000005e8 R_ARM_PC24 ELFMAINX
|
||||
000005f0 R_ARM_PC24 ELFMAINX
|
||||
000005fc R_ARM_PC24 ftruncate
|
||||
00000604 R_ARM_PC24 ELFMAINX
|
||||
00000608 R_ARM_PC24 ELFMAINX
|
||||
00000618 R_ARM_PC24 memset
|
||||
00000638 R_ARM_PC24 write
|
||||
00000640 R_ARM_PC24 ELFMAINX
|
||||
00000648 R_ARM_PC24 ELFMAINX
|
||||
00000658 R_ARM_PC24 lseek
|
||||
00000664 R_ARM_PC24 ELFMAINX
|
||||
00000668 R_ARM_PC24 ELFMAINX
|
||||
00000670 R_ARM_PC24 ELFMAINX
|
||||
00000694 R_ARM_PC24 mmap
|
||||
|
||||
12
src/stub/tmp/arm.v4a-linux.elf-fold.map
generated
vendored
12
src/stub/tmp/arm.v4a-linux.elf-fold.map
generated
vendored
@ -7,7 +7,7 @@ Name Origin Length Attributes
|
||||
Linker script and memory map
|
||||
|
||||
|
||||
.text 0x0000000000000000 0x1060
|
||||
.text 0x0000000000000000 0x1b5c
|
||||
.text 0x0000000000000000 0x344 tmp/arm.v4a-linux.elf-fold.o
|
||||
0x0000000000000004 get_page_mask
|
||||
0x00000000000002e4 memcpy
|
||||
@ -22,9 +22,9 @@ Linker script and memory map
|
||||
.text 0x0000000000000344 0x480 tmp/arm.v4a-linux.elf-upxfd_android.o
|
||||
0x000000000000057c upx_mmap_and_fd
|
||||
.text 0x00000000000007c4 0x0 tmp/arm.v4a-expand.o
|
||||
.text 0x00000000000007c4 0x89c tmp/arm.v4a-linux.elf-main2.o
|
||||
0x0000000000000ffc underlay
|
||||
0x0000000000000ecc upx_main
|
||||
.text 0x00000000000007c4 0x1398 tmp/arm.v4a-linux.elf-main2.o
|
||||
0x0000000000001ab4 underlay
|
||||
0x0000000000001858 upx_main
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x214
|
||||
SYSCALLS 0x0000000000000000 0x214 tmp/arm.v4a-linux.elf-fold.o
|
||||
@ -53,8 +53,8 @@ SYSCALLS 0x0000000000000000 0x214
|
||||
0x00000000000000d8 mkdir
|
||||
0x000000000000001c close
|
||||
|
||||
EXP_HEAD 0x0000000000000000 0xe0
|
||||
EXP_HEAD 0x0000000000000000 0xe0 tmp/arm.v4a-expand.o
|
||||
EXP_HEAD 0x0000000000000000 0xdc
|
||||
EXP_HEAD 0x0000000000000000 0xdc tmp/arm.v4a-expand.o
|
||||
0x0000000000000074 f_expand
|
||||
|
||||
EXP_TAIL 0x0000000000000000 0x24
|
||||
|
||||
164
src/stub/tmp/arm.v5a-linux.elf-entry.bin.dump
generated
vendored
164
src/stub/tmp/arm.v5a-linux.elf-entry.bin.dump
generated
vendored
@ -4,14 +4,14 @@ Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINZ 01dc 0 0 034 2**0 CONTENTS
|
||||
2 ELFMAINX 06e4 0 0 0210 2**2 CONTENTS
|
||||
2 ELFMAINX 06b8 0 0 0210 2**2 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000000 l d ELFMAINY 0 ELFMAINY
|
||||
00000000 *UND* 0 MFLG
|
||||
000000d8 g ELFMAINZ 0 getpid
|
||||
0000049c g F ELFMAINX 0248 upx_mmap_and_fd
|
||||
0000046c g F ELFMAINX 024c upx_mmap_and_fd
|
||||
00000008 g ELFMAINZ 0 memcpy
|
||||
00000000 *UND* 0 O_BINFO
|
||||
0000004c g ELFMAINZ 0 mempcpy
|
||||
@ -28,7 +28,7 @@ SYMBOL TABLE:
|
||||
00000128 g ELFMAINZ 0 read
|
||||
00000164 g ELFMAINZ 0 unlink
|
||||
0000002c g ELFMAINZ 0 memset
|
||||
0000016c g F ELFMAINX 0f4 ucl_nrv2b_decompress_8
|
||||
0000016c g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
||||
0000018c g ELFMAINZ 0 my_bkpt
|
||||
000000b0 g ELFMAINZ 0 fsync
|
||||
0000013c g ELFMAINZ 0 stat
|
||||
@ -61,93 +61,93 @@ OFFSET TYPE VALUE
|
||||
00000108 R_ARM_PC24 ELFMAINX
|
||||
00000164 R_ARM_PC24 ELFMAINX
|
||||
0000017c R_ARM_PC24 ELFMAINX
|
||||
000001b4 R_ARM_PC24 ELFMAINX
|
||||
000001bc R_ARM_PC24 ELFMAINX
|
||||
000001c0 R_ARM_PC24 ELFMAINX
|
||||
000001d0 R_ARM_PC24 ELFMAINX
|
||||
000001d4 R_ARM_PC24 ELFMAINX
|
||||
000001d8 R_ARM_PC24 ELFMAINX
|
||||
000001e4 R_ARM_PC24 ELFMAINX
|
||||
000001ec R_ARM_PC24 ELFMAINX
|
||||
000001f0 R_ARM_PC24 ELFMAINX
|
||||
000001f4 R_ARM_PC24 ELFMAINX
|
||||
000001f8 R_ARM_PC24 ELFMAINX
|
||||
00000200 R_ARM_PC24 ELFMAINX
|
||||
00000204 R_ARM_PC24 ELFMAINX
|
||||
00000208 R_ARM_PC24 ELFMAINX
|
||||
00000214 R_ARM_PC24 ELFMAINX
|
||||
00000224 R_ARM_PC24 ELFMAINX
|
||||
0000020c R_ARM_PC24 ELFMAINX
|
||||
00000228 R_ARM_PC24 ELFMAINX
|
||||
00000230 R_ARM_PC24 ELFMAINX
|
||||
00000238 R_ARM_PC24 ELFMAINX
|
||||
0000022c R_ARM_PC24 ELFMAINX
|
||||
0000023c R_ARM_PC24 ELFMAINX
|
||||
00000258 R_ARM_PC24 ELFMAINX
|
||||
0000025c R_ARM_PC24 ELFMAINX
|
||||
0000026c R_ARM_PC24 ELFMAINX
|
||||
00000288 R_ARM_PC24 ELFMAINX
|
||||
000002a0 R_ARM_PC24 ELFMAINX
|
||||
000002b4 R_ARM_PC24 ELFMAINX
|
||||
000002e0 R_ARM_PC24 memset
|
||||
000002ec R_ARM_PC24 stat
|
||||
000002f4 R_ARM_PC24 ELFMAINX
|
||||
00000308 R_ARM_PC24 ELFMAINX
|
||||
00000310 R_ARM_PC24 ELFMAINX
|
||||
0000031c R_ARM_PC24 mkdir
|
||||
00000334 R_ARM_PC24 ELFMAINX
|
||||
0000034c R_ARM_PC24 mempcpy
|
||||
0000035c R_ARM_PC24 ELFMAINX
|
||||
00000360 R_ARM_PC24 ELFMAINX
|
||||
00000384 R_ARM_PC24 open
|
||||
00000394 R_ARM_PC24 read
|
||||
000003a0 R_ARM_PC24 close
|
||||
000003c4 R_ARM_PC24 ELFMAINX
|
||||
000003d4 R_ARM_PC24 ELFMAINX
|
||||
00000270 R_ARM_PC24 ELFMAINX
|
||||
00000284 R_ARM_PC24 ELFMAINX
|
||||
000002b0 R_ARM_PC24 memset
|
||||
000002bc R_ARM_PC24 stat
|
||||
000002c4 R_ARM_PC24 ELFMAINX
|
||||
000002d8 R_ARM_PC24 ELFMAINX
|
||||
000002e0 R_ARM_PC24 ELFMAINX
|
||||
000002ec R_ARM_PC24 mkdir
|
||||
00000304 R_ARM_PC24 ELFMAINX
|
||||
0000031c R_ARM_PC24 mempcpy
|
||||
0000032c R_ARM_PC24 ELFMAINX
|
||||
00000330 R_ARM_PC24 ELFMAINX
|
||||
00000354 R_ARM_PC24 open
|
||||
00000364 R_ARM_PC24 read
|
||||
00000370 R_ARM_PC24 close
|
||||
00000394 R_ARM_PC24 ELFMAINX
|
||||
000003a4 R_ARM_PC24 ELFMAINX
|
||||
000003ac R_ARM_PC24 ELFMAINX
|
||||
000003b8 R_ARM_PC24 ELFMAINX
|
||||
000003c8 R_ARM_PC24 mempcpy
|
||||
000003dc R_ARM_PC24 ELFMAINX
|
||||
000003e8 R_ARM_PC24 ELFMAINX
|
||||
000003e0 R_ARM_PC24 ELFMAINX
|
||||
000003f8 R_ARM_PC24 mempcpy
|
||||
00000408 R_ARM_PC24 ELFMAINX
|
||||
0000040c R_ARM_PC24 ELFMAINX
|
||||
00000410 R_ARM_PC24 ELFMAINX
|
||||
00000428 R_ARM_PC24 mempcpy
|
||||
00000438 R_ARM_PC24 ELFMAINX
|
||||
0000043c R_ARM_PC24 ELFMAINX
|
||||
00000454 R_ARM_PC24 mempcpy
|
||||
0000045c R_ARM_PC24 getpid
|
||||
00000424 R_ARM_PC24 mempcpy
|
||||
0000042c R_ARM_PC24 getpid
|
||||
00000434 R_ARM_PC24 ELFMAINX
|
||||
00000440 R_ARM_PC24 ELFMAINX
|
||||
0000044c R_ARM_PC24 ELFMAINX
|
||||
00000464 R_ARM_PC24 ELFMAINX
|
||||
00000470 R_ARM_PC24 ELFMAINX
|
||||
0000047c R_ARM_PC24 ELFMAINX
|
||||
00000494 R_ARM_PC24 ELFMAINX
|
||||
000004b8 R_ARM_PC24 ELFMAINX
|
||||
000004cc R_ARM_PC24 memfd_create
|
||||
000004d8 R_ARM_PC24 ELFMAINX
|
||||
000004e4 R_ARM_PC24 memfd_create
|
||||
000004f0 R_ARM_PC24 ELFMAINX
|
||||
000004f4 R_ARM_PC24 ELFMAINX
|
||||
00000510 R_ARM_PC24 open
|
||||
00000518 R_ARM_PC24 ELFMAINX
|
||||
0000051c R_ARM_PC24 ELFMAINX
|
||||
00000534 R_ARM_PC24 my_bkpt
|
||||
00000554 R_ARM_PC24 uname
|
||||
00000558 R_ARM_PC24 ELFMAINX
|
||||
0000056c R_ARM_PC24 ELFMAINX
|
||||
00000574 R_ARM_PC24 ELFMAINX
|
||||
00000578 R_ARM_PC24 ELFMAINX
|
||||
0000058c R_ARM_PC24 ELFMAINX
|
||||
00000594 R_ARM_PC24 ELFMAINX
|
||||
000005a4 R_ARM_PC24 ELFMAINX
|
||||
000005ac R_ARM_PC24 ELFMAINX
|
||||
000005b0 R_ARM_PC24 get_upxfn_path
|
||||
000005bc R_ARM_PC24 ELFMAINX
|
||||
000005c4 R_ARM_PC24 ELFMAINX
|
||||
000005d0 R_ARM_PC24 ELFMAINX
|
||||
00000484 R_ARM_PC24 ELFMAINX
|
||||
00000498 R_ARM_PC24 memfd_create
|
||||
000004a4 R_ARM_PC24 ELFMAINX
|
||||
000004b0 R_ARM_PC24 memfd_create
|
||||
000004bc R_ARM_PC24 ELFMAINX
|
||||
000004c0 R_ARM_PC24 ELFMAINX
|
||||
000004dc R_ARM_PC24 open
|
||||
000004e4 R_ARM_PC24 ELFMAINX
|
||||
000004e8 R_ARM_PC24 ELFMAINX
|
||||
00000500 R_ARM_PC24 my_bkpt
|
||||
0000050c R_ARM_PC24 uname
|
||||
00000510 R_ARM_PC24 ELFMAINX
|
||||
00000524 R_ARM_PC24 ELFMAINX
|
||||
0000052c R_ARM_PC24 ELFMAINX
|
||||
00000530 R_ARM_PC24 ELFMAINX
|
||||
00000544 R_ARM_PC24 ELFMAINX
|
||||
0000054c R_ARM_PC24 ELFMAINX
|
||||
0000055c R_ARM_PC24 ELFMAINX
|
||||
00000564 R_ARM_PC24 ELFMAINX
|
||||
00000568 R_ARM_PC24 get_upxfn_path
|
||||
00000588 R_ARM_PC24 ELFMAINX
|
||||
00000590 R_ARM_PC24 ELFMAINX
|
||||
0000059c R_ARM_PC24 ELFMAINX
|
||||
000005a8 R_ARM_PC24 ELFMAINX
|
||||
000005b0 R_ARM_PC24 ELFMAINX
|
||||
000005c0 R_ARM_PC24 open
|
||||
000005cc R_ARM_PC24 ELFMAINX
|
||||
000005d4 R_ARM_PC24 unlink
|
||||
000005dc R_ARM_PC24 ELFMAINX
|
||||
000005e4 R_ARM_PC24 ELFMAINX
|
||||
000005f4 R_ARM_PC24 open
|
||||
00000600 R_ARM_PC24 ELFMAINX
|
||||
00000608 R_ARM_PC24 unlink
|
||||
00000610 R_ARM_PC24 ELFMAINX
|
||||
0000061c R_ARM_PC24 ELFMAINX
|
||||
00000624 R_ARM_PC24 ELFMAINX
|
||||
00000630 R_ARM_PC24 ftruncate
|
||||
00000638 R_ARM_PC24 ELFMAINX
|
||||
0000063c R_ARM_PC24 ELFMAINX
|
||||
0000064c R_ARM_PC24 memset
|
||||
0000066c R_ARM_PC24 write
|
||||
00000674 R_ARM_PC24 ELFMAINX
|
||||
0000067c R_ARM_PC24 ELFMAINX
|
||||
0000068c R_ARM_PC24 lseek
|
||||
00000698 R_ARM_PC24 ELFMAINX
|
||||
0000069c R_ARM_PC24 ELFMAINX
|
||||
000006a4 R_ARM_PC24 ELFMAINX
|
||||
000006c8 R_ARM_PC24 mmap
|
||||
000005e8 R_ARM_PC24 ELFMAINX
|
||||
000005f0 R_ARM_PC24 ELFMAINX
|
||||
000005fc R_ARM_PC24 ftruncate
|
||||
00000604 R_ARM_PC24 ELFMAINX
|
||||
00000608 R_ARM_PC24 ELFMAINX
|
||||
00000618 R_ARM_PC24 memset
|
||||
00000638 R_ARM_PC24 write
|
||||
00000640 R_ARM_PC24 ELFMAINX
|
||||
00000648 R_ARM_PC24 ELFMAINX
|
||||
00000658 R_ARM_PC24 lseek
|
||||
00000664 R_ARM_PC24 ELFMAINX
|
||||
00000668 R_ARM_PC24 ELFMAINX
|
||||
00000670 R_ARM_PC24 ELFMAINX
|
||||
00000694 R_ARM_PC24 mmap
|
||||
|
||||
24
src/stub/tmp/arm.v5a-linux.elf-fold.map
generated
vendored
24
src/stub/tmp/arm.v5a-linux.elf-fold.map
generated
vendored
@ -8,7 +8,7 @@ Linker script and memory map
|
||||
|
||||
TARGET(elf32-littlearm)
|
||||
|
||||
.text 0x0000000000000000 0x1060
|
||||
.text 0x0000000000000000 0x1b7c
|
||||
*(.text)
|
||||
.text 0x0000000000000000 0x344 tmp/arm.v5a-linux.elf-fold.o
|
||||
0x0000000000000004 get_page_mask
|
||||
@ -21,17 +21,17 @@ TARGET(elf32-littlearm)
|
||||
0x0000000000000024 Pprotect
|
||||
0x00000000fffffff4 PAGE_MASK
|
||||
0x0000000000000024 mprotect
|
||||
.text 0x0000000000000344 0x484 tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
.text 0x0000000000000344 0x488 tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
0x0000000000000580 upx_mmap_and_fd
|
||||
.text 0x00000000000007c8 0x0 tmp/arm.v5a-expand.o
|
||||
.text 0x00000000000007c8 0x898 tmp/arm.v5a-linux.elf-main2.o
|
||||
0x0000000000000ffc underlay
|
||||
0x0000000000000ecc upx_main
|
||||
.text 0x00000000000007cc 0x0 tmp/arm.v5a-expand.o
|
||||
.text 0x00000000000007cc 0x13b0 tmp/arm.v5a-linux.elf-main2.o
|
||||
0x0000000000001ad4 underlay
|
||||
0x0000000000001874 upx_main
|
||||
*(.data)
|
||||
.data 0x0000000000001060 0x0 tmp/arm.v5a-linux.elf-fold.o
|
||||
.data 0x0000000000001060 0x0 tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
.data 0x0000000000001060 0x0 tmp/arm.v5a-expand.o
|
||||
.data 0x0000000000001060 0x0 tmp/arm.v5a-linux.elf-main2.o
|
||||
.data 0x0000000000001b7c 0x0 tmp/arm.v5a-linux.elf-fold.o
|
||||
.data 0x0000000000001b7c 0x0 tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
.data 0x0000000000001b7c 0x0 tmp/arm.v5a-expand.o
|
||||
.data 0x0000000000001b7c 0x0 tmp/arm.v5a-linux.elf-main2.o
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x214
|
||||
SYSCALLS 0x0000000000000000 0x214 tmp/arm.v5a-linux.elf-fold.o
|
||||
@ -60,8 +60,8 @@ SYSCALLS 0x0000000000000000 0x214
|
||||
0x00000000000000d8 mkdir
|
||||
0x000000000000001c close
|
||||
|
||||
EXP_HEAD 0x0000000000000000 0xe0
|
||||
EXP_HEAD 0x0000000000000000 0xe0 tmp/arm.v5a-expand.o
|
||||
EXP_HEAD 0x0000000000000000 0xdc
|
||||
EXP_HEAD 0x0000000000000000 0xdc tmp/arm.v5a-expand.o
|
||||
0x0000000000000074 f_expand
|
||||
|
||||
EXP_TAIL 0x0000000000000000 0x24
|
||||
|
||||
162
src/stub/tmp/armeb.v4a-linux.elf-entry.bin.dump
generated
vendored
162
src/stub/tmp/armeb.v4a-linux.elf-entry.bin.dump
generated
vendored
@ -4,14 +4,14 @@ Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINZ 01dc 0 0 034 2**0 CONTENTS
|
||||
2 ELFMAINX 06e0 0 0 0210 2**2 CONTENTS
|
||||
2 ELFMAINX 06b0 0 0 0210 2**2 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000000 l d ELFMAINY 0 ELFMAINY
|
||||
00000000 *UND* 0 MFLG
|
||||
000000d8 g ELFMAINZ 0 getpid
|
||||
00000498 g F ELFMAINX 0248 upx_mmap_and_fd
|
||||
00000468 g F ELFMAINX 0248 upx_mmap_and_fd
|
||||
00000008 g ELFMAINZ 0 memcpy
|
||||
00000000 *UND* 0 O_BINFO
|
||||
0000004c g ELFMAINZ 0 mempcpy
|
||||
@ -28,7 +28,7 @@ SYMBOL TABLE:
|
||||
00000128 g ELFMAINZ 0 read
|
||||
00000164 g ELFMAINZ 0 unlink
|
||||
0000002c g ELFMAINZ 0 memset
|
||||
0000016c g F ELFMAINX 0f4 ucl_nrv2b_decompress_8
|
||||
0000016c g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
||||
0000018c g ELFMAINZ 0 my_bkpt
|
||||
000000b0 g ELFMAINZ 0 fsync
|
||||
0000013c g ELFMAINZ 0 stat
|
||||
@ -61,92 +61,92 @@ OFFSET TYPE VALUE
|
||||
00000108 R_ARM_PC24 ELFMAINX
|
||||
00000164 R_ARM_PC24 ELFMAINX
|
||||
0000017c R_ARM_PC24 ELFMAINX
|
||||
000001b4 R_ARM_PC24 ELFMAINX
|
||||
000001bc R_ARM_PC24 ELFMAINX
|
||||
000001c0 R_ARM_PC24 ELFMAINX
|
||||
000001d0 R_ARM_PC24 ELFMAINX
|
||||
000001d4 R_ARM_PC24 ELFMAINX
|
||||
000001d8 R_ARM_PC24 ELFMAINX
|
||||
000001e4 R_ARM_PC24 ELFMAINX
|
||||
000001ec R_ARM_PC24 ELFMAINX
|
||||
000001f0 R_ARM_PC24 ELFMAINX
|
||||
000001f4 R_ARM_PC24 ELFMAINX
|
||||
000001f8 R_ARM_PC24 ELFMAINX
|
||||
00000200 R_ARM_PC24 ELFMAINX
|
||||
00000204 R_ARM_PC24 ELFMAINX
|
||||
00000208 R_ARM_PC24 ELFMAINX
|
||||
00000214 R_ARM_PC24 ELFMAINX
|
||||
00000224 R_ARM_PC24 ELFMAINX
|
||||
0000020c R_ARM_PC24 ELFMAINX
|
||||
00000228 R_ARM_PC24 ELFMAINX
|
||||
00000230 R_ARM_PC24 ELFMAINX
|
||||
00000238 R_ARM_PC24 ELFMAINX
|
||||
0000022c R_ARM_PC24 ELFMAINX
|
||||
0000023c R_ARM_PC24 ELFMAINX
|
||||
00000258 R_ARM_PC24 ELFMAINX
|
||||
0000025c R_ARM_PC24 ELFMAINX
|
||||
0000026c R_ARM_PC24 ELFMAINX
|
||||
00000288 R_ARM_PC24 ELFMAINX
|
||||
000002a0 R_ARM_PC24 ELFMAINX
|
||||
000002b4 R_ARM_PC24 ELFMAINX
|
||||
000002e0 R_ARM_PC24 memset
|
||||
000002ec R_ARM_PC24 stat
|
||||
000002f4 R_ARM_PC24 ELFMAINX
|
||||
00000308 R_ARM_PC24 ELFMAINX
|
||||
00000318 R_ARM_PC24 mkdir
|
||||
00000330 R_ARM_PC24 ELFMAINX
|
||||
00000348 R_ARM_PC24 mempcpy
|
||||
00000358 R_ARM_PC24 ELFMAINX
|
||||
0000035c R_ARM_PC24 ELFMAINX
|
||||
00000380 R_ARM_PC24 open
|
||||
00000394 R_ARM_PC24 read
|
||||
000003a0 R_ARM_PC24 close
|
||||
000003c4 R_ARM_PC24 ELFMAINX
|
||||
000003d4 R_ARM_PC24 ELFMAINX
|
||||
00000270 R_ARM_PC24 ELFMAINX
|
||||
00000284 R_ARM_PC24 ELFMAINX
|
||||
000002b0 R_ARM_PC24 memset
|
||||
000002bc R_ARM_PC24 stat
|
||||
000002c4 R_ARM_PC24 ELFMAINX
|
||||
000002d8 R_ARM_PC24 ELFMAINX
|
||||
000002e8 R_ARM_PC24 mkdir
|
||||
00000300 R_ARM_PC24 ELFMAINX
|
||||
00000318 R_ARM_PC24 mempcpy
|
||||
00000328 R_ARM_PC24 ELFMAINX
|
||||
0000032c R_ARM_PC24 ELFMAINX
|
||||
00000350 R_ARM_PC24 open
|
||||
00000364 R_ARM_PC24 read
|
||||
00000370 R_ARM_PC24 close
|
||||
00000394 R_ARM_PC24 ELFMAINX
|
||||
000003a4 R_ARM_PC24 ELFMAINX
|
||||
000003ac R_ARM_PC24 ELFMAINX
|
||||
000003b8 R_ARM_PC24 ELFMAINX
|
||||
000003c8 R_ARM_PC24 mempcpy
|
||||
000003dc R_ARM_PC24 ELFMAINX
|
||||
000003e8 R_ARM_PC24 ELFMAINX
|
||||
000003e0 R_ARM_PC24 ELFMAINX
|
||||
000003f8 R_ARM_PC24 mempcpy
|
||||
00000408 R_ARM_PC24 ELFMAINX
|
||||
0000040c R_ARM_PC24 ELFMAINX
|
||||
00000410 R_ARM_PC24 ELFMAINX
|
||||
00000428 R_ARM_PC24 mempcpy
|
||||
00000438 R_ARM_PC24 ELFMAINX
|
||||
0000043c R_ARM_PC24 ELFMAINX
|
||||
00000454 R_ARM_PC24 mempcpy
|
||||
0000045c R_ARM_PC24 getpid
|
||||
00000424 R_ARM_PC24 mempcpy
|
||||
0000042c R_ARM_PC24 getpid
|
||||
00000434 R_ARM_PC24 ELFMAINX
|
||||
00000440 R_ARM_PC24 ELFMAINX
|
||||
0000044c R_ARM_PC24 ELFMAINX
|
||||
00000464 R_ARM_PC24 ELFMAINX
|
||||
00000470 R_ARM_PC24 ELFMAINX
|
||||
0000047c R_ARM_PC24 ELFMAINX
|
||||
00000494 R_ARM_PC24 ELFMAINX
|
||||
000004b4 R_ARM_PC24 ELFMAINX
|
||||
000004c8 R_ARM_PC24 memfd_create
|
||||
000004d4 R_ARM_PC24 ELFMAINX
|
||||
000004e0 R_ARM_PC24 memfd_create
|
||||
000004ec R_ARM_PC24 ELFMAINX
|
||||
000004f0 R_ARM_PC24 ELFMAINX
|
||||
00000510 R_ARM_PC24 open
|
||||
00000518 R_ARM_PC24 ELFMAINX
|
||||
0000051c R_ARM_PC24 ELFMAINX
|
||||
00000534 R_ARM_PC24 my_bkpt
|
||||
00000554 R_ARM_PC24 uname
|
||||
00000558 R_ARM_PC24 ELFMAINX
|
||||
0000056c R_ARM_PC24 ELFMAINX
|
||||
00000574 R_ARM_PC24 ELFMAINX
|
||||
00000578 R_ARM_PC24 ELFMAINX
|
||||
0000058c R_ARM_PC24 ELFMAINX
|
||||
00000594 R_ARM_PC24 ELFMAINX
|
||||
000005a4 R_ARM_PC24 ELFMAINX
|
||||
000005ac R_ARM_PC24 ELFMAINX
|
||||
000005b0 R_ARM_PC24 get_upxfn_path
|
||||
000005bc R_ARM_PC24 ELFMAINX
|
||||
000005c4 R_ARM_PC24 ELFMAINX
|
||||
000005d0 R_ARM_PC24 ELFMAINX
|
||||
00000480 R_ARM_PC24 ELFMAINX
|
||||
00000494 R_ARM_PC24 memfd_create
|
||||
000004a0 R_ARM_PC24 ELFMAINX
|
||||
000004ac R_ARM_PC24 memfd_create
|
||||
000004b8 R_ARM_PC24 ELFMAINX
|
||||
000004bc R_ARM_PC24 ELFMAINX
|
||||
000004dc R_ARM_PC24 open
|
||||
000004e4 R_ARM_PC24 ELFMAINX
|
||||
000004e8 R_ARM_PC24 ELFMAINX
|
||||
00000500 R_ARM_PC24 my_bkpt
|
||||
0000050c R_ARM_PC24 uname
|
||||
00000510 R_ARM_PC24 ELFMAINX
|
||||
00000524 R_ARM_PC24 ELFMAINX
|
||||
0000052c R_ARM_PC24 ELFMAINX
|
||||
00000530 R_ARM_PC24 ELFMAINX
|
||||
00000544 R_ARM_PC24 ELFMAINX
|
||||
0000054c R_ARM_PC24 ELFMAINX
|
||||
0000055c R_ARM_PC24 ELFMAINX
|
||||
00000564 R_ARM_PC24 ELFMAINX
|
||||
00000568 R_ARM_PC24 get_upxfn_path
|
||||
00000588 R_ARM_PC24 ELFMAINX
|
||||
00000590 R_ARM_PC24 ELFMAINX
|
||||
0000059c R_ARM_PC24 ELFMAINX
|
||||
000005a8 R_ARM_PC24 ELFMAINX
|
||||
000005b0 R_ARM_PC24 ELFMAINX
|
||||
000005c0 R_ARM_PC24 open
|
||||
000005cc R_ARM_PC24 ELFMAINX
|
||||
000005d4 R_ARM_PC24 unlink
|
||||
000005dc R_ARM_PC24 ELFMAINX
|
||||
000005e4 R_ARM_PC24 ELFMAINX
|
||||
000005f4 R_ARM_PC24 open
|
||||
00000600 R_ARM_PC24 ELFMAINX
|
||||
00000608 R_ARM_PC24 unlink
|
||||
00000610 R_ARM_PC24 ELFMAINX
|
||||
0000061c R_ARM_PC24 ELFMAINX
|
||||
00000624 R_ARM_PC24 ELFMAINX
|
||||
00000630 R_ARM_PC24 ftruncate
|
||||
00000638 R_ARM_PC24 ELFMAINX
|
||||
0000063c R_ARM_PC24 ELFMAINX
|
||||
0000064c R_ARM_PC24 memset
|
||||
0000066c R_ARM_PC24 write
|
||||
00000674 R_ARM_PC24 ELFMAINX
|
||||
0000067c R_ARM_PC24 ELFMAINX
|
||||
0000068c R_ARM_PC24 lseek
|
||||
00000698 R_ARM_PC24 ELFMAINX
|
||||
0000069c R_ARM_PC24 ELFMAINX
|
||||
000006a4 R_ARM_PC24 ELFMAINX
|
||||
000006c8 R_ARM_PC24 mmap
|
||||
000005e8 R_ARM_PC24 ELFMAINX
|
||||
000005f0 R_ARM_PC24 ELFMAINX
|
||||
000005fc R_ARM_PC24 ftruncate
|
||||
00000604 R_ARM_PC24 ELFMAINX
|
||||
00000608 R_ARM_PC24 ELFMAINX
|
||||
00000618 R_ARM_PC24 memset
|
||||
00000638 R_ARM_PC24 write
|
||||
00000640 R_ARM_PC24 ELFMAINX
|
||||
00000648 R_ARM_PC24 ELFMAINX
|
||||
00000658 R_ARM_PC24 lseek
|
||||
00000664 R_ARM_PC24 ELFMAINX
|
||||
00000668 R_ARM_PC24 ELFMAINX
|
||||
00000670 R_ARM_PC24 ELFMAINX
|
||||
00000694 R_ARM_PC24 mmap
|
||||
|
||||
12
src/stub/tmp/armeb.v4a-linux.elf-fold.map
generated
vendored
12
src/stub/tmp/armeb.v4a-linux.elf-fold.map
generated
vendored
@ -7,7 +7,7 @@ Name Origin Length Attributes
|
||||
Linker script and memory map
|
||||
|
||||
|
||||
.text 0x0000000000000000 0x1074
|
||||
.text 0x0000000000000000 0x1b70
|
||||
.text 0x0000000000000000 0x344 tmp/armeb.v4a-linux.elf-fold.o
|
||||
0x0000000000000004 get_page_mask
|
||||
0x00000000000002e4 memcpy
|
||||
@ -22,9 +22,9 @@ Linker script and memory map
|
||||
.text 0x0000000000000344 0x480 tmp/armeb.v4a-linux.elf-upxfd_android.o
|
||||
0x000000000000057c upx_mmap_and_fd
|
||||
.text 0x00000000000007c4 0x0 tmp/armeb.v4a-expand.o
|
||||
.text 0x00000000000007c4 0x8b0 tmp/armeb.v4a-linux.elf-main2.o
|
||||
0x0000000000001010 underlay
|
||||
0x0000000000000edc upx_main
|
||||
.text 0x00000000000007c4 0x13ac tmp/armeb.v4a-linux.elf-main2.o
|
||||
0x0000000000001ac8 underlay
|
||||
0x0000000000001868 upx_main
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x214
|
||||
SYSCALLS 0x0000000000000000 0x214 tmp/armeb.v4a-linux.elf-fold.o
|
||||
@ -53,8 +53,8 @@ SYSCALLS 0x0000000000000000 0x214
|
||||
0x00000000000000d8 mkdir
|
||||
0x000000000000001c close
|
||||
|
||||
EXP_HEAD 0x0000000000000000 0xe0
|
||||
EXP_HEAD 0x0000000000000000 0xe0 tmp/armeb.v4a-expand.o
|
||||
EXP_HEAD 0x0000000000000000 0xdc
|
||||
EXP_HEAD 0x0000000000000000 0xdc tmp/armeb.v4a-expand.o
|
||||
0x0000000000000074 f_expand
|
||||
|
||||
EXP_TAIL 0x0000000000000000 0x24
|
||||
|
||||
16
src/stub/tmp/i386-linux.elf-entry.bin.dump
generated
vendored
16
src/stub/tmp/i386-linux.elf-entry.bin.dump
generated
vendored
@ -2,12 +2,12 @@ file format elf32-i386
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 060f 0 0 034 2**2 CONTENTS
|
||||
1 ELFMAINZ 0a 0 0 0643 2**0 CONTENTS
|
||||
0 ELFMAINX 0635 0 0 034 2**2 CONTENTS
|
||||
1 ELFMAINZ 0a 0 0 0669 2**0 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
000003f7 g F ELFMAINX 0218 upx_mmap_and_fd
|
||||
000003f7 g F ELFMAINX 023e upx_mmap_and_fd
|
||||
00000000 *UND* 0 O_BINFO
|
||||
000001cc g ELFMAINX 0 mempcpy
|
||||
00000172 g ELFMAINX 0 mmap
|
||||
@ -28,11 +28,11 @@ OFFSET TYPE VALUE
|
||||
0000020e R_386_PC32 stat
|
||||
0000023c R_386_PC32 mkdir
|
||||
0000032b R_386_PC32 mempcpy
|
||||
00000477 R_386_PC32 my_bkpt
|
||||
00000498 R_386_PC32 uname
|
||||
000004f5 R_386_PC32 get_upxfn_path
|
||||
0000057c R_386_PC32 memset
|
||||
000005e3 R_386_PC32 mmap
|
||||
00000475 R_386_PC32 my_bkpt
|
||||
00000484 R_386_PC32 uname
|
||||
000004de R_386_PC32 get_upxfn_path
|
||||
00000585 R_386_PC32 memset
|
||||
00000609 R_386_PC32 mmap
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
|
||||
14
src/stub/tmp/i386-linux.elf-fold.map
generated
vendored
14
src/stub/tmp/i386-linux.elf-fold.map
generated
vendored
@ -7,18 +7,18 @@ Name Origin Length Attributes
|
||||
Linker script and memory map
|
||||
|
||||
|
||||
.text 0x0000000000000000 0xd6c
|
||||
.text 0x0000000000000000 0x176e
|
||||
.text 0x0000000000000000 0x18b tmp/i386-linux.elf-fold.o
|
||||
0x000000000000000c get_page_mask
|
||||
0x0000000000000019 get_upxfn_path
|
||||
*fill* 0x000000000000018b 0x1 00
|
||||
.text 0x000000000000018c 0x41f tmp/i386-linux.elf-upxfd_android.o
|
||||
.text 0x000000000000018c 0x445 tmp/i386-linux.elf-upxfd_android.o
|
||||
0x0000000000000393 upx_mmap_and_fd
|
||||
*fill* 0x00000000000005ab 0x1 00
|
||||
.text 0x00000000000005ac 0x0 tmp/i386-expand.o
|
||||
.text 0x00000000000005ac 0x7c0 tmp/i386-linux.elf-main2.o
|
||||
0x0000000000000701 underlay
|
||||
0x0000000000000c18 upx_main
|
||||
*fill* 0x00000000000005d1 0x3 00
|
||||
.text 0x00000000000005d4 0x0 tmp/i386-expand.o
|
||||
.text 0x00000000000005d4 0x119a tmp/i386-linux.elf-main2.o
|
||||
0x00000000000016f1 underlay
|
||||
0x0000000000001475 upx_main
|
||||
|
||||
.data 0x0000000000000000 0x0
|
||||
.data 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o
|
||||
|
||||
12
src/stub/tmp/mips.r3000-linux.elf-fold.map
generated
vendored
12
src/stub/tmp/mips.r3000-linux.elf-fold.map
generated
vendored
@ -8,18 +8,18 @@ Linker script and memory map
|
||||
|
||||
TARGET(elf32-bigmips)
|
||||
|
||||
.text 0x0000000000000000 0xdcc
|
||||
.text 0x0000000000000000 0x1ba0
|
||||
*(.text)
|
||||
.text 0x0000000000000000 0xdcc tmp/mips.r3000-linux.elf-fold.o
|
||||
.text 0x0000000000000000 0x1ba0 tmp/mips.r3000-linux.elf-fold.o
|
||||
0x00000000000000d0 get_page_mask
|
||||
0x0000000000000cac upx_mmap_and_fd
|
||||
0x0000000000001a80 upx_mmap_and_fd
|
||||
0x00000000000000f0 get_upxfn_path
|
||||
0x0000000000000c40 underlay
|
||||
0x0000000000000aa8 upx_main
|
||||
0x00000000000019d0 underlay
|
||||
0x00000000000016f4 upx_main
|
||||
0x0000000000000010 get4unal
|
||||
0x0000000000000128 close
|
||||
*(.data)
|
||||
.data 0x0000000000000dcc 0x0 tmp/mips.r3000-linux.elf-fold.o
|
||||
.data 0x0000000000001ba0 0x0 tmp/mips.r3000-linux.elf-fold.o
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x178
|
||||
SYSCALLS 0x0000000000000000 0x178 tmp/mips.r3000-linux.elf-fold.o
|
||||
|
||||
12
src/stub/tmp/mipsel.r3000-linux.elf-fold.map
generated
vendored
12
src/stub/tmp/mipsel.r3000-linux.elf-fold.map
generated
vendored
@ -8,18 +8,18 @@ Linker script and memory map
|
||||
|
||||
TARGET(elf32-littlemips)
|
||||
|
||||
.text 0x0000000000000000 0xdbc
|
||||
.text 0x0000000000000000 0x1b90
|
||||
*(.text)
|
||||
.text 0x0000000000000000 0xdbc tmp/mipsel.r3000-linux.elf-fold.o
|
||||
.text 0x0000000000000000 0x1b90 tmp/mipsel.r3000-linux.elf-fold.o
|
||||
0x00000000000000d0 get_page_mask
|
||||
0x0000000000000c9c upx_mmap_and_fd
|
||||
0x0000000000001a70 upx_mmap_and_fd
|
||||
0x00000000000000f0 get_upxfn_path
|
||||
0x0000000000000c30 underlay
|
||||
0x0000000000000a98 upx_main
|
||||
0x00000000000019c0 underlay
|
||||
0x00000000000016e4 upx_main
|
||||
0x0000000000000010 get4unal
|
||||
0x0000000000000128 close
|
||||
*(.data)
|
||||
.data 0x0000000000000dbc 0x0 tmp/mipsel.r3000-linux.elf-fold.o
|
||||
.data 0x0000000000001b90 0x0 tmp/mipsel.r3000-linux.elf-fold.o
|
||||
|
||||
SYSCALLS 0x0000000000000000 0x178
|
||||
SYSCALLS 0x0000000000000000 0x178 tmp/mipsel.r3000-linux.elf-fold.o
|
||||
|
||||
16
src/stub/tmp/powerpc-linux.elf-fold.map
generated
vendored
16
src/stub/tmp/powerpc-linux.elf-fold.map
generated
vendored
@ -8,7 +8,7 @@ Linker script and memory map
|
||||
|
||||
TARGET(elf32-powerpc)
|
||||
|
||||
.text 0x0000000000000000 0x1350
|
||||
.text 0x0000000000000000 0x2330
|
||||
*(.text)
|
||||
.text 0x0000000000000000 0x294 tmp/powerpc-linux.elf-fold.o
|
||||
0x0000000000000048 Pmap
|
||||
@ -18,14 +18,14 @@ TARGET(elf32-powerpc)
|
||||
.text 0x0000000000000294 0x130 tmp/powerpc-linux.elf-upxfd_android.o
|
||||
0x0000000000000294 upx_mmap_and_fd
|
||||
.text 0x00000000000003c4 0x0 tmp/powerpc-expand.o
|
||||
.text 0x00000000000003c4 0xf8c tmp/powerpc-linux.elf-main2.o
|
||||
0x00000000000008bc underlay
|
||||
0x000000000000113c upx_main
|
||||
.text 0x00000000000003c4 0x1f6c tmp/powerpc-linux.elf-main2.o
|
||||
0x0000000000000bac underlay
|
||||
0x00000000000018ec upx_main
|
||||
*(.data)
|
||||
.data 0x0000000000001350 0x0 tmp/powerpc-linux.elf-fold.o
|
||||
.data 0x0000000000001350 0x0 tmp/powerpc-linux.elf-upxfd_android.o
|
||||
.data 0x0000000000001350 0x0 tmp/powerpc-expand.o
|
||||
.data 0x0000000000001350 0x0 tmp/powerpc-linux.elf-main2.o
|
||||
.data 0x0000000000002330 0x0 tmp/powerpc-linux.elf-fold.o
|
||||
.data 0x0000000000002330 0x0 tmp/powerpc-linux.elf-upxfd_android.o
|
||||
.data 0x0000000000002330 0x0 tmp/powerpc-expand.o
|
||||
.data 0x0000000000002330 0x0 tmp/powerpc-linux.elf-main2.o
|
||||
|
||||
.data
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user