New option --catch-sigsegv on amd64, arm64, arm.v4a
Catch SIGSEGV during de-compression, and print state info
("auto debug") using /proc/self/maps and gdb.
This was motivated by suspicion of unreliable hardware
which triggered "Heisenbugs": a crash which cannot be reproduced.
If SIGSGV occurs without the "auto debug" info, then that
implies an error user code after de-compression, often when
user code accesses /proc/self/exe, which is not the un-compressed file.
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
modified: src/help.cpp
modified: src/main.cpp
modified: src/options.h
modified: src/p_lx_elf.cpp
modified: src/stub/Makefile
modified: src/stub/src/amd64-linux.elf-entry.S
modified: src/stub/src/amd64-linux.elf-fold.S
modified: src/stub/src/arm.v4a-linux.elf-entry.S
modified: src/stub/src/arm.v4a-linux.elf-fold.S
modified: src/stub/src/arm64-linux.elf-entry.S
modified: src/stub/src/arm64-linux.elf-fold.S
plus generated .h .dump .map
This commit is contained in:
@@ -342,6 +342,7 @@ void show_help(int verbose) {
|
||||
fg = con_fg(f, fg);
|
||||
con_fprintf(f,
|
||||
" --preserve-build-id copy .gnu.note.build-id to compressed output\n"
|
||||
" --catch-sigsegv debug errors in hardware or de-compressor\n"
|
||||
"\n");
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
@@ -742,6 +742,9 @@ static int do_option(int optc, const char *arg) {
|
||||
case 678:
|
||||
opt->o_unix.android_old = true;
|
||||
break;
|
||||
case 679:
|
||||
opt->o_unix.catch_sigsegv = true;
|
||||
break;
|
||||
// ps1/exe
|
||||
case 670:
|
||||
opt->ps1_exe.boot_only = true;
|
||||
@@ -957,6 +960,7 @@ int main_get_options(int argc, char **argv) {
|
||||
{"android-shlib", 0, N, 676},
|
||||
{"force-pie", 0x90, N, 677},
|
||||
{"android-old", 0, N, 678},
|
||||
{"catch-sigsegv", 0, N, 679},
|
||||
// ps1/exe
|
||||
{"boot-only", 0x90, N, 670},
|
||||
{"no-align", 0x90, N, 671},
|
||||
|
||||
@@ -162,6 +162,7 @@ struct Options final {
|
||||
bool android_shlib; // keep some ElfXX_Shdr for dlopen()
|
||||
bool android_old; // < Android_10 ==> no memfd_create, inconsistent __NR_ftruncate
|
||||
bool force_pie; // choose DF_1_PIE instead of is_shlib
|
||||
bool catch_sigsegv; // to debug hardware or de-compressor
|
||||
} o_unix;
|
||||
struct {
|
||||
bool boot_only;
|
||||
|
||||
+13
-2
@@ -1681,7 +1681,11 @@ PackLinuxElf32::buildLinuxLoader(
|
||||
|| this->e_machine==Elf32_Ehdr::EM_MIPS
|
||||
) { // main program with ELF2 de-compressor
|
||||
addLoader("ELFMAINX");
|
||||
|
||||
if (this->e_machine==Elf32_Ehdr::EM_ARM) { // hardware is more problematic
|
||||
if (opt->o_unix.catch_sigsegv && hasLoaderSection("ELFSIGSEGV"))
|
||||
addLoader("ELFSIGSEGV");
|
||||
addLoader("ELFMAINX2");
|
||||
}
|
||||
// Only if $ARCH-linux.elf-entry.S calls upx_mmap_and_fd instead of memfd_create
|
||||
if (this->e_machine != Elf32_Ehdr::EM_PPC
|
||||
&& this->e_machine != Elf32_Ehdr::EM_MIPS)
|
||||
@@ -1871,7 +1875,14 @@ PackLinuxElf64::buildLinuxLoader(
|
||||
|| this->e_machine==Elf64_Ehdr::EM_AARCH64
|
||||
|| this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||
) { // main program with ELF2 de-compressor
|
||||
addLoader("ELFMAINX,ELFMAINZ,FOLDEXEC,IDENTSTR");
|
||||
addLoader("ELFMAINX");
|
||||
// NYI for PPC64 {
|
||||
if (opt->o_unix.catch_sigsegv && hasLoaderSection("ELFSIGSEGV"))
|
||||
addLoader("ELFSIGSEGV");
|
||||
if (this->e_machine!=Elf64_Ehdr::EM_PPC64)
|
||||
addLoader("ELFMAINX2");
|
||||
// } end NYI for PPC64
|
||||
addLoader("ELFMAINZ,FOLDEXEC,IDENTSTR");
|
||||
if (this->e_machine==Elf64_Ehdr::EM_PPC64
|
||||
&& ehdri.e_ident[Elf64_Ehdr::EI_DATA]==Elf64_Ehdr::ELFDATA2MSB) {
|
||||
addLoader("ELFMAINZe");
|
||||
|
||||
@@ -423,8 +423,6 @@ tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -fPIC -m64 -nostdinc -MMD -MT $@
|
||||
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||
|
||||
#amd64-linux.elf-entry.h amd64-linux.elf-fold.h: tc.amd64-linux.elf.gcc += -DTEST_SIGSEGV
|
||||
|
||||
amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S
|
||||
@echo; echo TARGET=$@ PATH=$(PATH); echo
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
@@ -552,7 +550,6 @@ amd64-win64.pe.h : tc_objdump_disasm_options = -M intel-mnemonic
|
||||
|
||||
tc.amd64-win64.pe.gcc = amd64-linux-gcc-4.1.1 -m64 -nostdinc -DWINDOWS_BACK=1 -MMD -MT $@
|
||||
tc.amd64-win64.pe.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||
tc.amd64-win64.pe.gcc += -mno-red-zone
|
||||
tc.amd64-win64.pe.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||
tc.amd64-win64.pe.objdump = multiarch-objdump-2.23.90
|
||||
|
||||
@@ -836,8 +833,6 @@ tc.arm64-linux.elf.gcc = arm64-linux-gcc-4.9.2 -nostdinc -DDAISY_CHAIN=1 -MMD -
|
||||
tc.arm64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
||||
tc.arm64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
|
||||
|
||||
#arm64-linux.elf-entry.h arm64-linux.elf-fold.h: tc.arm64-linux.elf.gcc += -DTEST_SIGSEGV
|
||||
|
||||
tc.arm64-expand.gcc = $(tc.arm64-linux.elf.gcc)
|
||||
tc.arm64-linux.elf-upxfd_linux.gcc = $(tc.arm64-linux.elf.gcc)
|
||||
|
||||
|
||||
Generated
+182
-74
@@ -1,5 +1,5 @@
|
||||
/* amd64-linux.elf-entry.h
|
||||
created from amd64-linux.elf-entry.bin, 1141 (0x475) bytes
|
||||
created from amd64-linux.elf-entry.bin, 2869 (0xb35) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -32,81 +32,189 @@
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 1141
|
||||
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xd3b74a90
|
||||
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x52b418e2
|
||||
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 2869
|
||||
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xf865154a
|
||||
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xe81955ed
|
||||
|
||||
unsigned char stub_amd64_linux_elf_entry[1141] = {
|
||||
unsigned char stub_amd64_linux_elf_entry[2869] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
||||
/* 0x0040 */ 243, 15, 30,250, 89, 84, 95, 81, 82, 49,192, 72,175,117,252, 72,
|
||||
/* 0x0050 */ 175,117,252, 87,186, 0, 16, 0, 0, 94, 72,173,133,192,116, 8,
|
||||
/* 0x0060 */ 131,248, 6, 72,173,117,243,146, 88, 72,247,218, 82, 80,104,117,
|
||||
/* 0x0070 */ 112, 88, 0, 84, 95,106, 16, 94,184, 63, 1, 0, 0, 15, 5,133,
|
||||
/* 0x0080 */ 192,121, 29,133,246,116, 4, 49,246,235,237, 72,141, 53, 28, 1,
|
||||
/* 0x0090 */ 0, 0,173,146,173, 86,150, 95,106, 2, 88,232, 0, 1, 0, 0,
|
||||
/* 0x00a0 */ 73,137,196, 89, 72,141, 61,145,255,255,255,139, 15, 72, 41,207,
|
||||
/* 0x00b0 */ 72,141, 53, 0, 0, 0, 0,173,147, 65,137,221,173,146,131,194,
|
||||
/* 0x00c0 */ 16, 82,106,255, 87, 72, 41,217, 81, 72, 1,251, 83, 84, 93, 72,
|
||||
/* 0x00d0 */ 41,212, 72,131,228,192, 84, 95,173, 80,173,102,131,248, 2,116,
|
||||
/* 0x00e0 */ 1,244, 88, 72, 1,240, 80, 85, 49,219, 49,201, 72,141, 21,204,
|
||||
/* 0x00f0 */ 0, 0, 0,106,255, 93,252,168,164,255,210,114,251,141, 65, 1,
|
||||
/* 0x0100 */ 255,210, 17,192,255,210,115,248,131,232, 3,114, 12,193,224, 8,
|
||||
/* 0x0110 */ 172,131,240,255,116, 47, 72, 99,232,141, 65, 1,255,210, 17,201,
|
||||
/* 0x0120 */ 255,210, 17,201,117, 13,137,193,131,192, 2,255,210, 17,201,255,
|
||||
/* 0x0130 */ 210,115,248,129,253, 0,243,255,255, 17,193, 86, 72,141, 52, 47,
|
||||
/* 0x0140 */ 243,164, 94,235,180, 93, 89, 72, 57,206,116, 1,244, 72,139, 69,
|
||||
/* 0x0150 */ 48, 72,137, 4, 36, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,
|
||||
/* 0x0160 */ 137,231, 82,106, 1, 88,232, 53, 0, 0, 0, 72, 1,198, 41,194,
|
||||
/* 0x0170 */ 117,241, 94, 85, 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106,
|
||||
/* 0x0180 */ 5, 90, 41,255,106, 9, 88,232, 20, 0, 0, 0, 80, 72,137, 69,
|
||||
/* 0x0190 */ 24, 65, 80, 95,106, 3, 88, 15, 5, 88, 72,131,192, 8,255,224,
|
||||
/* 0x01a0 */ 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192, 1,
|
||||
/* 0x01b0 */ 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,243,
|
||||
/* 0x01c0 */ 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,238,252, 17,
|
||||
/* 0x01d0 */ 219,243,195, 0, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||
/* 0x01e0 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
||||
/* 0x01f0 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
||||
/* 0x0200 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
||||
/* 0x0210 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
||||
/* 0x0220 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
||||
/* 0x0230 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
||||
/* 0x0240 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
||||
/* 0x0250 */ 115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32,
|
||||
/* 0x0260 */ 32, 32, 32, 32, 48, 49, 57, 51, 32, 32, 48, 32, 32, 48, 32, 32,
|
||||
/* 0x0270 */ 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
|
||||
/* 0x0280 */ 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90,
|
||||
/* 0x0290 */ 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, 32, 48, 32, 32,
|
||||
/* 0x02a0 */ 48, 49,100, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84,
|
||||
/* 0x02b0 */ 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76,
|
||||
/* 0x02c0 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x02d0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
||||
/* 0x02e0 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
||||
/* 0x02f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0300 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0310 */ 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48,
|
||||
/* 0x0320 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
||||
/* 0x0330 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48,
|
||||
/* 0x0340 */ 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0350 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0360 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79,
|
||||
/* 0x0370 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||
/* 0x0380 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0390 */ 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
||||
/* 0x03a0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x03b0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
||||
/* 0x03c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 51, 32, 82,
|
||||
/* 0x03d0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||
/* 0x03e0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,
|
||||
/* 0x03f0 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69,
|
||||
/* 0x0400 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||
/* 0x0410 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
||||
/* 0x0420 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0430 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0440 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 88, 56, 54,
|
||||
/* 0x0460 */ 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
||||
/* 0x0470 */ 73, 78, 70, 79, 10
|
||||
/* 0x0040 */ 243, 15, 30,250, 89, 84, 95, 81, 82, 76,141, 61, 0, 0, 0, 0,
|
||||
/* 0x0050 */ 87, 41,210, 82, 72,141, 5, 45, 0, 0, 0, 80,104, 4, 0, 0,
|
||||
/* 0x0060 */ 4, 72,141, 5, 43, 0, 0, 0, 80, 76,141, 61,219, 2, 0, 0,
|
||||
/* 0x0070 */ 84, 94,106, 11, 95,106, 8, 65, 90,106, 13, 88, 15, 5, 72,131,
|
||||
/* 0x0080 */ 196, 32, 95,233,216, 2, 0, 0,243, 15, 30,250,184, 15, 0, 0,
|
||||
/* 0x0090 */ 0, 15, 5,243, 15, 30,250, 82,186, 26, 0, 0, 0, 72,141, 53,
|
||||
/* 0x00a0 */ 111, 0, 0, 0,106, 2, 95,106, 1, 88, 15, 5, 49,246, 72,141,
|
||||
/* 0x00b0 */ 61,120, 0, 0, 0,106, 2, 88, 15, 5, 73,137,196,187, 0, 16,
|
||||
/* 0x00c0 */ 0, 0, 72, 41,220,137,218, 84, 94, 76,137,231, 49,192, 15, 5,
|
||||
/* 0x00d0 */ 133,192,126, 14,137,194, 84, 94,106, 2, 95,106, 1, 88, 15, 5,
|
||||
/* 0x00e0 */ 235,227, 76,137,231, 72, 1,220,106, 3, 88, 15, 5, 90,106, 57,
|
||||
/* 0x00f0 */ 88,232, 0, 0, 0, 0,133,192, 15,132,141, 1, 0, 0,235,254,
|
||||
/* 0x0100 */ 47,112,114,111, 99, 47,115,101,108,102, 47, 99,109,100,108,105,
|
||||
/* 0x0110 */ 110,101, 0, 10, 10, 83, 73, 71, 83, 69, 71, 86, 32, 97,100,100,
|
||||
/* 0x0120 */ 114,101,115,115, 32,115,112, 97, 99,101, 58, 10, 0, 47,112,114,
|
||||
/* 0x0130 */ 111, 99, 47,115,101,108,102, 47,109, 97,112,115, 0, 45,113, 0,
|
||||
/* 0x0140 */ 47,117,115,114, 47, 98,105,110, 47,103,100, 98, 0,115,101,116,
|
||||
/* 0x0150 */ 32,112,114,111,109,112,116, 10,105,110,102,111, 32,105,110,102,
|
||||
/* 0x0160 */ 101,114,105,111,114,115, 10,112,114,105,110,116, 32, 34,114, 56,
|
||||
/* 0x0170 */ 32, 45, 32,114, 49, 53, 34, 10,120, 47, 56,120,103, 32, 36,114,
|
||||
/* 0x0180 */ 100,120, 32, 43, 32, 53, 42, 56, 10,112,114,105,110,116, 32, 34,
|
||||
/* 0x0190 */ 114,100,105, 44, 32,114,115,105, 44, 32,114, 98,112, 44, 32,114,
|
||||
/* 0x01a0 */ 98,120, 34, 10,120, 47, 52,120,103, 10,112,114,105,110,116, 32,
|
||||
/* 0x01b0 */ 34,114,100,120, 44, 32,114, 97,120, 44, 32,114, 99,120, 44, 32,
|
||||
/* 0x01c0 */ 114,115,112, 34, 10,120, 47, 52,120,103, 10,112,114,105,110,116,
|
||||
/* 0x01d0 */ 32, 34,114,105,112, 44, 32,101,102,108, 34, 10,120, 47, 50,120,
|
||||
/* 0x01e0 */ 103, 10,115,101,116, 32, 36,112, 99, 32, 61, 32, 42, 40,108,111,
|
||||
/* 0x01f0 */ 110,103, 32, 42, 41, 40, 36,114,100,120, 32, 43, 32, 49, 54, 56,
|
||||
/* 0x0200 */ 41, 10,112,114,105,110,116, 32, 34,102, 97,117,108,116,105,110,
|
||||
/* 0x0210 */ 103, 32,105,110,115,116,114, 34, 10,120, 47,105, 32, 36,112, 99,
|
||||
/* 0x0220 */ 10,112,114,105,110,116, 32, 34,102, 97,117,108,116, 32, 99,111,
|
||||
/* 0x0230 */ 110,116,101,120,116, 34, 10,120, 47, 49, 54,105, 32, 36,112, 99,
|
||||
/* 0x0240 */ 32, 45, 32, 48,120, 50, 48, 10,112,114,105,110,116, 32, 34,117,
|
||||
/* 0x0250 */ 115,101,114, 32,115,116, 97, 99,107, 34, 10,120, 47, 54, 52,120,
|
||||
/* 0x0260 */ 103, 32, 42, 40,108,111,110,103, 32, 42, 41, 40, 36,114,100,120,
|
||||
/* 0x0270 */ 32, 43, 32, 53, 42, 56, 32, 43, 32, 49, 53, 42, 56, 41, 10,107,
|
||||
/* 0x0280 */ 105,108,108, 10,113,117,105,116, 32, 49, 0, 72,129,236, 0, 16,
|
||||
/* 0x0290 */ 0, 0, 72,141, 61,103,254,255,255,106, 0, 94,106, 2, 88,232,
|
||||
/* 0x02a0 */ 0, 0, 0, 0, 80, 95, 84, 94,104, 0, 16, 0, 0, 90,106, 0,
|
||||
/* 0x02b0 */ 88,232, 0, 0, 0, 0,106, 3, 88,232, 0, 0, 0, 0,106,110,
|
||||
/* 0x02c0 */ 88, 15, 5, 80, 94, 49,192, 80, 80, 84, 95,232, 89, 0, 0, 0,
|
||||
/* 0x02d0 */ 84, 94,106, 0, 86, 72,131,198, 16, 86, 72,141, 5, 92,254,255,
|
||||
/* 0x02e0 */ 255, 80, 72,131,192, 3, 80, 49,255,106, 3, 88, 15, 5, 80, 84,
|
||||
/* 0x02f0 */ 95,106, 22, 88,232, 0, 0, 0, 0, 95, 72,193,239, 32,104, 62,
|
||||
/* 0x0300 */ 1, 0, 0, 90, 72,141, 53, 66,254,255,255,106, 1, 88,232, 0,
|
||||
/* 0x0310 */ 0, 0, 0,106, 3, 88, 15, 5,106, 0, 90, 84, 94, 72,139, 62,
|
||||
/* 0x0320 */ 106, 59, 88,232, 0, 0, 0, 0,244,106, 10, 89,137,240,232, 4,
|
||||
/* 0x0330 */ 0, 0, 0,198, 7, 0,195, 49,210,247,241, 82,133,192,116, 5,
|
||||
/* 0x0340 */ 232,242,255,255,255, 88,131,192, 48,170,195,243, 15, 30,250,106,
|
||||
/* 0x0350 */ 8, 65, 90, 49,210, 49,246,106, 11, 95,106, 13, 88, 15, 5,195,
|
||||
/* 0x0360 */ 49,192, 72,175,117,252, 72,175,117,252, 87,186, 0, 16, 0, 0,
|
||||
/* 0x0370 */ 94, 72,173,133,192,116, 8,131,248, 6, 72,173,117,243,146, 88,
|
||||
/* 0x0380 */ 72,247,218, 82, 80,104,117,112, 88, 0, 84, 95,106, 16, 94,184,
|
||||
/* 0x0390 */ 63, 1, 0, 0, 15, 5,133,192,121, 29,133,246,116, 4, 49,246,
|
||||
/* 0x03a0 */ 235,237, 72,141, 53, 38, 1, 0, 0,173,146,173, 86,150, 95,106,
|
||||
/* 0x03b0 */ 2, 88,232, 10, 1, 0, 0, 73,137,196, 89, 72,141, 61, 0, 0,
|
||||
/* 0x03c0 */ 0, 0,139, 15, 72, 41,207, 72,141, 53, 0, 0, 0, 0,173,147,
|
||||
/* 0x03d0 */ 65,137,221,173,146,131,194, 16, 82,106,255, 87, 72, 41,217, 81,
|
||||
/* 0x03e0 */ 72, 1,251, 83, 84, 93, 72, 41,212, 72,131,228,192, 84, 95,173,
|
||||
/* 0x03f0 */ 80,173,102,131,248, 2,116, 1,244, 88, 72, 1,240, 80, 85, 49,
|
||||
/* 0x0400 */ 219, 49,201, 72,141, 21,214, 0, 0, 0,106,255, 93,252,168,164,
|
||||
/* 0x0410 */ 255,210,114,251,141, 65, 1,255,210, 17,192,255,210,115,248,131,
|
||||
/* 0x0420 */ 232, 3,114, 12,193,224, 8,172,131,240,255,116, 47, 72, 99,232,
|
||||
/* 0x0430 */ 141, 65, 1,255,210, 17,201,255,210, 17,201,117, 13,137,193,131,
|
||||
/* 0x0440 */ 192, 2,255,210, 17,201,255,210,115,248,129,253, 0,243,255,255,
|
||||
/* 0x0450 */ 17,193, 86, 72,141, 52, 47,243,164, 94,235,180, 93, 89, 72, 57,
|
||||
/* 0x0460 */ 206,116, 1,244, 72,139, 69, 48, 72,137, 4, 36, 76,137,124, 36,
|
||||
/* 0x0470 */ 8, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,137,231, 82,106,
|
||||
/* 0x0480 */ 1, 88,232, 58, 0, 0, 0, 72, 1,198, 41,194,117,241, 94, 85,
|
||||
/* 0x0490 */ 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106, 5, 90, 41,255,
|
||||
/* 0x04a0 */ 106, 9, 88,232, 25, 0, 0, 0, 80, 72,137, 69, 24, 65, 80, 95,
|
||||
/* 0x04b0 */ 106, 3, 88, 15, 5, 88, 72,131,192, 16,255,224,243, 15, 30,250,
|
||||
/* 0x04c0 */ 195, 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192,
|
||||
/* 0x04d0 */ 1, 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,
|
||||
/* 0x04e0 */ 243, 15, 30,250, 1,219,116, 2,243,195,139, 30, 72,131,238,252,
|
||||
/* 0x04f0 */ 17,219,243,195, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||
/* 0x0500 */ 109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52,
|
||||
/* 0x0510 */ 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32,
|
||||
/* 0x0520 */ 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,
|
||||
/* 0x0530 */ 122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32,
|
||||
/* 0x0540 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32,
|
||||
/* 0x0550 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101,
|
||||
/* 0x0560 */ 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,
|
||||
/* 0x0570 */ 115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32,
|
||||
/* 0x0580 */ 32, 32, 32, 32, 48, 49, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
||||
/* 0x0590 */ 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
|
||||
/* 0x05a0 */ 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 83, 73, 71, 83, 69, 71,
|
||||
/* 0x05b0 */ 86, 32, 32, 32, 32, 48, 51, 49, 48, 32, 32, 48, 32, 32, 48, 32,
|
||||
/* 0x05c0 */ 32, 48, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
|
||||
/* 0x05d0 */ 69, 78, 84, 83, 10, 32, 32, 50, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x05e0 */ 88, 50, 32, 32, 32, 32, 32, 48, 49, 57, 52, 32, 32, 48, 32, 32,
|
||||
/* 0x05f0 */ 48, 32, 32, 48, 51, 54, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67,
|
||||
/* 0x0600 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 69, 76, 70, 77,
|
||||
/* 0x0610 */ 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32,
|
||||
/* 0x0620 */ 32, 48, 32, 32, 48, 52,102, 52, 32, 32, 50, 42, 42, 50, 32, 32,
|
||||
/* 0x0630 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
|
||||
/* 0x0640 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0650 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||
/* 0x0660 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65,
|
||||
/* 0x0670 */ 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0680 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
|
||||
/* 0x0690 */ 77, 65, 73, 78, 88, 50, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x06a0 */ 88, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x06b0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
|
||||
/* 0x06c0 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
||||
/* 0x06d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x06e0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 83, 73, 71, 83,
|
||||
/* 0x06f0 */ 69, 71, 86, 32, 48, 32, 69, 76, 70, 83, 73, 71, 83, 69, 71, 86,
|
||||
/* 0x0700 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0710 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0720 */ 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48,
|
||||
/* 0x0730 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32,
|
||||
/* 0x0740 */ 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66,
|
||||
/* 0x0750 */ 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||
/* 0x0760 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76,
|
||||
/* 0x0770 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
|
||||
/* 0x0780 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
|
||||
/* 0x0790 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
|
||||
/* 0x07a0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x07b0 */ 48, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50,
|
||||
/* 0x07c0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,
|
||||
/* 0x07d0 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,
|
||||
/* 0x07e0 */ 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
|
||||
/* 0x07f0 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 83, 73,
|
||||
/* 0x0800 */ 71, 83, 69, 71, 86, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
|
||||
/* 0x0810 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
|
||||
/* 0x0820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
|
||||
/* 0x0830 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,
|
||||
/* 0x0840 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0850 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x0860 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x0870 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 53,
|
||||
/* 0x0880 */ 48, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0890 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x08b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 54,
|
||||
/* 0x08c0 */ 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x08d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x08e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x08f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 54,
|
||||
/* 0x0900 */ 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0910 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x0920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x0930 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 97,
|
||||
/* 0x0940 */ 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0950 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x0960 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x0970 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 98,
|
||||
/* 0x0980 */ 102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x0990 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x09a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x09b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50,100,
|
||||
/* 0x09c0 */ 52, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
|
||||
/* 0x09d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120,
|
||||
/* 0x09e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 53,100,
|
||||
/* 0x09f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||
/* 0x0a00 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0a10 */ 78, 88, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
|
||||
/* 0x0a20 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
|
||||
/* 0x0a30 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
|
||||
/* 0x0a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53,101, 32,
|
||||
/* 0x0a50 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32,
|
||||
/* 0x0a60 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 43, 48,120,102,102,102,
|
||||
/* 0x0a70 */ 102,102,102,102,102,102,102,102,102,102,102,102, 56, 10, 48, 48,
|
||||
/* 0x0a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 97, 32, 82,
|
||||
/* 0x0a90 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
|
||||
/* 0x0aa0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,
|
||||
/* 0x0ab0 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69,
|
||||
/* 0x0ac0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||
/* 0x0ad0 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58,
|
||||
/* 0x0ae0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0af0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0b00 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0b10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 88, 56, 54,
|
||||
/* 0x0b20 */ 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66,
|
||||
/* 0x0b30 */ 73, 78, 70, 79, 10
|
||||
};
|
||||
|
||||
Generated
+1314
-1313
File diff suppressed because it is too large
Load Diff
Generated
+861
-834
File diff suppressed because it is too large
Load Diff
Generated
+866
-838
File diff suppressed because it is too large
Load Diff
Generated
+188
-106
@@ -1,5 +1,5 @@
|
||||
/* arm64-linux.elf-entry.h
|
||||
created from arm64-linux.elf-entry.bin, 1656 (0x678) bytes
|
||||
created from arm64-linux.elf-entry.bin, 2971 (0xb9b) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -32,113 +32,195 @@
|
||||
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 1656
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xebefbc2c
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x6e19662b
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 2971
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x0d9b4202
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x7209b84d
|
||||
|
||||
unsigned char stub_arm64_linux_elf_entry[1656] = {
|
||||
unsigned char stub_arm64_linux_elf_entry[2971] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
||||
/* 0x0040 */ 0, 0, 0, 0,224, 7,191,169,211,255,255, 24,224, 99, 0,145,
|
||||
/* 0x0050 */ 76, 0, 0,148, 75, 0, 0,148,246, 3, 0,170,255,131, 0,209,
|
||||
/* 0x0060 */ 1, 8,193,168, 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53,
|
||||
/* 0x0070 */ 34, 0,160,210,250, 3, 2,203,250, 3, 0,249, 0, 0, 0,148,
|
||||
/* 0x0080 */ 244, 3, 30,170, 1, 2,128, 82, 0, 0, 0, 16,232, 34,128, 82,
|
||||
/* 0x0090 */ 1, 0, 0,212, 0, 2,248, 54, 97, 0, 0, 52,225, 3, 31, 42,
|
||||
/* 0x00a0 */ 250,255,255, 23, 6, 0, 0,148,192, 1, 0, 0, 2, 64, 64, 0,
|
||||
/* 0x00b0 */ 47,100,101,118, 47,115,104,109, 0, 0, 0, 0,195, 71, 64,184,
|
||||
/* 0x00c0 */ 194, 71, 64,184,225, 3, 30,170, 96, 12,128, 18, 8, 7,128, 82,
|
||||
/* 0x00d0 */ 1, 0, 0,212,251, 3, 0, 42,128, 6, 64,185,253, 3, 0,145,
|
||||
/* 0x00e0 */ 160, 3, 0,203, 0,236,124,146, 31, 0, 0,145,226, 3, 0,170,
|
||||
/* 0x00f0 */ 225, 15, 31,248,227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,
|
||||
/* 0x0100 */ 132, 50, 64, 57, 34, 0, 0,148,232, 7, 65,248,250, 3, 0,249,
|
||||
/* 0x0110 */ 130, 6, 64,185,225, 3, 0,145,224, 3, 27, 42, 8, 8,128, 82,
|
||||
/* 0x0120 */ 1, 0, 0,212,191, 3, 0,145, 5, 0,128,210,228, 3, 27, 42,
|
||||
/* 0x0130 */ 35, 0,128, 82,162, 0,128, 82,129, 6, 64,185,225, 15, 0,249,
|
||||
/* 0x0140 */ 0, 0,128,210,200, 27,128, 82, 1, 0, 0,212,224, 11, 0,249,
|
||||
/* 0x0150 */ 252, 3, 0,170,224, 3, 27, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||
/* 0x0160 */ 253, 11, 64,185,129, 2, 64,185,158, 83, 0,145,189, 3, 1, 75,
|
||||
/* 0x0170 */ 253, 7, 0,249, 33,120, 30, 18, 60, 3, 1,139,192, 3, 31,214,
|
||||
/* 0x0180 */ 1,132, 64,248,225,255,255,181,192, 3, 95,214, 1, 64, 33,139,
|
||||
/* 0x0190 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
|
||||
/* 0x01a0 */ 26, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
|
||||
/* 0x01b0 */ 66, 0, 3,203,130, 0, 0,185,229, 3, 0,170,224, 3, 3,170,
|
||||
/* 0x01c0 */ 97, 0, 2,139,224, 3, 5,170,192, 3, 95,214,132, 0, 4, 43,
|
||||
/* 0x01d0 */ 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,132, 0, 4, 58,
|
||||
/* 0x01e0 */ 192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,248,255,255,151,
|
||||
/* 0x01f0 */ 33, 0, 1, 58,246,255,255,151,163,255,255, 84, 0, 2, 31,214,
|
||||
/* 0x0200 */ 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,162,255,255, 84,
|
||||
/* 0x0210 */ 245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,163, 0, 0, 84,
|
||||
/* 0x0220 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,197,251,255, 52,
|
||||
/* 0x0230 */ 231,255,255,151, 33, 0, 1, 58,229,255,255,151, 33, 0, 1, 58,
|
||||
/* 0x0240 */ 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,191, 0, 52, 49,
|
||||
/* 0x0250 */ 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113, 67, 20, 0, 56,
|
||||
/* 0x0260 */ 162,255,255, 84,233,255,255, 23,117,112,120, 0,217, 19, 1,209,
|
||||
/* 0x0270 */ 32, 3, 64,185, 57, 67, 32,203,224, 7, 0,249,192, 3, 63,214,
|
||||
/* 0x0280 */ 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,
|
||||
/* 0x0290 */ 101,108,102, 54, 52, 45,108,105,116,116,108,101, 97, 97,114, 99,
|
||||
/* 0x02a0 */ 104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,
|
||||
/* 0x02b0 */ 100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x02c0 */ 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32,
|
||||
/* 0x02d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65,
|
||||
/* 0x02e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,
|
||||
/* 0x02f0 */ 105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,
|
||||
/* 0x0300 */ 108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0310 */ 88, 32, 32, 32, 32, 32, 32, 48, 50, 50, 56, 32, 32, 48, 32, 32,
|
||||
/* 0x0320 */ 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79,
|
||||
/* 0x0330 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65,
|
||||
/* 0x0340 */ 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48,
|
||||
/* 0x0350 */ 32, 32, 48, 50, 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
|
||||
/* 0x0360 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 69, 76, 70, 77, 65,
|
||||
/* 0x0370 */ 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 49, 99, 32, 32, 48, 32,
|
||||
/* 0x0380 */ 32, 48, 32, 32, 48, 50, 54, 56, 32, 32, 50, 42, 42, 50, 32, 32,
|
||||
/* 0x0390 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
|
||||
/* 0x03a0 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x03b0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||
/* 0x03c0 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65,
|
||||
/* 0x03d0 */ 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x03e0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
|
||||
/* 0x03f0 */ 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x0400 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0410 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0420 */ 78, 89, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48,
|
||||
/* 0x0430 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
||||
/* 0x0440 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 77,
|
||||
/* 0x0450 */ 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0460 */ 48, 48, 48, 52, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
|
||||
/* 0x0470 */ 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48,
|
||||
/* 0x0480 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52, 99, 32,
|
||||
/* 0x0490 */ 103, 32, 32, 32, 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88,
|
||||
/* 0x04a0 */ 32, 48,100, 99, 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,
|
||||
/* 0x04b0 */ 101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48,
|
||||
/* 0x04c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
|
||||
/* 0x04d0 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48,
|
||||
/* 0x04e0 */ 32,101,110,100, 95,100,101, 99,111,109,112,114,101,115,115, 10,
|
||||
/* 0x04f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0500 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48,
|
||||
/* 0x0510 */ 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65,
|
||||
/* 0x0520 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
|
||||
/* 0x0530 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70,
|
||||
/* 0x0540 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
|
||||
/* 0x0550 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0560 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0570 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
|
||||
/* 0x0580 */ 95, 65, 66, 83, 51, 50, 32, 32, 32, 77, 70, 76, 71, 10, 48, 48,
|
||||
/* 0x0590 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 99, 32, 82,
|
||||
/* 0x05a0 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32,
|
||||
/* 0x05b0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48,
|
||||
/* 0x05c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10, 48, 48, 48,
|
||||
/* 0x05d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 56, 32, 82, 95,
|
||||
/* 0x05e0 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76,
|
||||
/* 0x05f0 */ 95, 76, 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
|
||||
/* 0x0600 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
|
||||
/* 0x0610 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
|
||||
/* 0x0620 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0630 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0640 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
|
||||
/* 0x0650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95,
|
||||
/* 0x0660 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32, 32,
|
||||
/* 0x0670 */ 79, 95, 66, 73, 78, 70, 79, 10
|
||||
/* 0x0040 */ 0, 0, 0, 0,224, 7,191,169,211,255,255, 24, 18, 0, 0, 16,
|
||||
/* 0x0050 */ 32, 20, 0, 16,129, 0,128,210,224, 7,188,169,255, 15, 0,249,
|
||||
/* 0x0060 */ 255, 19, 0,249, 3, 1,128,210,226, 3, 31,170,225, 3, 0,145,
|
||||
/* 0x0070 */ 96, 1,128, 82,200, 16,128, 82, 1, 0, 0,212,255, 3, 1,145,
|
||||
/* 0x0080 */ 114, 25, 0, 16,209, 0, 0, 20, 47,112,114,111, 99, 47,115,101,
|
||||
/* 0x0090 */ 108,102, 47, 99,109,100,108,105,110,101, 0, 10, 10, 83, 73, 71,
|
||||
/* 0x00a0 */ 83, 69, 71, 86, 32, 97,100,100,114,101,115,115, 32,115,112, 97,
|
||||
/* 0x00b0 */ 99,101, 58, 10, 0, 47,112,114,111, 99, 47,115,101,108,102, 47,
|
||||
/* 0x00c0 */ 109, 97,112,115, 0, 45,113, 0, 47,117,115,114, 47, 98,105,110,
|
||||
/* 0x00d0 */ 47,103,100, 98, 0,115,101,116, 32,112,114,111,109,112,116, 10,
|
||||
/* 0x00e0 */ 105,110,102,111, 32,105,110,102,101,114,105,111,114,115, 10,112,
|
||||
/* 0x00f0 */ 114,105,110,116, 32, 34,120, 48, 45,120, 55, 34, 10,120, 47, 56,
|
||||
/* 0x0100 */ 120,103, 32, 36,115,112, 32, 43, 32, 48,120, 49, 51, 56, 10,112,
|
||||
/* 0x0110 */ 114,105,110,116, 32, 34,120, 56, 45,120, 49, 53, 34, 10,120, 47,
|
||||
/* 0x0120 */ 56,120,103, 10,112,114,105,110,116, 32, 34,120, 49, 54, 45,120,
|
||||
/* 0x0130 */ 50, 51, 34, 10,120, 47, 56,120,103, 10,112,114,105,110,116, 32,
|
||||
/* 0x0140 */ 34,120, 50, 52, 45,120, 51, 48, 34, 10,120, 47, 55,120,103, 10,
|
||||
/* 0x0150 */ 115,101,116, 32, 36,112, 99, 32, 61, 32, 42, 40,108,111,110,103,
|
||||
/* 0x0160 */ 32, 42, 41, 40, 36,115,112, 32, 43, 32, 48,120, 50, 51, 56, 41,
|
||||
/* 0x0170 */ 10,112,114,105,110,116, 32, 34,102, 97,117,108,116,105,110,103,
|
||||
/* 0x0180 */ 32,105,110,115,116,114, 34, 10,120, 47,105, 32, 36,112, 99, 10,
|
||||
/* 0x0190 */ 112,114,105,110,116, 32, 34,102, 97,117,108,116, 32, 99,111,110,
|
||||
/* 0x01a0 */ 116,101,120,116, 34, 10,120, 47, 49, 53,105, 32, 36,112, 99, 32,
|
||||
/* 0x01b0 */ 45, 32, 55, 42, 52, 10,115,101,116, 32, 36,115,112, 32, 61, 32,
|
||||
/* 0x01c0 */ 42, 40,108,111,110,103, 32, 42, 41, 40, 36,115,112, 32, 43, 32,
|
||||
/* 0x01d0 */ 48,120, 50, 51, 48, 41, 10,112,114,105,110,116, 32, 34,117,115,
|
||||
/* 0x01e0 */ 101,114, 32,115,116, 97, 99,107, 34, 10,120, 47, 54, 52,120,103,
|
||||
/* 0x01f0 */ 32, 36,115,112, 10,107,105,108,108, 10,113,117,105,116, 32, 49,
|
||||
/* 0x0200 */ 0, 0, 0, 0, 0, 0,128, 82, 40, 7,128, 82, 1, 0, 0,212,
|
||||
/* 0x0210 */ 255,127,191,169, 1, 0,128, 82,224, 3, 0,145,104, 7,128, 82,
|
||||
/* 0x0220 */ 1, 0, 0,212,240, 19, 0,145, 19, 2, 64,185,255, 67, 0,145,
|
||||
/* 0x0230 */ 130, 37,128, 82, 1,245,255, 48,224, 3, 19, 42, 8, 8,128, 82,
|
||||
/* 0x0240 */ 1, 0, 0,212,224, 3, 19, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||
/* 0x0250 */ 255, 7, 64,209, 2, 0,128, 82,129,241,255, 16, 0, 0,128,146,
|
||||
/* 0x0260 */ 8, 7,128, 82, 1, 0, 0,212,243, 3, 0, 42,225, 3, 0,145,
|
||||
/* 0x0270 */ 2, 0,130, 82,232, 7,128, 82, 1, 0, 0,212,224, 3, 19, 42,
|
||||
/* 0x0280 */ 40, 7,128, 82, 1, 0, 0,212,168, 21,128, 82, 1, 0, 0,212,
|
||||
/* 0x0290 */ 255,127,191,169,225, 3, 0, 42,224, 3, 0,145, 49, 0, 0,148,
|
||||
/* 0x02a0 */ 227, 3, 0,145,226, 67, 0,145,225,240,255, 48,224,240,255, 16,
|
||||
/* 0x02b0 */ 224, 7,189,169,226, 15, 1,169,255, 19, 0,249, 2, 0,128,210,
|
||||
/* 0x02c0 */ 225, 3, 0,145,168, 27,128, 82, 1, 0, 0,212, 0, 0, 0, 20,
|
||||
/* 0x02d0 */ 31, 32, 3,213,225, 11, 63,169, 66, 3,128,210,225,237,255,112,
|
||||
/* 0x02e0 */ 64, 0,128, 82, 8, 8,128, 82, 1, 0, 0,212, 2, 0,128, 82,
|
||||
/* 0x02f0 */ 33,238,255, 48, 0, 0,128, 18, 8, 7,128, 82, 1, 0, 0,212,
|
||||
/* 0x0300 */ 243, 3, 0, 42,255, 7, 64,209, 2, 0,130,210,225, 3, 0,145,
|
||||
/* 0x0310 */ 224, 3, 19, 42,232, 7,128, 82, 1, 0, 0,212,224, 0, 0, 52,
|
||||
/* 0x0320 */ 226, 3, 0,170,225, 3, 0,145, 64, 0,128, 82, 8, 8,128, 82,
|
||||
/* 0x0330 */ 1, 0, 0,212,245,255,255, 23,255, 7, 64,145,224, 3, 16,170,
|
||||
/* 0x0340 */ 40, 7,128, 82, 1, 0, 0,212, 0, 0,128,210, 1, 0,128,210,
|
||||
/* 0x0350 */ 136, 27,128, 82, 1, 0, 0,212, 96,245,255,180, 0, 0, 0, 20,
|
||||
/* 0x0360 */ 254,127,191,169, 4, 0, 0,148,254, 7,193,168, 1, 0, 0, 57,
|
||||
/* 0x0370 */ 192, 3, 95,214,162,153,153, 82,130,153,185,114, 34,124,162,155,
|
||||
/* 0x0380 */ 67,252, 99,211, 98, 8, 3, 11, 33, 4, 2, 75,254, 7,191,169,
|
||||
/* 0x0390 */ 99, 0, 0,180,225, 3, 3, 42,247,255,255,151,254, 7,193,168,
|
||||
/* 0x03a0 */ 33,192, 0, 17, 1, 20, 0, 56,192, 3, 95,214, 3, 1,128,210,
|
||||
/* 0x03b0 */ 226, 3, 31,170,225, 3, 31,170, 96, 1,128, 82,200, 16,128, 82,
|
||||
/* 0x03c0 */ 1, 0, 0,212,192, 3, 95,214,224, 99, 0,145, 82, 0, 0,148,
|
||||
/* 0x03d0 */ 81, 0, 0,148,246, 3, 0,170,255,131, 0,209, 1, 8,193,168,
|
||||
/* 0x03e0 */ 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53, 34, 0,160,210,
|
||||
/* 0x03f0 */ 250, 3, 2,203,250, 3, 0,249, 25, 0, 0, 16, 32, 3, 64,185,
|
||||
/* 0x0400 */ 224, 7, 0,249, 57, 67, 32,203, 0, 0, 0,148,244, 3, 30,170,
|
||||
/* 0x0410 */ 1, 2,128, 82, 0, 0, 0, 16,232, 34,128, 82, 1, 0, 0,212,
|
||||
/* 0x0420 */ 0, 2,248, 54, 97, 0, 0, 52,225, 3, 31, 42,250,255,255, 23,
|
||||
/* 0x0430 */ 6, 0, 0,148,192, 1, 0, 0, 2, 64, 64, 0, 47,100,101,118,
|
||||
/* 0x0440 */ 47,115,104,109, 0, 0, 0, 0,195, 71, 64,184,194, 71, 64,184,
|
||||
/* 0x0450 */ 225, 3, 30,170, 96, 12,128, 18, 8, 7,128, 82, 1, 0, 0,212,
|
||||
/* 0x0460 */ 251, 3, 0, 42,128, 6, 64,185,253, 3, 0,145,160, 3, 0,203,
|
||||
/* 0x0470 */ 0,236,124,146, 31, 0, 0,145,226, 3, 0,170,225, 15, 31,248,
|
||||
/* 0x0480 */ 227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,132, 50, 64, 57,
|
||||
/* 0x0490 */ 36, 0, 0,148,232, 7, 65,248,250, 3, 0,249,242, 7, 0,249,
|
||||
/* 0x04a0 */ 130, 6, 64,185,225, 3, 0,145,224, 3, 27, 42, 8, 8,128, 82,
|
||||
/* 0x04b0 */ 1, 0, 0,212,191, 3, 0,145, 5, 0,128,210,228, 3, 27, 42,
|
||||
/* 0x04c0 */ 35, 0,128, 82,162, 0,128, 82,129, 6, 64,185,225, 15, 0,249,
|
||||
/* 0x04d0 */ 0, 0,128,210,200, 27,128, 82, 1, 0, 0,212,224, 11, 0,249,
|
||||
/* 0x04e0 */ 252, 3, 0,170,224, 3, 27, 42, 40, 7,128, 82, 1, 0, 0,212,
|
||||
/* 0x04f0 */ 253, 11, 64,185,129, 2, 64,185,158,115, 0,145,189, 3, 1, 75,
|
||||
/* 0x0500 */ 253, 7, 0,249, 33,120, 30, 18, 60, 3, 1,139,192, 3, 31,214,
|
||||
/* 0x0510 */ 192, 3, 95,214, 1,132, 64,248,225,255,255,181,192, 3, 95,214,
|
||||
/* 0x0520 */ 1, 64, 33,139,225, 11,190,169,227,123, 1,169, 5, 0,128, 18,
|
||||
/* 0x0530 */ 4, 0,176, 82, 26, 0, 0, 20,228,123, 65,169,225, 15,194,168,
|
||||
/* 0x0540 */ 0, 0, 1,203, 66, 0, 3,203,130, 0, 0,185,229, 3, 0,170,
|
||||
/* 0x0550 */ 224, 3, 3,170, 97, 0, 2,139,224, 3, 5,170,192, 3, 95,214,
|
||||
/* 0x0560 */ 132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,
|
||||
/* 0x0570 */ 132, 0, 4, 58,192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,
|
||||
/* 0x0580 */ 248,255,255,151, 33, 0, 1, 58,246,255,255,151,163,255,255, 84,
|
||||
/* 0x0590 */ 0, 2, 31,214, 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,
|
||||
/* 0x05a0 */ 162,255,255, 84,245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,
|
||||
/* 0x05b0 */ 163, 0, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
|
||||
/* 0x05c0 */ 197,251,255, 52,231,255,255,151, 33, 0, 1, 58,229,255,255,151,
|
||||
/* 0x05d0 */ 33, 0, 1, 58, 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,
|
||||
/* 0x05e0 */ 191, 0, 52, 49, 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113,
|
||||
/* 0x05f0 */ 67, 20, 0, 56,162,255,255, 84,233,255,255, 23,117,112,120, 0,
|
||||
/* 0x0600 */ 192, 3, 63,214, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
|
||||
/* 0x0610 */ 109, 97,116, 32,101,108,102, 54, 52, 45,108,105,116,116,108,101,
|
||||
/* 0x0620 */ 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,
|
||||
/* 0x0630 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32,
|
||||
/* 0x0640 */ 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86,
|
||||
/* 0x0650 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0660 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0670 */ 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,
|
||||
/* 0x0680 */ 110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70,
|
||||
/* 0x0690 */ 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 49, 48, 32, 32,
|
||||
/* 0x06a0 */ 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32,
|
||||
/* 0x06b0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76,
|
||||
/* 0x06c0 */ 70, 83, 73, 71, 83, 69, 71, 86, 32, 32, 32, 32, 48, 51, 55, 56,
|
||||
/* 0x06d0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 48, 32, 32, 50, 42, 42,
|
||||
/* 0x06e0 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
|
||||
/* 0x06f0 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 32, 32, 32, 32, 32, 48, 50,
|
||||
/* 0x0700 */ 51, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 99, 56, 32, 32,
|
||||
/* 0x0710 */ 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
||||
/* 0x0720 */ 32, 51, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32,
|
||||
/* 0x0730 */ 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,102, 99, 32, 32,
|
||||
/* 0x0740 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
|
||||
/* 0x0750 */ 32, 52, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32,
|
||||
/* 0x0760 */ 32, 48, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53,102, 99, 32,
|
||||
/* 0x0770 */ 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
|
||||
/* 0x0780 */ 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48,
|
||||
/* 0x0790 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
|
||||
/* 0x07a0 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
|
||||
/* 0x07b0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x07c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
|
||||
/* 0x07d0 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 50, 32, 48, 32,
|
||||
/* 0x07e0 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x07f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
|
||||
/* 0x0800 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76,
|
||||
/* 0x0810 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0820 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
|
||||
/* 0x0830 */ 69, 76, 70, 83, 73, 71, 83, 69, 71, 86, 32, 48, 32, 69, 76, 70,
|
||||
/* 0x0840 */ 83, 73, 71, 83, 69, 71, 86, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0850 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
|
||||
/* 0x0860 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48, 32, 69, 76, 70, 77,
|
||||
/* 0x0870 */ 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0880 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85,
|
||||
/* 0x0890 */ 78, 68, 42, 32, 48, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,103, 32, 32, 32,
|
||||
/* 0x08b0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,
|
||||
/* 0x08c0 */ 115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x08d0 */ 48, 48, 48, 49, 53, 56, 32,103, 32, 32, 32, 32, 32, 70, 32, 69,
|
||||
/* 0x08e0 */ 76, 70, 77, 65, 73, 78, 88, 50, 32, 48,100, 99, 32,117, 99,108,
|
||||
/* 0x08f0 */ 95,110,114,118, 50, 98, 95,100,101, 99,111,109,112,114,101,115,
|
||||
/* 0x0900 */ 115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0910 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76,
|
||||
/* 0x0920 */ 70, 77, 65, 73, 78, 89, 32, 48, 32,101,110,100, 95,100,101, 99,
|
||||
/* 0x0930 */ 111,109,112,114,101,115,115, 10, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x0940 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0950 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79,
|
||||
/* 0x0960 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
|
||||
/* 0x0970 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0980 */ 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
|
||||
/* 0x0990 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x09a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
|
||||
/* 0x09b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82,
|
||||
/* 0x09c0 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32,
|
||||
/* 0x09d0 */ 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x09e0 */ 48, 48, 48, 48, 48, 99, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
|
||||
/* 0x09f0 */ 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76, 79, 50, 49, 32, 32,
|
||||
/* 0x0a00 */ 69, 76, 70, 77, 65, 73, 78, 88, 50, 43, 48,120, 48, 48, 48, 48,
|
||||
/* 0x0a10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52, 56, 10, 10, 82, 69,
|
||||
/* 0x0a20 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
|
||||
/* 0x0a30 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 50, 93,
|
||||
/* 0x0a40 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0a50 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x0a60 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x0a70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, 65,
|
||||
/* 0x0a80 */ 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76,
|
||||
/* 0x0a90 */ 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 45, 48,120,
|
||||
/* 0x0aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
||||
/* 0x0ab0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
|
||||
/* 0x0ac0 */ 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76,
|
||||
/* 0x0ad0 */ 50, 54, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48,
|
||||
/* 0x0ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10,
|
||||
/* 0x0af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 99,
|
||||
/* 0x0b00 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80,
|
||||
/* 0x0b10 */ 82, 69, 76, 95, 76, 79, 50, 49, 32, 32, 69, 76, 70, 77, 65, 73,
|
||||
/* 0x0b20 */ 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
|
||||
/* 0x0b30 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
|
||||
/* 0x0b40 */ 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
|
||||
/* 0x0b50 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
|
||||
/* 0x0b60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
|
||||
/* 0x0b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
|
||||
/* 0x0b80 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50,
|
||||
/* 0x0b90 */ 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
|
||||
};
|
||||
|
||||
Generated
+1106
-1105
File diff suppressed because it is too large
Load Diff
Generated
+861
-833
File diff suppressed because it is too large
Load Diff
@@ -94,8 +94,9 @@ _start: .globl _start
|
||||
push %rsp; pop %rdi // argv
|
||||
push %rcx // argc
|
||||
push %rdx // param for atexit()
|
||||
lea cancel_dummy(%rip),%r15
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
section ELFSIGSEGV
|
||||
// install SIGSEGV handler for debugging
|
||||
SIGSEGV= 11
|
||||
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||
@@ -107,6 +108,7 @@ __NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
||||
lea __restore_rt(%rip),%rax; push %rax // .sa_restorer
|
||||
push $SA_RESTORER | SA_SIGINFO // .sa_flags
|
||||
lea sigsegv_sigaction(%rip),%rax; push %rax // .sa_sigaction
|
||||
lea cancel_sigsegv(%rip),%r15
|
||||
push %rsp; pop %rsi // arg2= &new struct sigaction
|
||||
push $SIGSEGV; pop %rdi // arg1= signum
|
||||
push $8; pop %r10 // sys4= sizeof(__sigset_t) ==> 64 bits
|
||||
@@ -131,9 +133,173 @@ __NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
||||
movl $0x66666666,%esi
|
||||
movl $0x77777777,%edi
|
||||
movl (%rdx),%edx // force SIGSEGV
|
||||
#endif //}
|
||||
#endif // TEST_SIGSEGV
|
||||
#endif // TEST_ONLY}
|
||||
|
||||
jmp end_sigsegv
|
||||
|
||||
__NR_rt_sigreturn= 15
|
||||
__restore_rt:
|
||||
endbr64
|
||||
mov $__NR_rt_sigreturn,%eax
|
||||
syscall
|
||||
|
||||
sigsegv_sigaction:
|
||||
endbr64
|
||||
push %rdx // save &ucontext_t
|
||||
|
||||
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||
mov $end_announce_sigaction - announce_sigaction,%edx // arg3 len
|
||||
lea announce_sigaction(%rip),%rsi // arg2 buf
|
||||
push $2; pop %rdi // arg1 fd_stderr
|
||||
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||
|
||||
xor %esi,%esi // arg2 O_RDONLY
|
||||
lea proc_self_maps(%rip),%arg1
|
||||
push $__NR_open; pop %rax; syscall
|
||||
mov %rax,%r12 // fd_maps
|
||||
BUFLEN= 4096
|
||||
mov $BUFLEN,%ebx; sub %rbx,%rsp // allocate buffer
|
||||
loop_maps:
|
||||
mov %ebx,%edx // arg3 buflen
|
||||
push %rsp; pop %rsi // arg2 buffer
|
||||
mov %r12,%rdi // arg1 fd_maps
|
||||
xor %eax,%eax; syscall // __NR_read
|
||||
test %eax,%eax; jle done_maps // ignore error on read()
|
||||
mov %eax,%edx // arg3 buflen
|
||||
push %rsp; pop %rsi // arg2 buf
|
||||
push $2; pop %rdi // arg1 fd_stderr
|
||||
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||
jmp loop_maps
|
||||
done_maps:
|
||||
mov %r12,%rdi //arg1 fd_maps
|
||||
add %rbx,%rsp // discard buffer
|
||||
push $__NR_close; pop %rax; syscall
|
||||
// end printing of /proc/self/maps
|
||||
|
||||
pop %rdx // restore &ucontext_t
|
||||
__NR_fork= 57
|
||||
push $__NR_fork; pop %rax; call sys_check
|
||||
test %eax,%eax; je child
|
||||
parent:
|
||||
jmp parent // spin; paused by gdb
|
||||
|
||||
proc_self_cmdline:
|
||||
.asciz "/proc/self/cmdline"
|
||||
announce_sigaction:
|
||||
.asciz "\n\nSIGSEGV address space:\n"
|
||||
end_announce_sigaction:
|
||||
|
||||
proc_self_maps:
|
||||
.asciz "/proc/self/maps"
|
||||
minus_q:
|
||||
.asciz "-q"
|
||||
path_gdb:
|
||||
.asciz "/usr/bin/gdb"
|
||||
commands_gdb:
|
||||
.ascii "set prompt\n" // null string prompt
|
||||
.ascii "info inferiors\n"
|
||||
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||
// stack_t <bits/types/stack_t.h>
|
||||
.ascii "print \"r8 - r15\"\n"
|
||||
.ascii "x/8xg $rdx + 5*8\n"
|
||||
|
||||
.ascii "print \"rdi, rsi, rbp, rbx\"\n"
|
||||
.ascii "x/4xg\n"
|
||||
.ascii "print \"rdx, rax, rcx, rsp\"\n"
|
||||
.ascii "x/4xg\n"
|
||||
.ascii "print \"rip, efl\"\n"
|
||||
.ascii "x/2xg\n"
|
||||
|
||||
.ascii "set $pc = *(long *)($rdx + 168)\n"
|
||||
.ascii "print \"faulting instr\"\n"
|
||||
.ascii "x/i $pc\n"
|
||||
.ascii "print \"fault context\"\n"
|
||||
.ascii "x/16i $pc - 0x20\n"
|
||||
|
||||
.ascii "print \"user stack\"\n"
|
||||
.ascii "x/64xg *(long *)($rdx + 5*8 + 15*8)\n"
|
||||
|
||||
.ascii "kill\n"
|
||||
.ascii "quit 1"
|
||||
.byte 0
|
||||
commands_gdb_end:
|
||||
|
||||
child:
|
||||
PATH_MAX= 4096
|
||||
sub $PATH_MAX,%rsp
|
||||
lea proc_self_cmdline(%rip),%arg1
|
||||
O_RDONLY= 0
|
||||
push $O_RDONLY; pop %arg2
|
||||
push $__NR_open; pop %rax; call sys_check
|
||||
push %rax; pop %arg1 // fd
|
||||
push %rsp; pop %arg2 // buffer
|
||||
push $PATH_MAX; pop %arg3
|
||||
__NR_read= 0
|
||||
push $__NR_read; pop %rax; call sys_check
|
||||
push $__NR_close; pop %rax; call sys_check
|
||||
|
||||
__NR_getppid= 110
|
||||
push $__NR_getppid; pop %rax; syscall
|
||||
push %rax; pop %rsi
|
||||
xor %eax,%eax; push %rax; push %rax // decimal(pid) fits in 16 bytes
|
||||
push %rsp; pop %rdi; call unsimal
|
||||
// argv
|
||||
push %rsp; pop %rsi // fence post: &pid.unsimal
|
||||
push $0 // argv[4]
|
||||
push %rsi // arg3 pid
|
||||
add $16,%rsi; push %rsi // arg2 exename
|
||||
lea minus_q(%rip),%rax; push %rax // arg1 "-q"
|
||||
add $(path_gdb - minus_q),%rax; push %rax // arg[0] "/usr/bin/gdb"
|
||||
|
||||
#if 1 //{ pipe input to gdb
|
||||
xor %edi,%edi; push $__NR_close; pop %rax; syscall
|
||||
push %rax; push %rsp; pop %rdi // &fd_pipe[2]; 4 bytes each
|
||||
__NR_pipe= 22
|
||||
push $__NR_pipe; pop %rax; call sys_check
|
||||
pop %rdi; shr $32,%rdi // arg1 write side of pipe
|
||||
|
||||
push $commands_gdb_end - commands_gdb; pop %arg3
|
||||
lea commands_gdb(%rip),%arg2
|
||||
__NR_write= 1
|
||||
push $__NR_write; pop %rax; call sys_check
|
||||
push $__NR_close; pop %rax; syscall
|
||||
#endif //}
|
||||
|
||||
push $0; pop %arg3 // _environ BUG
|
||||
push %rsp; pop %arg2 // argv
|
||||
movq (%arg2),%arg1 // "/usr/bin/gdb"
|
||||
__NR_execve= 59
|
||||
push $__NR_execve; pop %rax; call sys_check
|
||||
hlt
|
||||
|
||||
unsimal: // (dst, value)
|
||||
push $10; pop %rcx // radix
|
||||
mov %esi,%eax // value
|
||||
call 0f
|
||||
movb $0,(%rdi) // terminator
|
||||
ret
|
||||
0:
|
||||
xor %edx,%edx; div %ecx; push %rdx // eax= quo(%edx:%eax / %ecx); edx= rem
|
||||
// 'div' undefines all flags!
|
||||
test %eax,%eax; je 1f; call 0b
|
||||
1:
|
||||
pop %rax; add $'0',%eax
|
||||
stosb
|
||||
ret
|
||||
|
||||
// Uninstall SIGSEGV handler
|
||||
cancel_sigsegv:
|
||||
endbr64
|
||||
push $8; pop %sys4 // sys_arg4 minimal byte count
|
||||
xor %edx,%edx // no old
|
||||
xor %esi,%esi // no new
|
||||
push $SIGSEGV; pop %rdi
|
||||
push $__NR_rt_sigaction; pop %eax; syscall
|
||||
ret
|
||||
|
||||
end_sigsegv:
|
||||
|
||||
section ELFMAINX2
|
||||
#define old_sp %rbp
|
||||
F_FRAME= 7*NBPW
|
||||
F_ENTR= 6*NBPW; F_PMASK= F_ENTR
|
||||
@@ -144,8 +310,9 @@ F_ELFA= 2*NBPW
|
||||
F_LENX= 1*NBPW
|
||||
F_ADRX= 0*NBPW
|
||||
|
||||
D_FOLD= 1*NBPW // .data space at start of unfold
|
||||
D_FOLD= 2*NBPW // .data space at start of unfold
|
||||
D_PMASK= 0*NBPW
|
||||
D_XSIGSEGV= 1*NBPW
|
||||
|
||||
// find auxv
|
||||
xor %eax,%eax // 0
|
||||
@@ -303,6 +470,7 @@ eof_n2b:
|
||||
|
||||
// Write de-compressed 'fold' to file
|
||||
mov F_PMASK(old_sp),%rax; mov %rax,/*D_PMASK*/(%rsp) // propagate PAGE_MASK
|
||||
mov %r15,D_XSIGSEGV(%rsp) // propagate cancel_sigsegv
|
||||
mov F_LENU(old_sp),%arg3 // LENU
|
||||
sub $INSURANCE,%arg3 // memcheck limit
|
||||
push %rsp; pop %arg2 // buffer
|
||||
@@ -334,159 +502,9 @@ eof_n2b:
|
||||
add $D_FOLD,%rax // beyond .data
|
||||
jmp *%rax // goto unfolded stub
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
__NR_rt_sigreturn= 15
|
||||
.balign 16
|
||||
__restore_rt:
|
||||
cancel_dummy:
|
||||
endbr64
|
||||
mov $__NR_rt_sigreturn,%eax
|
||||
syscall
|
||||
|
||||
.balign 16
|
||||
sigsegv_sigaction:
|
||||
endbr64
|
||||
push %rdx // save &ucontext_t
|
||||
|
||||
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||
mov $end_announce_sigaction - announce_sigaction,%edx // arg3 len
|
||||
lea announce_sigaction(%rip),%rsi // arg2 buf
|
||||
push $2; pop %rdi // arg1 fd_stderr
|
||||
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||
|
||||
xor %esi,%esi // arg2 O_RDONLY
|
||||
lea proc_self_maps(%rip),%arg1
|
||||
push $__NR_open; pop %rax; syscall
|
||||
mov %rax,%r12 // fd_maps
|
||||
BUFLEN= 4096
|
||||
mov $BUFLEN,%ebx; sub %rbx,%rsp // allocate buffer
|
||||
loop_maps:
|
||||
mov %ebx,%edx // arg3 buflen
|
||||
push %rsp; pop %rsi // arg2 buffer
|
||||
mov %r12,%rdi // arg1 fd_maps
|
||||
xor %eax,%eax; syscall // __NR_read
|
||||
test %eax,%eax; jle done_maps // ignore error on read()
|
||||
mov %eax,%edx // arg3 buflen
|
||||
push %rsp; pop %rsi // arg2 buf
|
||||
push $2; pop %rdi // arg1 fd_stderr
|
||||
push $__NR_write; pop %rax; syscall // ignore error on write()
|
||||
jmp loop_maps
|
||||
done_maps:
|
||||
mov %r12,%rdi //arg1 fd_maps
|
||||
add %rbx,%rsp // discard buffer
|
||||
push $__NR_close; pop %rax; syscall
|
||||
// end printing of /proc/self/maps
|
||||
|
||||
pop %rdx // restore &ucontext_t
|
||||
__NR_fork= 57
|
||||
push $__NR_fork; pop %rax; call sys_check
|
||||
test %eax,%eax; je child
|
||||
parent:
|
||||
jmp parent // spin; paused by gdb
|
||||
|
||||
proc_self_cmdline:
|
||||
.asciz "/proc/self/cmdline"
|
||||
announce_sigaction:
|
||||
.asciz "\n\nSIGSEGV address space:\n"
|
||||
end_announce_sigaction:
|
||||
|
||||
proc_self_maps:
|
||||
.asciz "/proc/self/maps"
|
||||
minus_q:
|
||||
.asciz "-q"
|
||||
path_gdb:
|
||||
.asciz "/usr/bin/gdb"
|
||||
commands_gdb:
|
||||
.ascii "set prompt\n" // null string prompt
|
||||
.ascii "info inferiors\n"
|
||||
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||
// stack_t <bits/types/stack_t.h>
|
||||
.ascii "print \"r8 - r15\"\n"
|
||||
.ascii "x/8xg $rdx + 5*8\n"
|
||||
|
||||
.ascii "print \"rdi, rsi, rbp, rbx\"\n"
|
||||
.ascii "x/4xg\n"
|
||||
.ascii "print \"rdx, rax, rcx, rsp\"\n"
|
||||
.ascii "x/4xg\n"
|
||||
.ascii "print \"rip, efl\"\n"
|
||||
.ascii "x/2xg\n"
|
||||
|
||||
.ascii "set $pc = *(long *)($rdx + 168)\n"
|
||||
.ascii "print \"faulting instr\"\n"
|
||||
.ascii "x/i $pc\n"
|
||||
.ascii "print \"fault context\"\n"
|
||||
.ascii "x/16i $pc - 0x20\n"
|
||||
|
||||
.ascii "print \"user stack\"\n"
|
||||
.ascii "x/64xg *(long *)($rdx + 5*8 + 15*8)\n"
|
||||
|
||||
.ascii "kill\n"
|
||||
.ascii "quit 1"
|
||||
.byte 0
|
||||
commands_gdb_end:
|
||||
|
||||
child:
|
||||
PATH_MAX= 4096
|
||||
sub $PATH_MAX,%rsp
|
||||
lea proc_self_cmdline(%rip),%arg1
|
||||
O_RDONLY= 0
|
||||
push $O_RDONLY; pop %arg2
|
||||
push $__NR_open; pop %rax; call sys_check
|
||||
push %rax; pop %arg1 // fd
|
||||
push %rsp; pop %arg2 // buffer
|
||||
push $PATH_MAX; pop %arg3
|
||||
__NR_read= 0
|
||||
push $__NR_read; pop %rax; call sys_check
|
||||
push $__NR_close; pop %rax; call sys_check
|
||||
|
||||
__NR_getppid= 110
|
||||
push $__NR_getppid; pop %rax; syscall
|
||||
push %rax; pop %rsi
|
||||
xor %eax,%eax; push %rax; push %rax // decimal(pid) fits in 16 bytes
|
||||
push %rsp; pop %rdi; call unsimal
|
||||
// argv
|
||||
push %rsp; pop %rsi // fence post: &pid.unsimal
|
||||
push $0 // argv[4]
|
||||
push %rsi // arg3 pid
|
||||
add $16,%rsi; push %rsi // arg2 exename
|
||||
lea minus_q(%rip),%rax; push %rax // arg1 "-q"
|
||||
add $(path_gdb - minus_q),%rax; push %rax // arg[0] "/usr/bin/gdb"
|
||||
|
||||
#if 1 //{ pipe input to gdb
|
||||
xor %edi,%edi; push $__NR_close; pop %rax; syscall
|
||||
push %rax; push %rsp; pop %rdi // &fd_pipe[2]; 4 bytes each
|
||||
__NR_pipe= 22
|
||||
push $__NR_pipe; pop %rax; call sys_check
|
||||
pop %rdi; shr $32,%rdi // arg1 write side of pipe
|
||||
|
||||
push $commands_gdb_end - commands_gdb; pop %arg3
|
||||
lea commands_gdb(%rip),%arg2
|
||||
__NR_write= 1
|
||||
push $__NR_write; pop %rax; call sys_check
|
||||
push $__NR_close; pop %rax; syscall
|
||||
#endif //}
|
||||
|
||||
push $0; pop %arg3 // _environ BUG
|
||||
push %rsp; pop %arg2 // argv
|
||||
movq (%arg2),%arg1 // "/usr/bin/gdb"
|
||||
__NR_execve= 59
|
||||
push $__NR_execve; pop %rax; call sys_check
|
||||
hlt
|
||||
|
||||
unsimal: // (dst, value)
|
||||
push $10; pop %rcx // radix
|
||||
mov %esi,%eax // value
|
||||
call 0f
|
||||
movb $0,(%rdi) // terminator
|
||||
ret
|
||||
0:
|
||||
xor %edx,%edx; div %ecx; push %rdx // eax= quo(%edx:%eax / %ecx); edx= rem
|
||||
// 'div' undefines all flags!
|
||||
test %eax,%eax; je 1f; call 0b
|
||||
1:
|
||||
pop %rax; add $'0',%eax
|
||||
stosb
|
||||
ret
|
||||
#endif // TEST_SIGSEGV
|
||||
|
||||
sys_check:
|
||||
push %rax // save __NR_ for debug
|
||||
|
||||
@@ -81,6 +81,7 @@ is_ptinterp= (1<<0)
|
||||
|
||||
.balign 8
|
||||
PAGE_MASK: .quad -1<<12 // default
|
||||
cancel_sigsegv: .quad 0 // subroutine that cancels sigaction(SIGSEGV,)
|
||||
|
||||
// IN: [ADRX,+LENX): compressed data; [ADRU,+LENU): expanded fold (w/ upx_main2)
|
||||
// %rsp= %rbp= &F_ADRX; %r13= O_BINFO | is_ptinterp | unmap_all_pages
|
||||
@@ -174,19 +175,11 @@ no_env_pse:
|
||||
*/
|
||||
// rsp/ {OVERHEAD},ADRU,LENU,rdx,%entry, argc,argv,0,envp,0,auxv,0,strings
|
||||
addq $OVERHEAD,%rsp # Elf64_Ehdr temporary space
|
||||
mov %ebp,%ebx # fd
|
||||
#define r_fd ebx
|
||||
mov %ebp,%r_fd
|
||||
movq %rax,3*NBPW(%rsp) # entry
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
// Uninstall SIGSEGV handler
|
||||
SIGSEGV= 11
|
||||
__NR_rt_sigaction= 13 // /usr/include/asm/unistd_64.h
|
||||
push $8; pop %sys4 // sys_arg4 minimal byte count
|
||||
xor %edx,%edx // no old
|
||||
xor %esi,%esi // no new
|
||||
push $SIGSEGV; pop %rdi
|
||||
push $__NR_rt_sigaction; pop %eax; syscall
|
||||
#endif // TEST_SIGSEGV
|
||||
call *cancel_sigsegv(%rip)
|
||||
|
||||
sz_Ehdr= 8*NBPW
|
||||
e_type= 16
|
||||
@@ -201,16 +194,16 @@ p_memsz= 5*NBPW
|
||||
movq %r13,%arg1; call munmap # discard C_TEXT compressed data
|
||||
|
||||
// Map 1 page of /proc/self/exe so that the symlink does not disappear.
|
||||
test %ebx,%ebx; js no_pse_map
|
||||
test %r_fd,%r_fd; js no_pse_map
|
||||
subq %arg6,%arg6 # 0 offset
|
||||
mov %ebx,%arg5l # fd
|
||||
mov %r_fd,%arg5l # fd
|
||||
push $MAP_PRIVATE; pop %arg4
|
||||
push $PROT_READ; pop %arg3
|
||||
mov $1<<12,%arg2l
|
||||
subl %arg1l,%arg1l # 0
|
||||
call mmap
|
||||
|
||||
mov %ebx,%edi # fd
|
||||
mov %r_fd,%edi # fd
|
||||
call close
|
||||
|
||||
.macro NOTRACK
|
||||
|
||||
@@ -66,6 +66,8 @@ MAP_ANONYMOUS= 0x20
|
||||
MAP_FIXED= 0x10
|
||||
MAP_PRIVATE= 0x02
|
||||
|
||||
FD_CWD= -1 // AT_CWD= -100
|
||||
FD_stdin= 0
|
||||
FD_stderr= 2
|
||||
O_RDONLY= 0
|
||||
|
||||
@@ -81,13 +83,15 @@ PAGE_SIZE = ( 1<<PAGE_SHIFT)
|
||||
|
||||
__NR_SYSCALL_BASE = 0
|
||||
|
||||
__NR_exit= 1 + __NR_SYSCALL_BASE
|
||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||
__NR_close= 6 + __NR_SYSCALL_BASE
|
||||
__NR_execve= 11 + __NR_SYSCALL_BASE
|
||||
__NR_exit= 1 + __NR_SYSCALL_BASE
|
||||
__NR_fdatasync=148 + __NR_SYSCALL_BASE
|
||||
__NR_fork= 2 + __NR_SYSCALL_BASE
|
||||
__NR_fsync= 118 + __NR_SYSCALL_BASE
|
||||
__NR_ftruncate=93 + __NR_SYSCALL_BASE
|
||||
__NR_getpid= 20 + __NR_SYSCALL_BASE
|
||||
__NR_getppid= 64 + __NR_SYSCALL_BASE
|
||||
__NR_lseek= 19 + __NR_SYSCALL_BASE
|
||||
__NR_memfd_create= 385 + __NR_SYSCALL_BASE
|
||||
__NR_mkdir= 39 + __NR_SYSCALL_BASE
|
||||
@@ -95,12 +99,16 @@ __NR_mmap2= 192 + __NR_SYSCALL_BASE
|
||||
__NR_mprotect=125 + __NR_SYSCALL_BASE
|
||||
__NR_msync= 144 + __NR_SYSCALL_BASE // 0x90
|
||||
__NR_open= 5 + __NR_SYSCALL_BASE
|
||||
__NR_openat= 322 + __NR_SYSCALL_BASE
|
||||
__NR_pipe= 42 + __NR_SYSCALL_BASE
|
||||
__NR_read= 3 + __NR_SYSCALL_BASE
|
||||
__NR_sigaction=67 + __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,6 +153,49 @@ _start: .globl _start
|
||||
//// nop; bkpt // DEBUG
|
||||
stmdb sp!,{r0,r1,lr} // ABI crt0 -static may have data here
|
||||
sub sp,sp,#-3*NBPW + F_SIZE // F_R0,F_R1 separately
|
||||
|
||||
ldr r1,sz_pack2
|
||||
adr r0,sz_pack2
|
||||
sub r0,r0,r1 @ elfaddr= &Elf_Ehdr of this program
|
||||
str r0,[sp,#F_ELFA]
|
||||
mov r_pack2,r1 @ save sz_pack2
|
||||
|
||||
ldr r0,mflg
|
||||
str r0,[sp,#F_QFLG]
|
||||
|
||||
section ELFSIGSEGV
|
||||
#if TEST_SIGSEGV //{ #defined on -devel branch only; not seen on arm64 hardware
|
||||
// install SIGSEGV handler for debugging
|
||||
SIGSEGV= 11
|
||||
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||
SA_RESTORER= 0x04000000
|
||||
sa_sigaction = 0 * NBPW
|
||||
sa_flags = 1 * NBPW
|
||||
sa_mask = 3 * NBPW // location of mask
|
||||
sa_restorer = 4 * NBPW
|
||||
sa_frame = 5 * NBPW
|
||||
call adr_sigaction; mov r0,lr // .sa_sigaction
|
||||
mov r1,#SA_SIGINFO // .sa_flags
|
||||
mov r2,#0 // .sa_mask
|
||||
mov r3,#0
|
||||
mov r4,#0 // .sa_restorer
|
||||
stmdb sp!,{r0,r1,r2,r3,r4}
|
||||
|
||||
mov arg4,#8 // 8 bytes ==> 64 bits
|
||||
mov arg3,#0 // do not save old_sigaction
|
||||
mov arg2,sp // &new_sigaction
|
||||
mov arg1,#SIGSEGV
|
||||
do_sys7t __NR_sigaction
|
||||
add sp,sp,#sa_frame
|
||||
|
||||
#if 0 //{ TEST ONLY
|
||||
mov r0,#0xc0;mov r1,#0xc1;mov r2,#0xc2;mov r3,#0xc3;mov r4,#0xc4;mov r5,#0xc5;mov r6,#0xc6;mov r7,#0xc7
|
||||
mov r8,#0xc8;mov r9,#0xc9;mov r10,#0xca;mov r11,#0xcb;mov r12,#0xcc
|
||||
ldr r0,[r0] // cause SIGSEGV
|
||||
#endif //}
|
||||
#endif //}
|
||||
|
||||
section ELFMAINX2
|
||||
add arg1,sp,#NBPW + F_SIZE // avoid feint of 0==argc
|
||||
call zfind // out: r0= &envp
|
||||
call zfind
|
||||
@@ -159,14 +210,6 @@ _start: .globl _start
|
||||
mvn r2,r2; add r2,r2,#1 // neg
|
||||
mov r_pmask,r2
|
||||
|
||||
ldr r1,sz_pack2
|
||||
adr r0,sz_pack2
|
||||
sub r0,r0,r1 @ elfaddr= &Elf_Ehdr of this program
|
||||
str r0,[sp,#F_ELFA]
|
||||
mov r_pack2,r1 @ save sz_pack2
|
||||
|
||||
ldr r0,mflg
|
||||
str r0,[sp,#F_QFLG]
|
||||
|
||||
call get_data // cpr0 can be too far away
|
||||
old_sp .req r11
|
||||
@@ -242,7 +285,7 @@ mfd .req old_sp
|
||||
ldr arg3,[sp,#F_LENU]
|
||||
ldr arg2,[sp,#F_ADRU]
|
||||
mov arg1,mfd
|
||||
do_sys __NR_write
|
||||
do_sys7t __NR_write
|
||||
|
||||
mov r5,#0
|
||||
mov r4,mfd
|
||||
@@ -268,6 +311,176 @@ mfd .req old_sp
|
||||
ldr r12,[sp,#F_ADRU]
|
||||
add pc,r12,#D_FOLD // goto unfolded code
|
||||
|
||||
#if TEST_SIGSEGV //{ #defined on -devel branch only; not seen on arm64 hardware
|
||||
proc_self_cmdline:
|
||||
.asciz "/proc/self/cmdline"
|
||||
.balign 4
|
||||
|
||||
#define r_fd r6
|
||||
PATH_MAX= 4096
|
||||
child:
|
||||
#if 1 //{ pipe input to gdb
|
||||
mov arg1,#FD_stdin; do_sys7t __NR_close
|
||||
mov arg2,#0; mov arg1,#0; stmdb sp!,{arg1,arg2} // space for result of pipe()
|
||||
mov arg1,sp
|
||||
do_sys7t __NR_pipe // read side will be 0 (FD_stdin)
|
||||
ldmia sp!,{r0,r_fd} // write side of pipe
|
||||
|
||||
mov arg3,#commands_gdb_end - commands_gdb // len
|
||||
adr arg2,commands_gdb
|
||||
mov arg1,r_fd
|
||||
do_sys7t __NR_write
|
||||
mov arg1,r_fd; do_sys7t __NR_close
|
||||
#endif //}
|
||||
|
||||
sub sp,sp,#PATH_MAX
|
||||
mov arg3,#O_RDONLY
|
||||
adr arg2,proc_self_cmdline
|
||||
mov arg1,#FD_CWD
|
||||
do_sys27t __NR_openat; mov r_fd,r0 // fd
|
||||
mov arg2,sp // buffer
|
||||
mov arg3,#PATH_MAX
|
||||
do_sys7t __NR_read
|
||||
mov arg1,r_fd; do_sys7t __NR_close
|
||||
|
||||
do_sys7t __NR_getppid
|
||||
sub sp,sp,#16 // decimal(pid) fits in 16 bytes
|
||||
mov arg2,arg1; mov arg1,sp; call unsimal
|
||||
|
||||
mov arg5,#0 // terminator
|
||||
mov arg4,sp // &"pid" (result of unsimal)
|
||||
add arg3,sp,#16 // cmdline argv[0] [skip "pid"]
|
||||
adr arg2,minus_q
|
||||
adr arg1,path_gdb
|
||||
stmdb sp!,{arg1,arg2,arg3,arg4,arg5} // argv
|
||||
mov arg3,#0 // _envviron BUG
|
||||
mov arg2,sp // &argv
|
||||
do_sys7t __NR_execve
|
||||
0:
|
||||
b 0b
|
||||
minus_q:
|
||||
.asciz "-q"
|
||||
path_gdb:
|
||||
.asciz "/usr/bin/gdb"
|
||||
commands_gdb:
|
||||
.ascii "set prompt\n" // null string prompt
|
||||
.ascii "info inferiors\n"
|
||||
.ascii "print \"r0-r7\"\n"
|
||||
.ascii "x/8xw $sp + 0x28\n"
|
||||
.ascii "print \"r8-r15\"\n"
|
||||
.ascii "x/8xw\n"
|
||||
.ascii "set $pc = *(int *)($sp + 0x64)\n"
|
||||
.ascii "print \"faulting instr\"\n"
|
||||
.ascii "x/i $pc\n"
|
||||
.ascii "print \"fault context\"\n"
|
||||
.ascii "x/15i $pc - 7*4\n"
|
||||
//.ascii "print \"intercept stack\"\n"
|
||||
//.ascii "x/76xw $sp\n"
|
||||
.ascii "set $sp = *(long *)($sp + 0x5c)\n"
|
||||
.ascii "print \"user stack\"\n"
|
||||
.ascii "x/64xw $sp\n"
|
||||
.ascii "kill\n"
|
||||
.ascii "quit 1"
|
||||
.byte 0
|
||||
commands_gdb_end:
|
||||
.balign 4
|
||||
|
||||
// ucontext_t, mcontext_t, gregset_t, gret_t, REG_xxx: <sys/ucontext.h>
|
||||
// stack_t <bits/types/stack_t.h>
|
||||
__restore_rt:
|
||||
nop
|
||||
|
||||
proc_self_maps:
|
||||
.asciz "/proc/self/maps"
|
||||
announce_sigaction:
|
||||
.ascii "\n\nSIGSEGV address space:\n"
|
||||
end_announce_sigaction:
|
||||
.balign 4
|
||||
|
||||
adr_sigaction:
|
||||
mov r12,lr; mov lr,pc; mov pc,r12 // blx lr
|
||||
sigsegv_sigaction:
|
||||
stmdb sp!,{arg2,arg3} // save siginfo *, ucontext *
|
||||
// print /proc/self/maps of child (same as parent: the beauty of fork())
|
||||
mov arg3,#end_announce_sigaction - announce_sigaction // arg3 len
|
||||
adr arg2,announce_sigaction // buf
|
||||
mov arg1,#FD_stderr
|
||||
do_sys7t __NR_write
|
||||
|
||||
mov arg3,#O_RDONLY // flags
|
||||
adr arg2,proc_self_maps // path
|
||||
mov arg1,#FD_CWD
|
||||
do_sys27t __NR_openat; mov r_fd,r0 // fd_maps
|
||||
BUFLEN= 4096
|
||||
sub sp,sp,#BUFLEN
|
||||
loop_maps:
|
||||
mov arg3,#BUFLEN // buflen
|
||||
mov arg2,sp // buffer
|
||||
mov arg1,r_fd // fd_maps
|
||||
do_sys7t __NR_read
|
||||
cmp r0,#0; beq done_maps
|
||||
mov arg3,r0 // buflen
|
||||
mov arg2,sp // buf
|
||||
mov arg1,#FD_stderr
|
||||
do_sys7t __NR_write
|
||||
b loop_maps
|
||||
done_maps:
|
||||
add sp,sp,#BUFLEN // discard buffer
|
||||
mov arg1,r_fd; do_sys7t __NR_close
|
||||
// end printing of /proc/self/maps
|
||||
|
||||
mov arg1,#0; mov arg2,#0 // paranoia
|
||||
do_sys7t __NR_fork
|
||||
cmp r0,#0; beq child // fork()
|
||||
parent:
|
||||
NR_exit= 1
|
||||
b parent // spin; paused by gdb
|
||||
|
||||
unsimal: // (dst, value)
|
||||
mov r2,#0
|
||||
stmdb sp!,{r2,lr}; call 0f
|
||||
ldmia sp!,{r2,lr}
|
||||
strb r2,[r0] // terminator
|
||||
ret
|
||||
0:
|
||||
mov ip,r1 // extra copy used at end
|
||||
mov r2,#0 // hi
|
||||
|
||||
mov r3,r1 // copy lo
|
||||
adds r1,r1,r1,lsl #3 // 9*lo
|
||||
adc r2,r2,r2,lsl #3 // 9*hi + C
|
||||
add r2,r2,r3,lsr #(32 - 3) // bits shifted from lo to hi
|
||||
|
||||
mov r3,r1 // copy lo
|
||||
adds r1,r1,r1,lsl #4
|
||||
adc r2,r2,r2,lsl #4
|
||||
add r2,r2,r3,lsr #(32 - 4) // * 0x99
|
||||
|
||||
mov r3,r1 // copy lo
|
||||
adds r1,r1,r1,lsl #8
|
||||
adc r2,r2,r2,lsl #8
|
||||
add r2,r2,r3,lsr #(32 - 8) // * 0x9999
|
||||
|
||||
mov r3,r1 // copy lo
|
||||
adds r1,r1,r1,lsl #16
|
||||
adc r2,r2,r2,lsl #16
|
||||
add r2,r2,r3,lsr #(32 - 16) // * 0x99999999
|
||||
|
||||
subs r1,r1,ip,lsl #(32 - 1) // - * 0x80000000
|
||||
sbc r2,r2,ip,lsr #1 // * 0x19999999
|
||||
|
||||
adds r1,r1,ip
|
||||
adcs r1,r2,#0 // * 0x0.1999999a; r1 = quo(ip, 10); set flags
|
||||
add r2,r1,r1,lsl #2 // r2 = quo * 5
|
||||
sub r2,ip,r2,lsl #1 // rem = ip - 10 * quo
|
||||
|
||||
stmdb sp!,{r2,lr} // save rem and retaddr
|
||||
beq 1f; call 0b // stop if 0==quo; else recurse for next remainder
|
||||
1:
|
||||
ldmia sp!,{r1,lr}; add r1,r1,#'0'; strb r1,[r0],#1
|
||||
ret
|
||||
#endif // TEST_SIGSEGV}
|
||||
|
||||
zfind:
|
||||
ldr r1,[r0],#NBPW
|
||||
cmp r1,#0; bne zfind
|
||||
@@ -322,7 +535,7 @@ L610: @ each word
|
||||
mov r0,#'\n'; strb r0,[r2],#1
|
||||
sub r2,r2,sp @ count
|
||||
mov r1,sp @ buf
|
||||
mov r0,#2 @ FD_STDERR
|
||||
mov r0,#FD_stderr
|
||||
#if defined(ARMEL_EABI4) /*{*/
|
||||
mov r7,#__NR_write
|
||||
swi 0
|
||||
|
||||
@@ -255,6 +255,17 @@ r_elfa .req r9
|
||||
add sp,sp,#MAX_ELF_HDR_32 + OVERHEAD @ un-alloca
|
||||
str r0,[sp,#F_ENTR] @ entry address
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
// Uninstall SIGSEGV handler
|
||||
SIGSEGV= 11
|
||||
__NR_rt_sigaction= 67
|
||||
mov arg4,#0
|
||||
mov arg3,#0 // no old
|
||||
mov arg2,#0 // no new
|
||||
mov arg1,#SIGSEGV
|
||||
do_sys __NR_rt_sigaction
|
||||
#endif // TEST_SIGSEGV
|
||||
|
||||
// Map 1 page of /proc/self/exe so that it does not disappear
|
||||
ldr r0,[sp,#F_obinfo]; tst r0,#unmap_all_pages; bne no_map_pse
|
||||
mov arg6,#0 @ SEEK_SET offset
|
||||
|
||||
@@ -140,6 +140,13 @@ wszuf .req w21
|
||||
xszuf .req x21
|
||||
xFOLD .req x20
|
||||
wPrivAnon .req w19
|
||||
cancel_SEGV .req x18
|
||||
|
||||
D_PMASK= 0*NBPW
|
||||
D_XSIGSEGV= 1*NBPW
|
||||
D_GETPM= 2*NBPW
|
||||
D_PRIVANON= 2*NBPW + 2*4
|
||||
D_FOLD= 2*NBPW + 3*4 // .data space at start of unfold
|
||||
|
||||
// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
|
||||
// x18 is CLOBBERED: "The platform register"
|
||||
@@ -160,9 +167,10 @@ _start: .globl _start
|
||||
#endif /*}*/
|
||||
stp x0,x1,[sp,#-2*NBPW]! // ABI: -static crt0 might pass data in x0,x1
|
||||
ldr wPrivAnon,mflg
|
||||
adr cancel_SEGV,cancel_dummy
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
// install SIGSEGV handler for debugging
|
||||
section ELFSIGSEGV
|
||||
// install SIGSEGV handler for debugging hardware and de-compressor
|
||||
SIGSEGV= 11
|
||||
SA_SIGINFO= 4 // /usr/include/bits/sigaction.h
|
||||
SA_RESTORER= 0x04000000
|
||||
@@ -183,6 +191,8 @@ sa_frame = 8 * NBPW
|
||||
mov w0,#SIGSEGV
|
||||
do_sys __NR_sigaction
|
||||
add sp,sp,sa_frame
|
||||
adr cancel_SEGV,cancel_sigsegv
|
||||
b L300
|
||||
|
||||
#if 0 //{ TEST ONLY
|
||||
mov x0,#0xc0;mov x1,#0xc1;mov x2,#0xc2;mov x3,#0xc3;mov x4,#0xc4;mov x5,#0xc5;mov x6,#0xc6;mov x7,#0xc7
|
||||
@@ -191,116 +201,7 @@ mov x16,#0xd0;mov x17,#0xd1;mov x18,#0xd2;mov x19,#0xd3;mov x20,#0xd4;mov x21,#0
|
||||
mov x24,#0xd8;mov x25,#0xd9;mov x26,#0xda;mov x27,#0xdb;mov x28,#0xdc;mov x29,#0xdd;mov x30,#0xde
|
||||
ldr x0,[x0] // cause SIGSEGV
|
||||
#endif //}
|
||||
#endif // TEST_SIGSEGV
|
||||
|
||||
add x0,sp,#(1+ 2)*NBPW
|
||||
call zfind // avoid feint of 0==argc; out: x0= &envp
|
||||
call zfind; mov xauxv,x0 // &Elf64_auxv
|
||||
|
||||
sub sp,sp,#4*NBPW // space for PMASK, SZPK2, ADRU, LENU
|
||||
F_PMASK= 0 * NBPW
|
||||
F_SZPK2= 1 * NBPW
|
||||
F_ADRU= 2 * NBPW
|
||||
F_LENU= 3 * NBPW
|
||||
|
||||
// set xPMASK by finding actual page size in Elf64_auxv
|
||||
1:
|
||||
ldp x1,x2,[x0],#2*NBPW
|
||||
cmp w1,#AT_PAGESZ; beq 2f
|
||||
cbnz w1,1b // AT_NULL
|
||||
mov x2,#PAGE_SIZE // default
|
||||
2:
|
||||
neg xPMASK,x2 // save for folded code
|
||||
str xPMASK,[sp,#F_PMASK]
|
||||
|
||||
call main
|
||||
L00:
|
||||
mov xFOLD,lr
|
||||
|
||||
mov w1,#MFD_EXEC // flags
|
||||
0: // try memfd_create
|
||||
adr x0,strupx
|
||||
do_sys __NR_memfd_create
|
||||
tbz w0,#31,ok_memfd // success
|
||||
cbz w1,no_memfd // already failed twice
|
||||
mov w1,wzr; b 0b // try again without MFD_EXEC
|
||||
no_memfd: // so try /dev/shm
|
||||
O_RDWR= 2
|
||||
O_DIRECTORY= 040000 // 0x04000
|
||||
O_TMPFILE= 020000000 // 0x400000
|
||||
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"
|
||||
.balign 4; 0:
|
||||
ldr w3,[lr],#4 // mode
|
||||
ldr w2,[lr],#4 // flags
|
||||
mov x1,lr // name
|
||||
mov w0,#AT_FDCWD
|
||||
do_sys __NR_openat
|
||||
ok_memfd:
|
||||
mov mfd,w0
|
||||
|
||||
// alloca() for de-compressed stub
|
||||
ldr w0,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||
mov fp,sp
|
||||
sub x0,fp,x0
|
||||
and x0,x0,#-2*NBPW
|
||||
mov sp,x0
|
||||
|
||||
src .req x0
|
||||
lsrc .req w1
|
||||
dst .req x2
|
||||
ldst .req x3
|
||||
xmeth .req x4
|
||||
wmeth .req w4
|
||||
|
||||
// Decompress folded code of this stub
|
||||
mov dst,x0 // ADRU
|
||||
PUSH1(x1); mov ldst,sp // &slot on stack; lzma uses for EOF
|
||||
add src, xFOLD,#sz_b_info + LBINFO - LxFOLD // folded code
|
||||
ldr lsrc, [XFOLD,#sz_cpr + LBINFO - LxFOLD]
|
||||
ldrb wmeth,[xFOLD,#b_method + LBINFO - LxFOLD]
|
||||
TRACE(#1)
|
||||
call f_expand // decompress it
|
||||
POP1(x8) // discard lzma EOF
|
||||
|
||||
.unreq src
|
||||
.unreq lsrc
|
||||
.unreq dst
|
||||
.unreq ldst
|
||||
.unreq xmeth
|
||||
.unreq wmeth
|
||||
|
||||
str xPMASK,[sp] // propagate PAGE_MASK
|
||||
|
||||
// Write de-compressed stub
|
||||
ldr w2,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||
mov x1,sp
|
||||
mov w0,mfd
|
||||
do_sys __NR_write
|
||||
mov sp,fp
|
||||
|
||||
mov arg6,#0 // beginning of file
|
||||
mov arg5w,mfd
|
||||
mov arg4w,#MAP_SHARED // modes
|
||||
mov arg3w,#PROT_READ|PROT_EXEC // FIXME: add PROT_WRITE for DEBUG only
|
||||
ldr arg2w,[xFOLD,#sz_unc + LBINFO - LxFOLD]
|
||||
str arg2,[sp,#F_LENU]
|
||||
mov arg1,#0 // addr (kernel chooses)
|
||||
do_sys __NR_mmap; str x0,[sp,#F_ADRU]; mov xADRU,x0
|
||||
|
||||
mov arg1w,mfd
|
||||
do_sys __NR_close
|
||||
|
||||
// Use the unfolded stub
|
||||
ldr wLENC,[sp,#F_SZPK2]
|
||||
ldr w1,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
|
||||
add lr,xADRU,#3*4 + NBPW // jmp to fold_begin
|
||||
sub wLENC,wLENC,w1
|
||||
str xLENC,[sp,#F_SZPK2]
|
||||
bic w1,w1,#unmap_all_pages
|
||||
add xADRC,xelfa,x1 // &b_info of compressed input data
|
||||
jr lr // goto unfolded stub
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
proc_self_cmdline:
|
||||
.asciz "/proc/self/cmdline"
|
||||
announce_sigaction:
|
||||
@@ -364,7 +265,7 @@ child:
|
||||
mov arg3w,#O_RDONLY
|
||||
adr arg2,proc_self_cmdline
|
||||
mov arg1,#-1 // fake FD_CWD
|
||||
do_sys __NR_openat; mov r_fd,w0 // fd
|
||||
do_sys __NR_openat; mov r_fd,w0
|
||||
mov arg2,sp // buffer
|
||||
mov arg3w,#PATH_MAX
|
||||
do_sys __NR_read
|
||||
@@ -423,7 +324,7 @@ done_maps:
|
||||
mov x0,x16; do_sys __NR_close
|
||||
// end printing of /proc/self/maps
|
||||
|
||||
mov arg1,#0; mov arg2,#0; mov arg3,#0; mov arg4,#0 // paranoia
|
||||
mov arg1,#0; mov arg2,#0 // paranoia
|
||||
do_sys __NR_fork; cbz x0,child
|
||||
parent:
|
||||
b parent // spin; paused by gdb
|
||||
@@ -434,10 +335,10 @@ unsimal: // (dst, value)
|
||||
strb w1,[x0] // terminator
|
||||
ret
|
||||
0:
|
||||
mov w2,#0xcccc
|
||||
movk w2, 0xcccc, lsl 16 // 0xcccccccc ==> 4/5 as 32-bit fraction
|
||||
mov w2,#0xcccd
|
||||
movk w2, 0xcccc, lsl 16 // 0xcccccccd ==> 4/5 as 32-bit fraction
|
||||
umull x2,w1,w2
|
||||
add x2,x2,#0x1000 // BUG? unsimal(p, 730)
|
||||
//add x2,x2,#0x1000 // BUG? unsimal(p, 730)
|
||||
lsr x3,x2,35 // quo(value, 10)
|
||||
add w2,w3,w3,lsl 2 // 5 * quo
|
||||
sub w1,w1,w2,lsl 1 // rem = (val - (10 * quo))
|
||||
@@ -446,7 +347,131 @@ unsimal: // (dst, value)
|
||||
1:
|
||||
ldp lr,x1,[sp],#2 * NBPW; add w1,w1,#'0'; strb w1,[x0],#1
|
||||
ret
|
||||
#endif // TEST_SIGSEGV
|
||||
|
||||
cancel_sigsegv:
|
||||
mov x3,#8 // 8 bytes ==> 64 bits
|
||||
mov x2,xzr // no old
|
||||
mov x1,xzr // no new
|
||||
mov w0,#SIGSEGV
|
||||
do_sys __NR_sigaction
|
||||
ret
|
||||
|
||||
L300:
|
||||
|
||||
section ELFMAINX2
|
||||
add x0,sp,#(1+ 2)*NBPW
|
||||
call zfind // avoid feint of 0==argc; out: x0= &envp
|
||||
call zfind; mov xauxv,x0 // &Elf64_auxv
|
||||
|
||||
sub sp,sp,#4*NBPW // space for PMASK, SZPK2, ADRU, LENU
|
||||
F_PMASK= 0 * NBPW
|
||||
F_SZPK2= 1 * NBPW
|
||||
F_ADRU= 2 * NBPW
|
||||
F_LENU= 3 * NBPW
|
||||
|
||||
// set xPMASK by finding actual page size in Elf64_auxv
|
||||
1:
|
||||
ldp x1,x2,[x0],#2*NBPW
|
||||
cmp w1,#AT_PAGESZ; beq 2f
|
||||
cbnz w1,1b // AT_NULL
|
||||
mov x2,#PAGE_SIZE // default
|
||||
2:
|
||||
neg xPMASK,x2 // save for folded code
|
||||
str xPMASK,[sp,#F_PMASK]
|
||||
|
||||
adr xelfa,sz_pack2
|
||||
ldr w0,[xelfa] // sz_pack2 causes unknown R_AARCH64_LD_PREL_LO19
|
||||
str x0,[sp,#F_SZPK2]
|
||||
sub xelfa,xelfa,w0,uxtw
|
||||
call main
|
||||
mov xFOLD,lr
|
||||
|
||||
mov w1,#MFD_EXEC // flags
|
||||
0: // try memfd_create
|
||||
adr x0,strupx
|
||||
do_sys __NR_memfd_create
|
||||
tbz w0,#31,ok_memfd // success
|
||||
cbz w1,no_memfd // already failed twice
|
||||
mov w1,wzr; b 0b // try again without MFD_EXEC
|
||||
no_memfd: // so try /dev/shm
|
||||
O_RDWR= 2
|
||||
O_DIRECTORY= 040000 // 0x04000
|
||||
O_TMPFILE= 020000000 // 0x400000
|
||||
call 0f; .int 0700, O_RDWR|O_DIRECTORY|O_TMPFILE; .asciz "/dev/shm"
|
||||
.balign 4; 0:
|
||||
ldr w3,[lr],#4 // mode
|
||||
ldr w2,[lr],#4 // flags
|
||||
mov x1,lr // name
|
||||
mov w0,#AT_FDCWD
|
||||
do_sys __NR_openat
|
||||
ok_memfd:
|
||||
mov mfd,w0
|
||||
|
||||
// alloca() for de-compressed stub
|
||||
ldr w0,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||
mov fp,sp
|
||||
sub x0,fp,x0
|
||||
and x0,x0,#-2*NBPW
|
||||
mov sp,x0
|
||||
|
||||
src .req x0
|
||||
lsrc .req w1
|
||||
dst .req x2
|
||||
ldst .req x3
|
||||
xmeth .req x4
|
||||
wmeth .req w4
|
||||
|
||||
// Decompress folded code of this stub
|
||||
mov dst,x0 // ADRU
|
||||
PUSH1(x1); mov ldst,sp // &slot on stack; lzma uses for EOF
|
||||
add src, xFOLD,#sz_b_info + LBINFO - LxFOLD // folded code
|
||||
ldr lsrc, [XFOLD,#sz_cpr + LBINFO - LxFOLD]
|
||||
ldrb wmeth,[xFOLD,#b_method + LBINFO - LxFOLD]
|
||||
TRACE(#1)
|
||||
call f_expand // decompress it
|
||||
POP1(x8) // discard lzma EOF
|
||||
|
||||
.unreq src
|
||||
.unreq lsrc
|
||||
.unreq dst
|
||||
.unreq ldst
|
||||
.unreq xmeth
|
||||
.unreq wmeth
|
||||
|
||||
str xPMASK,[sp] // propagate PAGE_MASK D_PMASK
|
||||
str cancel_SEGV,[sp, #D_XSIGSEGV]
|
||||
|
||||
// Write de-compressed stub
|
||||
ldr w2,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
|
||||
mov x1,sp
|
||||
mov w0,mfd
|
||||
do_sys __NR_write
|
||||
mov sp,fp
|
||||
|
||||
mov arg6,#0 // beginning of file
|
||||
mov arg5w,mfd
|
||||
mov arg4w,#MAP_SHARED // modes
|
||||
mov arg3w,#PROT_READ|PROT_EXEC // FIXME: add PROT_WRITE for DEBUG only
|
||||
ldr arg2w,[xFOLD,#sz_unc + LBINFO - LxFOLD]
|
||||
str arg2,[sp,#F_LENU]
|
||||
mov arg1,#0 // addr (kernel chooses)
|
||||
do_sys __NR_mmap; str x0,[sp,#F_ADRU]; mov xADRU,x0
|
||||
|
||||
mov arg1w,mfd
|
||||
do_sys __NR_close
|
||||
|
||||
// Use the unfolded stub
|
||||
ldr wLENC,[sp,#F_SZPK2]
|
||||
ldr w1,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
|
||||
add lr,xADRU,#D_FOLD // jmp to fold_begin
|
||||
sub wLENC,wLENC,w1
|
||||
str xLENC,[sp,#F_SZPK2]
|
||||
bic w1,w1,#unmap_all_pages
|
||||
add xADRC,xelfa,x1 // &b_info of compressed input data
|
||||
jr lr // goto unfolded stub
|
||||
|
||||
cancel_dummy:
|
||||
ret
|
||||
|
||||
zfind:
|
||||
ldr x1,[x0],#NBPW; cbnz x1,zfind
|
||||
@@ -569,12 +594,8 @@ strupx:
|
||||
.asciz "upx"
|
||||
.balign 4
|
||||
|
||||
main:
|
||||
main: // In: w0= sz_pack2
|
||||
lr .req x30
|
||||
add xelfa,lr,#sz_pack2 - L00 // &sz_pack2
|
||||
ldr w0,[xelfa]
|
||||
sub xelfa,xelfa,w0,uxtw
|
||||
str x0,[sp,#F_SZPK2]
|
||||
callr lr
|
||||
LxFOLD:
|
||||
LOBINFO:
|
||||
|
||||
@@ -84,16 +84,16 @@ PATH_MAX= 4096
|
||||
#define OVERHEAD 2048
|
||||
#include "MAX_ELF_HDR.S"
|
||||
|
||||
PAGE_MASK: .quad ~0<<12 // default
|
||||
get_page_mask: .globl get_page_mask
|
||||
PAGE_MASK: .quad ~0<<12 // default D_PMASK
|
||||
cancel_sigsegv: .quad 0 // D_XSIGSEGV
|
||||
|
||||
get_page_mask: .globl get_page_mask // D_GETPM
|
||||
ldr x0,PAGE_MASK
|
||||
ret
|
||||
|
||||
bits_privanon: // known offset (NBPW + 2*4)
|
||||
bits_privanon: // known offset (2*NBPW + 2*4) D_PRIVANON
|
||||
.int MAP_PRIVATE | MAP_ANONYMOUS // Linux default; else QNX
|
||||
|
||||
fold_begin: // known offset (NBPW + 3*4)
|
||||
//// bkpt // DEBUG
|
||||
fold_begin: // known offset D_FOLD = (2*NBPW + 3*4)
|
||||
b L10
|
||||
|
||||
// In: sp/ PMASK,LENC,ADRU,LENU, x0,x1, argc,argv,...
|
||||
@@ -271,16 +271,8 @@ no_env_pse:
|
||||
add sp,sp,#MAX_ELF_HDR_64 + OVERHEAD // un-alloca
|
||||
mov xfexp,x0 // entry address
|
||||
|
||||
#if TEST_SIGSEGV
|
||||
// Uninstall SIGSEGV handler
|
||||
SIGSEGV= 11
|
||||
__NR_sigaction = 0x86 // 134
|
||||
mov w3,#8 // minimal byte count
|
||||
mov x2,#0 // no old
|
||||
mov x1,#0 // no new
|
||||
mov w0,#SIGSEGV
|
||||
do_sys __NR_sigaction
|
||||
#endif // TEST_SIGSEGV
|
||||
ldr x0,cancel_sigsegv
|
||||
blr x0 // callr
|
||||
|
||||
// Discard pages of compressed input data (includes [ADRC,+LENC) )
|
||||
ldr x1,[xelfa,#p_memsz+sz_Phdr+sz_Ehdr] // Phdr[C_TEXT= 1].p_memsz
|
||||
|
||||
+23
-4
@@ -2,17 +2,36 @@ file format elf64-x86-64
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 0193 0 0 040 2**0 CONTENTS
|
||||
1 ELFMAINZ 04 0 0 01d4 2**2 CONTENTS
|
||||
0 ELFMAINX 010 0 0 040 2**0 CONTENTS
|
||||
1 ELFSIGSEGV 0310 0 0 050 2**0 CONTENTS
|
||||
2 ELFMAINX2 0194 0 0 0360 2**0 CONTENTS
|
||||
3 ELFMAINZ 04 0 0 04f4 2**2 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
0000000000000000 l d ELFMAINX 0 ELFMAINX
|
||||
0000000000000000 l d ELFMAINX2 0 ELFMAINX2
|
||||
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
0000000000000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||
0000000000000000 g ELFMAINX 0 _start
|
||||
0000000000000000 *UND* 0 O_BINFO
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000073 R_X86_64_PC32 ELFMAINZ+0xfffffffffffffffc
|
||||
000000000000000c R_X86_64_PC32 ELFMAINX2+0x0000000000000158
|
||||
|
||||
RELOCATION RECORDS FOR [ELFSIGSEGV]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000000000a2 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
0000000000000250 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
0000000000000262 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
000000000000026a R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
00000000000002a5 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
00000000000002bf R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
00000000000002d4 R_X86_64_PC32 ELFMAINX2+0x000000000000015d
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||
OFFSET TYPE VALUE
|
||||
000000000000005e R_X86_64_PC32 ELFMAINX+0xfffffffffffffff8
|
||||
000000000000006a R_X86_64_PC32 ELFMAINZ+0xfffffffffffffffc
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
|
||||
+8
-8
@@ -8,14 +8,14 @@ Linker script and memory map
|
||||
|
||||
0x0000000000000040 . = SIZEOF_HEADERS
|
||||
|
||||
.text 0x0000000000000000 0x9cd
|
||||
.text 0x0000000000000000 0x165 tmp/amd64-linux.elf-fold.o
|
||||
0x000000000000015d get_page_mask
|
||||
*fill* 0x0000000000000165 0x3 00
|
||||
.text 0x0000000000000168 0x0 tmp/amd64-expand.o
|
||||
.text 0x0000000000000168 0x865 tmp/amd64-linux.elf-main2.o
|
||||
0x0000000000000898 upx_main2
|
||||
0x00000000000002c6 underlay
|
||||
.text 0x0000000000000000 0x9d9
|
||||
.text 0x0000000000000000 0x173 tmp/amd64-linux.elf-fold.o
|
||||
0x000000000000016b get_page_mask
|
||||
*fill* 0x0000000000000173 0x1 00
|
||||
.text 0x0000000000000174 0x0 tmp/amd64-expand.o
|
||||
.text 0x0000000000000174 0x865 tmp/amd64-linux.elf-main2.o
|
||||
0x00000000000008a4 upx_main2
|
||||
0x00000000000002d2 underlay
|
||||
|
||||
UMF_LINUX 0x0000000000000000 0xf9
|
||||
UMF_LINUX 0x0000000000000000 0xf9 tmp/amd64-linux.elf-upxfd_linux.o
|
||||
|
||||
+68
-61
@@ -2,53 +2,86 @@ file format elf32-littlearm
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
||||
1 HUMF_A 04 0 0 034 2**0 CONTENTS
|
||||
2 HUMF_L 04 0 0 038 2**0 CONTENTS
|
||||
3 UMF_ANDROID 0544 0 0 03c 2**2 CONTENTS
|
||||
4 UMF_LINUX 0144 0 0 0580 2**2 CONTENTS
|
||||
5 ELFMAINX 0264 0 0 06c4 2**2 CONTENTS
|
||||
6 ELFMAINZ 0218 0264 0264 0928 2**0 CONTENTS
|
||||
0 ELFSIGSEGV 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINX2 0234 0 0 034 2**2 CONTENTS
|
||||
2 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||
3 HUMF_A 04 0 0 0268 2**0 CONTENTS
|
||||
4 HUMF_L 04 0 0 026c 2**0 CONTENTS
|
||||
5 UMF_ANDROID 0544 0 0 0270 2**2 CONTENTS
|
||||
6 UMF_LINUX 0144 0 0 07b4 2**2 CONTENTS
|
||||
7 ELFMAINX 028 0 0 08f8 2**0 CONTENTS
|
||||
8 ELFMAINZ 0218 028 028 0920 2**0 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINX2 0 ELFMAINX2
|
||||
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
||||
00000000 l d UMF_LINUX 0 UMF_LINUX
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000264 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000028 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||
00000000 l d ELFMAINY 0 ELFMAINY
|
||||
00000000 l d HUMF_A 0 HUMF_A
|
||||
00000000 l d HUMF_L 0 HUMF_L
|
||||
00000258 g ELFMAINX 0 get_page_mask
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000228 g ELFMAINX2 0 get_page_mask
|
||||
00000000 *UND* 0 MFLG
|
||||
00000350 g ELFMAINZ 0 getpid
|
||||
00000264 g ELFMAINX 0 upx_mmap_and_fd
|
||||
0000026c g ELFMAINZ 0 memcpy
|
||||
00000114 g ELFMAINZ 0 getpid
|
||||
00000234 g ELFMAINX2 0 upx_mmap_and_fd
|
||||
00000030 g ELFMAINZ 0 memcpy
|
||||
00000000 *UND* 0 O_BINFO
|
||||
00000404 g ELFMAINZ 0 Psync
|
||||
000002b0 g ELFMAINZ 0 mempcpy
|
||||
0000033c g ELFMAINZ 0 ftruncate
|
||||
00000364 g ELFMAINZ 0 lseek
|
||||
000001c8 g ELFMAINZ 0 Psync
|
||||
00000074 g ELFMAINZ 0 mempcpy
|
||||
00000100 g ELFMAINZ 0 ftruncate
|
||||
00000128 g ELFMAINZ 0 lseek
|
||||
000002c4 g F UMF_ANDROID 0280 upx_mmap_and_fd_android
|
||||
00000434 g ELFMAINZ 0 mmap
|
||||
000001f8 g ELFMAINZ 0 mmap
|
||||
00000000 g F UMF_LINUX 0144 upx_mmap_and_fd_linux
|
||||
000003c8 g ELFMAINZ 0 uname
|
||||
0000018c g ELFMAINZ 0 uname
|
||||
00000000 g ELFMAINY 0 end_decompress
|
||||
000003f0 g ELFMAINZ 0 write
|
||||
00000314 g ELFMAINZ 0 fdatasync
|
||||
00000264 g ELFMAINZ 0 get_upxfn_path
|
||||
000002cc g ELFMAINZ 0 memfd_create
|
||||
000001b4 g ELFMAINZ 0 write
|
||||
000000d8 g ELFMAINZ 0 fdatasync
|
||||
00000028 g ELFMAINZ 0 get_upxfn_path
|
||||
00000090 g ELFMAINZ 0 memfd_create
|
||||
00000004 g ELFMAINX 0 _start
|
||||
000003a0 g ELFMAINZ 0 read
|
||||
000003dc g ELFMAINZ 0 unlink
|
||||
00000290 g ELFMAINZ 0 memset
|
||||
00000194 g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
||||
0000042c g ELFMAINZ 0 my_bkpt
|
||||
00000328 g ELFMAINZ 0 fsync
|
||||
000003b4 g ELFMAINZ 0 stat
|
||||
0000047c g ELFMAINZ 0 cpr0
|
||||
00000300 g ELFMAINZ 0 exit
|
||||
0000038c g ELFMAINZ 0 open
|
||||
00000378 g ELFMAINZ 0 mkdir
|
||||
000002ec g ELFMAINZ 0 close
|
||||
00000164 g ELFMAINZ 0 read
|
||||
000001a0 g ELFMAINZ 0 unlink
|
||||
00000054 g ELFMAINZ 0 memset
|
||||
00000164 g F ELFMAINX2 0c4 ucl_nrv2b_decompress_8
|
||||
000001f0 g ELFMAINZ 0 my_bkpt
|
||||
000000ec g ELFMAINZ 0 fsync
|
||||
00000178 g ELFMAINZ 0 stat
|
||||
00000240 g ELFMAINZ 0 cpr0
|
||||
000000c4 g ELFMAINZ 0 exit
|
||||
00000150 g ELFMAINZ 0 open
|
||||
0000013c g ELFMAINZ 0 mkdir
|
||||
000000b0 g ELFMAINZ 0 close
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_ARM_PC24 ELFMAINX2
|
||||
00000008 R_ARM_PC24 ELFMAINX2
|
||||
00000014 R_ARM_PC24 ELFMAINX2
|
||||
0000001c R_ARM_PC24 ELFMAINX2
|
||||
00000030 R_ARM_PC24 ELFMAINZ
|
||||
00000068 R_ARM_PC24 ELFMAINX2
|
||||
00000078 R_ARM_PC24 upx_mmap_and_fd
|
||||
00000080 R_ARM_PC24 ELFMAINX2
|
||||
000000b0 R_ARM_PC24 ELFMAINX2
|
||||
000000ec R_ARM_PC24 ELFMAINX2
|
||||
0000015c R_ARM_PC24 ELFMAINX2
|
||||
00000174 R_ARM_PC24 ELFMAINX2
|
||||
000001ac R_ARM_PC24 ELFMAINX2
|
||||
000001b4 R_ARM_PC24 ELFMAINX2
|
||||
000001b8 R_ARM_PC24 ELFMAINX2
|
||||
000001c8 R_ARM_PC24 ELFMAINX2
|
||||
000001cc R_ARM_PC24 ELFMAINX2
|
||||
000001d0 R_ARM_PC24 ELFMAINX2
|
||||
000001dc R_ARM_PC24 ELFMAINX2
|
||||
000001ec R_ARM_PC24 ELFMAINX2
|
||||
000001f0 R_ARM_PC24 ELFMAINX2
|
||||
000001f8 R_ARM_PC24 ELFMAINX2
|
||||
00000200 R_ARM_PC24 ELFMAINX2
|
||||
00000204 R_ARM_PC24 ELFMAINX2
|
||||
00000220 R_ARM_PC24 ELFMAINX2
|
||||
00000224 R_ARM_PC24 ELFMAINX2
|
||||
|
||||
RELOCATION RECORDS FOR [HUMF_A]:
|
||||
OFFSET TYPE VALUE
|
||||
@@ -171,32 +204,6 @@ OFFSET TYPE VALUE
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_ARM_ABS32 MFLG
|
||||
00000010 R_ARM_PC24 ELFMAINX
|
||||
00000014 R_ARM_PC24 ELFMAINX
|
||||
00000020 R_ARM_PC24 ELFMAINX
|
||||
00000028 R_ARM_PC24 ELFMAINX
|
||||
00000058 R_ARM_PC24 ELFMAINZ
|
||||
00000090 R_ARM_PC24 ELFMAINX
|
||||
000000a0 R_ARM_PC24 upx_mmap_and_fd
|
||||
000000a8 R_ARM_PC24 ELFMAINX
|
||||
000000d8 R_ARM_PC24 ELFMAINX
|
||||
00000114 R_ARM_PC24 ELFMAINX
|
||||
0000018c R_ARM_PC24 ELFMAINX
|
||||
000001a4 R_ARM_PC24 ELFMAINX
|
||||
000001dc R_ARM_PC24 ELFMAINX
|
||||
000001e4 R_ARM_PC24 ELFMAINX
|
||||
000001e8 R_ARM_PC24 ELFMAINX
|
||||
000001f8 R_ARM_PC24 ELFMAINX
|
||||
000001fc R_ARM_PC24 ELFMAINX
|
||||
00000200 R_ARM_PC24 ELFMAINX
|
||||
0000020c R_ARM_PC24 ELFMAINX
|
||||
0000021c R_ARM_PC24 ELFMAINX
|
||||
00000220 R_ARM_PC24 ELFMAINX
|
||||
00000228 R_ARM_PC24 ELFMAINX
|
||||
00000230 R_ARM_PC24 ELFMAINX
|
||||
00000234 R_ARM_PC24 ELFMAINX
|
||||
00000250 R_ARM_PC24 ELFMAINX
|
||||
00000254 R_ARM_PC24 ELFMAINX
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
|
||||
+44
-37
@@ -2,25 +2,29 @@ file format elf32-littlearm
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINZ 0218 0 0 034 2**0 CONTENTS
|
||||
2 HUMF_A 04 0 0 024c 2**0 CONTENTS
|
||||
3 HUMF_L 04 0 0 0250 2**0 CONTENTS
|
||||
4 UMF_ANDROID 054c 0 0 0254 2**2 CONTENTS
|
||||
5 UMF_LINUX 0140 0 0 07a0 2**2 CONTENTS
|
||||
6 ELFMAINX 0264 0 0 08e0 2**2 CONTENTS
|
||||
0 ELFSIGSEGV 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINX2 0234 0 0 034 2**2 CONTENTS
|
||||
2 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||
3 ELFMAINZ 0218 0 0 0268 2**0 CONTENTS
|
||||
4 HUMF_A 04 0 0 0480 2**0 CONTENTS
|
||||
5 HUMF_L 04 0 0 0484 2**0 CONTENTS
|
||||
6 UMF_ANDROID 054c 0 0 0488 2**2 CONTENTS
|
||||
7 UMF_LINUX 0140 0 0 09d4 2**2 CONTENTS
|
||||
8 ELFMAINX 028 0 0 0b14 2**0 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINX2 0 ELFMAINX2
|
||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
||||
00000000 l d UMF_LINUX 0 UMF_LINUX
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||
00000000 l d ELFMAINY 0 ELFMAINY
|
||||
00000000 l d HUMF_A 0 HUMF_A
|
||||
00000000 l d HUMF_L 0 HUMF_L
|
||||
00000258 g ELFMAINX 0 get_page_mask
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000228 g ELFMAINX2 0 get_page_mask
|
||||
00000000 *UND* 0 MFLG
|
||||
000000ec g ELFMAINZ 0 getpid
|
||||
00000264 g ELFMAINX 0 upx_mmap_and_fd
|
||||
00000234 g ELFMAINX2 0 upx_mmap_and_fd
|
||||
00000008 g ELFMAINZ 0 memcpy
|
||||
00000000 *UND* 0 O_BINFO
|
||||
000001a0 g ELFMAINZ 0 Psync
|
||||
@@ -40,7 +44,7 @@ SYMBOL TABLE:
|
||||
0000013c g ELFMAINZ 0 read
|
||||
00000178 g ELFMAINZ 0 unlink
|
||||
0000002c g ELFMAINZ 0 memset
|
||||
00000194 g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
||||
00000164 g F ELFMAINX2 0c4 ucl_nrv2b_decompress_8
|
||||
000001c8 g ELFMAINZ 0 my_bkpt
|
||||
000000c4 g ELFMAINZ 0 fsync
|
||||
00000150 g ELFMAINZ 0 stat
|
||||
@@ -50,6 +54,35 @@ SYMBOL TABLE:
|
||||
00000114 g ELFMAINZ 0 mkdir
|
||||
00000088 g ELFMAINZ 0 close
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_ARM_PC24 ELFMAINX2
|
||||
00000008 R_ARM_PC24 ELFMAINX2
|
||||
00000014 R_ARM_PC24 ELFMAINX2
|
||||
0000001c R_ARM_PC24 ELFMAINX2
|
||||
00000030 R_ARM_PC24 ELFMAINZ
|
||||
00000068 R_ARM_PC24 ELFMAINX2
|
||||
00000078 R_ARM_PC24 upx_mmap_and_fd
|
||||
00000080 R_ARM_PC24 ELFMAINX2
|
||||
000000b0 R_ARM_PC24 ELFMAINX2
|
||||
000000ec R_ARM_PC24 ELFMAINX2
|
||||
0000015c R_ARM_PC24 ELFMAINX2
|
||||
00000174 R_ARM_PC24 ELFMAINX2
|
||||
000001ac R_ARM_PC24 ELFMAINX2
|
||||
000001b4 R_ARM_PC24 ELFMAINX2
|
||||
000001b8 R_ARM_PC24 ELFMAINX2
|
||||
000001c8 R_ARM_PC24 ELFMAINX2
|
||||
000001cc R_ARM_PC24 ELFMAINX2
|
||||
000001d0 R_ARM_PC24 ELFMAINX2
|
||||
000001dc R_ARM_PC24 ELFMAINX2
|
||||
000001ec R_ARM_PC24 ELFMAINX2
|
||||
000001f0 R_ARM_PC24 ELFMAINX2
|
||||
000001f8 R_ARM_PC24 ELFMAINX2
|
||||
00000200 R_ARM_PC24 ELFMAINX2
|
||||
00000204 R_ARM_PC24 ELFMAINX2
|
||||
00000220 R_ARM_PC24 ELFMAINX2
|
||||
00000224 R_ARM_PC24 ELFMAINX2
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_ARM_PC24 ELFMAINZ
|
||||
@@ -183,29 +216,3 @@ OFFSET TYPE VALUE
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_ARM_ABS32 MFLG
|
||||
00000010 R_ARM_PC24 ELFMAINX
|
||||
00000014 R_ARM_PC24 ELFMAINX
|
||||
00000020 R_ARM_PC24 ELFMAINX
|
||||
00000028 R_ARM_PC24 ELFMAINX
|
||||
00000058 R_ARM_PC24 ELFMAINZ
|
||||
00000090 R_ARM_PC24 ELFMAINX
|
||||
000000a0 R_ARM_PC24 upx_mmap_and_fd
|
||||
000000a8 R_ARM_PC24 ELFMAINX
|
||||
000000d8 R_ARM_PC24 ELFMAINX
|
||||
00000114 R_ARM_PC24 ELFMAINX
|
||||
0000018c R_ARM_PC24 ELFMAINX
|
||||
000001a4 R_ARM_PC24 ELFMAINX
|
||||
000001dc R_ARM_PC24 ELFMAINX
|
||||
000001e4 R_ARM_PC24 ELFMAINX
|
||||
000001e8 R_ARM_PC24 ELFMAINX
|
||||
000001f8 R_ARM_PC24 ELFMAINX
|
||||
000001fc R_ARM_PC24 ELFMAINX
|
||||
00000200 R_ARM_PC24 ELFMAINX
|
||||
0000020c R_ARM_PC24 ELFMAINX
|
||||
0000021c R_ARM_PC24 ELFMAINX
|
||||
00000220 R_ARM_PC24 ELFMAINX
|
||||
00000228 R_ARM_PC24 ELFMAINX
|
||||
00000230 R_ARM_PC24 ELFMAINX
|
||||
00000234 R_ARM_PC24 ELFMAINX
|
||||
00000250 R_ARM_PC24 ELFMAINX
|
||||
00000254 R_ARM_PC24 ELFMAINX
|
||||
|
||||
+17
-8
@@ -2,25 +2,34 @@ file format elf64-littleaarch64
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 0228 0 0 040 2**2 CONTENTS
|
||||
1 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||
2 ELFMAINZ 01c 0 0 0268 2**2 CONTENTS
|
||||
0 ELFMAINX 010 0 0 040 2**0 CONTENTS
|
||||
1 ELFSIGSEGV 0378 0 0 050 2**2 CONTENTS
|
||||
2 ELFMAINX2 0234 0 0 03c8 2**2 CONTENTS
|
||||
3 ELFMAINY 0 0 0 05fc 2**0 CONTENTS
|
||||
4 ELFMAINZ 0c 0 0 05fc 2**2 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
0000000000000000 l d ELFMAINX 0 ELFMAINX
|
||||
0000000000000000 l d ELFMAINX2 0 ELFMAINX2
|
||||
0000000000000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
0000000000000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||
0000000000000000 l d ELFMAINY 0 ELFMAINY
|
||||
0000000000000000 *UND* 0 MFLG
|
||||
0000000000000004 g ELFMAINX 0 _start
|
||||
000000000000014c g F ELFMAINX 0dc ucl_nrv2b_decompress_32
|
||||
0000000000000158 g F ELFMAINX2 0dc ucl_nrv2b_decompress_32
|
||||
0000000000000000 g ELFMAINY 0 end_decompress
|
||||
0000000000000000 *UND* 0 O_BINFO
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000000 R_AARCH64_ABS32 MFLG
|
||||
000000000000003c R_AARCH64_CALL26 ELFMAINZ+0x0000000000000004
|
||||
0000000000000048 R_AARCH64_ADR_PREL_LO21 ELFMAINZ
|
||||
000000000000000c R_AARCH64_ADR_PREL_LO21 ELFMAINX2+0x0000000000000148
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000030 R_AARCH64_ADR_PREL_LO21 ELFMAINX-0x0000000000000004
|
||||
0000000000000040 R_AARCH64_CALL26 ELFMAINZ+0x0000000000000004
|
||||
000000000000004c R_AARCH64_ADR_PREL_LO21 ELFMAINZ
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000018 R_AARCH64_ABS32 O_BINFO
|
||||
0000000000000008 R_AARCH64_ABS32 O_BINFO
|
||||
|
||||
+13
-13
@@ -12,19 +12,19 @@ LOAD tmp/arm64-expand.o
|
||||
LOAD tmp/arm64-linux.elf-main2.o
|
||||
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
|
||||
|
||||
.text 0x0000000000000000 0xb84
|
||||
.text 0x0000000000000000 0x2c4 tmp/arm64-linux.elf-fold.o
|
||||
0x0000000000000008 get_page_mask
|
||||
0x0000000000000018 mmap_privanon
|
||||
0x0000000000000028 Psync
|
||||
0x0000000000000098 msync
|
||||
0x00000000000000a4 mmap
|
||||
0x00000000000000c0 Pprotect
|
||||
0x00000000000000c0 mprotect
|
||||
.text 0x00000000000002c4 0x0 tmp/arm64-expand.o
|
||||
.text 0x00000000000002c4 0x8c0 tmp/arm64-linux.elf-main2.o
|
||||
0x00000000000009e0 underlay
|
||||
0x0000000000000a4c upx_main2
|
||||
.text 0x0000000000000000 0xb94
|
||||
.text 0x0000000000000000 0x2d4 tmp/arm64-linux.elf-fold.o
|
||||
0x0000000000000010 get_page_mask
|
||||
0x0000000000000020 mmap_privanon
|
||||
0x0000000000000030 Psync
|
||||
0x00000000000000a0 msync
|
||||
0x00000000000000ac mmap
|
||||
0x00000000000000c8 Pprotect
|
||||
0x00000000000000c8 mprotect
|
||||
.text 0x00000000000002d4 0x0 tmp/arm64-expand.o
|
||||
.text 0x00000000000002d4 0x8c0 tmp/arm64-linux.elf-main2.o
|
||||
0x00000000000009f0 underlay
|
||||
0x0000000000000a5c upx_main2
|
||||
|
||||
.data 0x0000000000000000 0x0
|
||||
.data 0x0000000000000000 0x0 tmp/arm64-linux.elf-fold.o
|
||||
|
||||
+44
-37
@@ -2,25 +2,29 @@ file format elf32-bigarm
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINY 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINZ 0218 0 0 034 2**0 CONTENTS
|
||||
2 HUMF_A 04 0 0 024c 2**0 CONTENTS
|
||||
3 HUMF_L 04 0 0 0250 2**0 CONTENTS
|
||||
4 UMF_ANDROID 0544 0 0 0254 2**2 CONTENTS
|
||||
5 UMF_LINUX 0144 0 0 0798 2**2 CONTENTS
|
||||
6 ELFMAINX 0264 0 0 08dc 2**2 CONTENTS
|
||||
0 ELFSIGSEGV 0 0 0 034 2**0 CONTENTS
|
||||
1 ELFMAINX2 0234 0 0 034 2**2 CONTENTS
|
||||
2 ELFMAINY 0 0 0 0268 2**0 CONTENTS
|
||||
3 ELFMAINZ 0218 0 0 0268 2**0 CONTENTS
|
||||
4 HUMF_A 04 0 0 0480 2**0 CONTENTS
|
||||
5 HUMF_L 04 0 0 0484 2**0 CONTENTS
|
||||
6 UMF_ANDROID 0544 0 0 0488 2**2 CONTENTS
|
||||
7 UMF_LINUX 0144 0 0 09cc 2**2 CONTENTS
|
||||
8 ELFMAINX 028 0 0 0b10 2**0 CONTENTS
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINX2 0 ELFMAINX2
|
||||
00000000 l d ELFMAINZ 0 ELFMAINZ
|
||||
00000000 l d UMF_ANDROID 0 UMF_ANDROID
|
||||
00000000 l d UMF_LINUX 0 UMF_LINUX
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000000 l d ELFSIGSEGV 0 ELFSIGSEGV
|
||||
00000000 l d ELFMAINY 0 ELFMAINY
|
||||
00000000 l d HUMF_A 0 HUMF_A
|
||||
00000000 l d HUMF_L 0 HUMF_L
|
||||
00000258 g ELFMAINX 0 get_page_mask
|
||||
00000000 l d ELFMAINX 0 ELFMAINX
|
||||
00000228 g ELFMAINX2 0 get_page_mask
|
||||
00000000 *UND* 0 MFLG
|
||||
000000ec g ELFMAINZ 0 getpid
|
||||
00000264 g ELFMAINX 0 upx_mmap_and_fd
|
||||
00000234 g ELFMAINX2 0 upx_mmap_and_fd
|
||||
00000008 g ELFMAINZ 0 memcpy
|
||||
00000000 *UND* 0 O_BINFO
|
||||
000001a0 g ELFMAINZ 0 Psync
|
||||
@@ -40,7 +44,7 @@ SYMBOL TABLE:
|
||||
0000013c g ELFMAINZ 0 read
|
||||
00000178 g ELFMAINZ 0 unlink
|
||||
0000002c g ELFMAINZ 0 memset
|
||||
00000194 g F ELFMAINX 0c4 ucl_nrv2b_decompress_8
|
||||
00000164 g F ELFMAINX2 0c4 ucl_nrv2b_decompress_8
|
||||
000001c8 g ELFMAINZ 0 my_bkpt
|
||||
000000c4 g ELFMAINZ 0 fsync
|
||||
00000150 g ELFMAINZ 0 stat
|
||||
@@ -50,6 +54,35 @@ SYMBOL TABLE:
|
||||
00000114 g ELFMAINZ 0 mkdir
|
||||
00000088 g ELFMAINZ 0 close
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX2]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_ARM_PC24 ELFMAINX2
|
||||
00000008 R_ARM_PC24 ELFMAINX2
|
||||
00000014 R_ARM_PC24 ELFMAINX2
|
||||
0000001c R_ARM_PC24 ELFMAINX2
|
||||
00000030 R_ARM_PC24 ELFMAINZ
|
||||
00000068 R_ARM_PC24 ELFMAINX2
|
||||
00000078 R_ARM_PC24 upx_mmap_and_fd
|
||||
00000080 R_ARM_PC24 ELFMAINX2
|
||||
000000b0 R_ARM_PC24 ELFMAINX2
|
||||
000000ec R_ARM_PC24 ELFMAINX2
|
||||
0000015c R_ARM_PC24 ELFMAINX2
|
||||
00000174 R_ARM_PC24 ELFMAINX2
|
||||
000001ac R_ARM_PC24 ELFMAINX2
|
||||
000001b4 R_ARM_PC24 ELFMAINX2
|
||||
000001b8 R_ARM_PC24 ELFMAINX2
|
||||
000001c8 R_ARM_PC24 ELFMAINX2
|
||||
000001cc R_ARM_PC24 ELFMAINX2
|
||||
000001d0 R_ARM_PC24 ELFMAINX2
|
||||
000001dc R_ARM_PC24 ELFMAINX2
|
||||
000001ec R_ARM_PC24 ELFMAINX2
|
||||
000001f0 R_ARM_PC24 ELFMAINX2
|
||||
000001f8 R_ARM_PC24 ELFMAINX2
|
||||
00000200 R_ARM_PC24 ELFMAINX2
|
||||
00000204 R_ARM_PC24 ELFMAINX2
|
||||
00000220 R_ARM_PC24 ELFMAINX2
|
||||
00000224 R_ARM_PC24 ELFMAINX2
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_ARM_PC24 ELFMAINZ
|
||||
@@ -181,29 +214,3 @@ OFFSET TYPE VALUE
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_ARM_ABS32 MFLG
|
||||
00000010 R_ARM_PC24 ELFMAINX
|
||||
00000014 R_ARM_PC24 ELFMAINX
|
||||
00000020 R_ARM_PC24 ELFMAINX
|
||||
00000028 R_ARM_PC24 ELFMAINX
|
||||
00000058 R_ARM_PC24 ELFMAINZ
|
||||
00000090 R_ARM_PC24 ELFMAINX
|
||||
000000a0 R_ARM_PC24 upx_mmap_and_fd
|
||||
000000a8 R_ARM_PC24 ELFMAINX
|
||||
000000d8 R_ARM_PC24 ELFMAINX
|
||||
00000114 R_ARM_PC24 ELFMAINX
|
||||
0000018c R_ARM_PC24 ELFMAINX
|
||||
000001a4 R_ARM_PC24 ELFMAINX
|
||||
000001dc R_ARM_PC24 ELFMAINX
|
||||
000001e4 R_ARM_PC24 ELFMAINX
|
||||
000001e8 R_ARM_PC24 ELFMAINX
|
||||
000001f8 R_ARM_PC24 ELFMAINX
|
||||
000001fc R_ARM_PC24 ELFMAINX
|
||||
00000200 R_ARM_PC24 ELFMAINX
|
||||
0000020c R_ARM_PC24 ELFMAINX
|
||||
0000021c R_ARM_PC24 ELFMAINX
|
||||
00000220 R_ARM_PC24 ELFMAINX
|
||||
00000228 R_ARM_PC24 ELFMAINX
|
||||
00000230 R_ARM_PC24 ELFMAINX
|
||||
00000234 R_ARM_PC24 ELFMAINX
|
||||
00000250 R_ARM_PC24 ELFMAINX
|
||||
00000254 R_ARM_PC24 ELFMAINX
|
||||
|
||||
Reference in New Issue
Block a user