i386-darwin.macho re-implementation, especially for MacOS <= 10.8.x (Mountain Lion)
[i386 will not be supported by new MacOS beginning fall 2019.] https://github.com/upx/upx/issues/246 modified: p_mach.cpp modified: stub/i386-darwin.macho-entry.h modified: stub/i386-darwin.macho-fold.h modified: stub/i386-darwin.macho-upxmain.exe modified: stub/i386-darwin.macho-upxmain.h new file: stub/src/arch/i386/bxx.S new file: stub/src/arch/i386/nrv2b_d32-easy.S new file: stub/src/arch/i386/nrv2d_d32-easy.S new file: stub/src/arch/i386/nrv2e_d32-easy.S modified: stub/src/i386-darwin.macho-entry.S modified: stub/src/i386-darwin.macho-fold.S modified: stub/src/i386-darwin.macho-main.c modified: stub/src/i386-darwin.macho-upxmain.c modified: stub/tmp/i386-darwin.macho-entry.bin.dump modified: stub/tmp/i386-darwin.macho-fold.map
This commit is contained in:
parent
d4e2d7e8a8
commit
3de0008543
106
src/p_mach.cpp
106
src/p_mach.cpp
@ -269,84 +269,22 @@ PackMachBase<T>::addStubEntrySections(Filter const *)
|
||||
addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ,FOLDEXEC", NULL);
|
||||
}
|
||||
|
||||
void PackMachI386::addStubEntrySections(Filter const *ft)
|
||||
void PackMachI386::addStubEntrySections(Filter const * /*ft*/)
|
||||
{
|
||||
int const n_mru = ft->n_mru; // FIXME: belongs to filter? packerf?
|
||||
|
||||
if (Mach_header::MH_EXECUTE == my_filetype) {
|
||||
addLoader("I386BXX0", NULL); // .word offset to f_exp
|
||||
addLoader("MACHMAINX", NULL); // different for MY_DYLIB vs MH_EXECUTE
|
||||
if (my_filetype==Mach_header::MH_EXECUTE) {
|
||||
addLoader("MACH_UNC", NULL);
|
||||
}
|
||||
else {
|
||||
addLoader("LEXEC000", NULL); // entry to stub
|
||||
}
|
||||
if (ft->id) { // decompr, unfilter are separate
|
||||
if (Mach_header::MH_EXECUTE != my_filetype) {
|
||||
addLoader("LXUNF000", NULL); // 2-byte jump to f_exp
|
||||
}
|
||||
addLoader("LXUNF002", NULL); // entry to f_unf
|
||||
// prolog to f_unf
|
||||
if (0x80==(ft->id & 0xF0)) {
|
||||
if (256==n_mru) {
|
||||
addLoader("MRUBYTE0", NULL);
|
||||
}
|
||||
else if (n_mru) {
|
||||
addLoader("LXMRU005", NULL);
|
||||
}
|
||||
if (n_mru) {
|
||||
addLoader("LXMRU006", NULL);
|
||||
}
|
||||
else {
|
||||
addLoader("LXMRU007", NULL);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (0x40==(ft->id & 0xF0)) {
|
||||
addLoader("LXUNF008", NULL);
|
||||
}
|
||||
}
|
||||
if (Mach_header::MH_EXECUTE == my_filetype) {
|
||||
addFilter32(ft->id); // f_unf body
|
||||
if (0x80==(ft->id & 0xF0)) {
|
||||
if (0==n_mru) {
|
||||
addLoader("LXMRU058", NULL);
|
||||
}
|
||||
}
|
||||
addLoader("LXUNF035", NULL); // epilog to f_unf
|
||||
}
|
||||
else { // MH_DYLIB
|
||||
addLoader("LXUNF010", NULL); // jmp32 lxunf0 # to rest of f_unf
|
||||
if (n_mru) {
|
||||
addLoader("LEXEC009", NULL); // empty (unify source with other cases)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Mach_header::MH_EXECUTE == my_filetype) {
|
||||
addLoader("I386BXX1", NULL);
|
||||
}
|
||||
addLoader("LEXEC010", NULL); // prolog to f_exp
|
||||
addLoader(getDecompressorSections(), NULL);
|
||||
addLoader("LEXEC015", NULL); // epilog to f_exp
|
||||
if (ft->id) {
|
||||
if (Mach_header::MH_EXECUTE != my_filetype) {
|
||||
if (0x80!=(ft->id & 0xF0)) {
|
||||
addLoader("LXUNF042", NULL); // lxunf0:
|
||||
}
|
||||
addFilter32(ft->id); // body of f_unf
|
||||
if (0x80==(ft->id & 0xF0)) {
|
||||
if (0==n_mru) {
|
||||
addLoader("LXMRU058", NULL);
|
||||
}
|
||||
}
|
||||
addLoader("LXUNF035", NULL); // epilog to f_unf
|
||||
}
|
||||
}
|
||||
else {
|
||||
addLoader("LEXEC017", NULL); // epilog to f_exp
|
||||
}
|
||||
|
||||
addLoader("IDENTSTR", NULL);
|
||||
addLoader("LEXEC020", NULL);
|
||||
addLoader("FOLDEXEC", NULL);
|
||||
//addLoader(getDecompressorSections(), NULL);
|
||||
addLoader(
|
||||
( M_IS_NRV2E(ph.method) ? "NRV_HEAD,NRV2E,NRV_TAIL"
|
||||
: M_IS_NRV2D(ph.method) ? "NRV_HEAD,NRV2D,NRV_TAIL"
|
||||
: M_IS_NRV2B(ph.method) ? "NRV_HEAD,NRV2B,NRV_TAIL"
|
||||
: M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30"
|
||||
: NULL), NULL);
|
||||
if (hasLoaderSection("CFLUSH"))
|
||||
addLoader("CFLUSH");
|
||||
addLoader("MACHMAINY,IDENTSTR,+40,MACHMAINZ,FOLDEXEC", NULL);
|
||||
}
|
||||
|
||||
void PackMachAMD64::addStubEntrySections(Filter const * /*ft*/)
|
||||
@ -593,8 +531,6 @@ void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||
mhp->cpusubtype = my_cpusubtype;
|
||||
mhp->flags = mhdro.flags;
|
||||
char *tail = (char *)(1+ mhp);
|
||||
Mach_section_command *sectxt = 0; // in temp for output
|
||||
unsigned txt_addr = 0;
|
||||
char *const lcp_end = mhdro.sizeofcmds + tail;
|
||||
Mach_command *lcp = (Mach_command *)(1+ mhp);
|
||||
Mach_command *lcp_next;
|
||||
@ -615,8 +551,6 @@ void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||
segptr->vmsize = pagezero_vmsize;
|
||||
}
|
||||
if (!strcmp("__TEXT", segptr->segname)) {
|
||||
sectxt = (Mach_section_command *)(1+ segptr);
|
||||
txt_addr = sectxt->addr;
|
||||
sz_cmd = (segTEXT.nsects * sizeof(secTEXT)) + sizeof(segTEXT);
|
||||
mhp->sizeofcmds += sizeof(secTEXT) * (1 - segptr->nsects);
|
||||
memcpy(tail, &segTEXT, sz_cmd); tail += sz_cmd;
|
||||
@ -627,6 +561,16 @@ void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||
delta = offLINK - segptr->fileoff; // relocation constant
|
||||
|
||||
sz_cmd = sizeof(segLINK);
|
||||
if (Mach_header::CPU_TYPE_I386==mhdri.cputype
|
||||
&& Mach_header::MH_EXECUTE==mhdri.filetype) {
|
||||
segLINK.maxprot = 0
|
||||
| Mach_command::VM_PROT_EXECUTE
|
||||
| Mach_command::VM_PROT_WRITE
|
||||
| Mach_command::VM_PROT_READ;
|
||||
segLINK.initprot = 0
|
||||
| Mach_command::VM_PROT_WRITE
|
||||
| Mach_command::VM_PROT_READ;
|
||||
}
|
||||
memcpy(tail, &segLINK, sz_cmd); tail += sz_cmd;
|
||||
goto next;
|
||||
}
|
||||
@ -677,8 +621,6 @@ void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||
skip = 1;
|
||||
} break;
|
||||
case Mach_command::LC_UNIXTHREAD: { // pre-LC_MAIN
|
||||
threado_setPC(secTEXT.addr +
|
||||
(threadc_getPC(lcp) - txt_addr));
|
||||
skip = 1;
|
||||
} break;
|
||||
case Mach_command::LC_LOAD_DYLIB: {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/* i386-darwin.macho-fold.h
|
||||
created from i386-darwin.macho-fold.bin, 1135 (0x46f) bytes
|
||||
created from i386-darwin.macho-fold.bin, 1457 (0x5b1) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -31,80 +31,101 @@
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_SIZE 1135
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_ADLER32 0x768a14b0
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_CRC32 0x8d0be2e9
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_SIZE 1457
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_ADLER32 0x0e3ea459
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_CRC32 0x4f83c5ec
|
||||
|
||||
unsigned char stub_i386_darwin_macho_fold[1135] = {
|
||||
/* 0x0000 */ 106, 0,137,231,141,117, 2,139, 19,137,217, 41,209,139, 89, 24,
|
||||
/* 0x0010 */ 184, 0, 8, 0, 0, 57,216,118, 2,137,195, 41,220, 96,232, 30,
|
||||
/* 0x0020 */ 3, 0, 0,139, 76, 36, 16,141,100, 12, 32,255, 96, 40,139, 68,
|
||||
/* 0x0030 */ 36, 4,139, 76, 36, 8,139, 16, 15,202,137, 16,131,233, 4,141,
|
||||
/* 0x0040 */ 64, 4,115,242,195, 90, 15, 52,176, 4,235, 2,176, 1,235, 2,
|
||||
/* 0x0050 */ 176, 74,235, 2,176, 73,235, 2,176,153,235, 2,176, 6,235, 2,
|
||||
/* 0x0060 */ 176, 5,235, 2,176,197,235, 2,176, 3, 15,182,192,137,225,232,
|
||||
/* 0x0070 */ 209,255,255,255,115, 3,131,200,255,195,144,144, 85,137,229, 87,
|
||||
/* 0x0080 */ 86,139,125, 8, 83,137,195, 57, 56,139,112, 4,115, 7,106,127,
|
||||
/* 0x0090 */ 232,183,255,255,255,133,255,116, 10,137,249,138, 6, 70,136, 2,
|
||||
/* 0x00a0 */ 66,226,248, 1,123, 4, 41, 59,141,101,244, 91, 94, 95,201,195,
|
||||
/* 0x00b0 */ 85,137,229, 87, 86,137,198, 83,137,211,131,236, 24,139, 69, 8,
|
||||
/* 0x00c0 */ 139,125, 12,137, 69,220,131, 58, 0, 15,132,172, 0, 0, 0,141,
|
||||
/* 0x00d0 */ 85,228,137,240,106, 12,232,161,255,255,255,139, 69,228, 90,133,
|
||||
/* 0x00e0 */ 192,139, 77,232,117, 19,129,249, 85, 80, 88, 33,117, 15,131, 62,
|
||||
/* 0x00f0 */ 0, 15,132,132, 0, 0, 0,235, 4,133,201,117, 7,106,127,232,
|
||||
/* 0x0100 */ 72,255,255,255, 57,193,119,245, 59, 3,119,241, 57,193,115, 76,
|
||||
/* 0x0110 */ 137, 69,224, 15,182, 69,236, 80,141, 69,224, 80,255,115, 4, 81,
|
||||
/* 0x0120 */ 255,118, 4,255, 85,220,131,196, 20,133,192,117,208,139, 85,224,
|
||||
/* 0x0130 */ 59, 85,228,117,200,138, 69,237,132,192,116, 22,133,255,116, 18,
|
||||
/* 0x0140 */ 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4,255,215,131,
|
||||
/* 0x0150 */ 196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 12,139, 83, 4, 81,
|
||||
/* 0x0160 */ 137,240,232, 21,255,255,255, 88,139, 85,228,139, 3, 1, 83, 4,
|
||||
/* 0x0170 */ 41,208,133,192,137, 3,233, 78,255,255,255,141,101,244, 91, 94,
|
||||
/* 0x0180 */ 95,201,195, 85,137,229, 87, 86, 83,131,236, 56,137, 69,232,139,
|
||||
/* 0x0190 */ 69, 8,137, 85,228,139, 85, 12,199, 69,208, 0, 0, 0, 0,137,
|
||||
/* 0x01a0 */ 69,224,139, 69, 20,137, 85,220,139, 85, 24,137, 69,216,139,117,
|
||||
/* 0x01b0 */ 232,139, 69,232,137, 85,212, 49,210,131,198, 28,199, 69,204, 0,
|
||||
/* 0x01c0 */ 0, 0, 0, 59, 80, 16, 15,131,106, 1, 0, 0,139, 6,131,248,
|
||||
/* 0x01d0 */ 1, 15,133, 49, 1, 0, 0,139, 94, 28,133,219, 15,132, 38, 1,
|
||||
/* 0x01e0 */ 0, 0,139, 86, 24,139, 78, 36,141, 28, 26,137,208, 37,255, 15,
|
||||
/* 0x01f0 */ 0, 0,137,207,137, 93,200,137,211, 41,195, 1,199,137, 77,236,
|
||||
/* 0x0200 */ 137, 85,240,116, 76,131,125,224, 0,137,125,196,116, 8,141, 71,
|
||||
/* 0x0210 */ 3,137, 69,196,235, 11,133,201,199, 69,192, 18, 0, 0, 0,117,
|
||||
/* 0x0220 */ 7,199, 69,192, 18, 16, 0, 0,133,201,139, 85,220,117, 3,131,
|
||||
/* 0x0230 */ 202,255,139, 69,228, 3, 70, 32,106, 0, 80, 82,255,117,192,106,
|
||||
/* 0x0240 */ 3,255,117,196, 83,232, 26,254,255,255,131,196, 28, 57,195,117,
|
||||
/* 0x0250 */ 94,131,125,224, 0,116, 42,131,126, 36, 0,116, 36,131,126, 32,
|
||||
/* 0x0260 */ 0,117, 11,131,125, 16, 0,116, 5,139, 85, 16,137, 26,255,117,
|
||||
/* 0x0270 */ 212,255,117,216,141, 85,236,139, 69,224,232, 49,254,255,255, 88,
|
||||
/* 0x0280 */ 90,137,248,141, 20, 59,247,216, 37,255, 15, 0, 0,137, 69,188,
|
||||
/* 0x0290 */ 116, 8,137,193,198, 2, 0, 66,226,250,133,255,116, 24,255,118,
|
||||
/* 0x02a0 */ 44, 87, 83,232,168,253,255,255,131,196, 12,133,192,116, 7,106,
|
||||
/* 0x02b0 */ 127,232,150,253,255,255,139, 85,188,141, 4, 23, 1,195, 59, 93,
|
||||
/* 0x02c0 */ 200,115, 39,133,219,116, 91,106, 0,106, 0,106,255,104, 18, 16,
|
||||
/* 0x02d0 */ 0, 0,255,118, 44, 41, 93,200,255,117,200, 83,232,131,253,255,
|
||||
/* 0x02e0 */ 255,131,196, 28, 57,195,116, 58,235,197,131,125,224, 0,116, 50,
|
||||
/* 0x02f0 */ 141, 71, 3, 37,255, 15, 0, 0,131,248, 3,119, 37, 80, 83,232,
|
||||
/* 0x0300 */ 80,253,255,255, 89, 91,235, 26,131,232, 4,131,248, 1,119, 18,
|
||||
/* 0x0310 */ 131,126, 8, 1,117, 12,131,126, 12, 16,117, 6,141, 70, 16,137,
|
||||
/* 0x0320 */ 69,208,255, 69,204,139, 85,232,139, 69,204, 3,118, 4, 59, 66,
|
||||
/* 0x0330 */ 16,233,144,254,255,255,139, 69,208,141,101,244, 91, 94, 95,201,
|
||||
/* 0x0340 */ 195, 85,137,229, 87, 86, 83,131,236, 32,199, 69,212, 0, 0, 0,
|
||||
/* 0x0350 */ 0,139, 85, 32,139, 69, 24,139, 93, 16,137, 69,216,139,117, 20,
|
||||
/* 0x0360 */ 141, 66, 24,137,117,232,137, 69,240,139, 69, 28,131,232, 24,137,
|
||||
/* 0x0370 */ 69,236,139, 66, 24,139, 85,240,106, 0,137, 69,228,139, 69,236,
|
||||
/* 0x0380 */ 137, 85,224,137, 69,220,141, 85,228,141, 69,236, 83,232, 30,253,
|
||||
/* 0x0390 */ 255,255,255,117, 12, 83, 49,210,255,117, 8,141, 69,220,106,255,
|
||||
/* 0x03a0 */ 80,137,240,232,219,253,255,255, 49,210,137,195,141, 70, 28,131,
|
||||
/* 0x03b0 */ 196, 28,139, 78, 16, 57,202, 15,131,168, 0, 0, 0,131, 56, 14,
|
||||
/* 0x03c0 */ 15,133,150, 0, 0, 0, 3, 64, 8,106, 0,106, 0, 80,232,141,
|
||||
/* 0x03d0 */ 252,255,255,131,196, 12,133,192,137,199,120, 23,106, 0,255,117,
|
||||
/* 0x03e0 */ 212,255,117,216, 86, 87,232,109,252,255,255,131,196, 20, 57, 69,
|
||||
/* 0x03f0 */ 216,116, 15,106,127,232, 82,252,255,255,139, 91, 8,137, 93,212,
|
||||
/* 0x0400 */ 235,218,139, 6, 61,202,254,186,190,116, 7, 61,190,186,254,202,
|
||||
/* 0x0410 */ 117, 42, 15,182, 70, 7,141, 94, 8,107,192, 20,131,192, 8, 80,
|
||||
/* 0x0420 */ 86,232, 8,252,255,255, 89, 90, 49,192,139, 86, 4, 57,208,115,
|
||||
/* 0x0430 */ 11,131, 59, 7,116,196, 64,131,195, 20,235,241,106, 0,139, 85,
|
||||
/* 0x0440 */ 212,106, 0,137,240,106, 0, 87,106, 0,232, 52,253,255,255, 87,
|
||||
/* 0x0450 */ 137,195,232, 5,252,255,255,131,196, 24,235, 9, 3, 64, 4, 66,
|
||||
/* 0x0460 */ 233, 80,255,255,255,141,101,244,137,216, 91, 94, 95,201,195
|
||||
unsigned char stub_i386_darwin_macho_fold[1457] = {
|
||||
/* 0x0000 */ 88, 90, 89,139, 89, 24,190, 0, 8, 0, 0, 57,243,119, 2,137,
|
||||
/* 0x0010 */ 243, 94,106, 0,137,231, 41,220, 96,232,103, 4, 0, 0,139,124,
|
||||
/* 0x0020 */ 36, 20,139,116, 36, 28, 80, 87, 86,232, 59, 0, 0, 0, 88, 88,
|
||||
/* 0x0030 */ 88,139, 76, 36, 16,141,100, 12, 32,255,224,139, 68, 36, 4,139,
|
||||
/* 0x0040 */ 76, 36, 8,139, 16, 15,202,137, 16,131,233, 4,141, 64, 4,119,
|
||||
/* 0x0050 */ 242,195,243,144,233,249,255,255,255,195, 90, 15, 52,176, 4,235,
|
||||
/* 0x0060 */ 2,176, 1,235, 2,176, 74,235, 2,176, 73,235, 2,176,153,235,
|
||||
/* 0x0070 */ 2,176, 6,235, 2,176, 5,235, 2,176,197,235, 2,176, 3, 15,
|
||||
/* 0x0080 */ 182,192,137,225,232,209,255,255,255,115, 3,131,200,255,195,144,
|
||||
/* 0x0090 */ 85,137,229, 87, 86,139,125, 8, 83,137,195, 57, 56,139,112, 4,
|
||||
/* 0x00a0 */ 115, 7,106,127,232,184,255,255,255,133,255,116, 10,137,249,138,
|
||||
/* 0x00b0 */ 6, 70,136, 2, 66,226,248, 1,123, 4, 41, 59,141,101,244, 91,
|
||||
/* 0x00c0 */ 94, 95,201,195, 85,137,229, 87, 86,137,198, 83,137,211,131,236,
|
||||
/* 0x00d0 */ 24,139, 69, 8,139,125, 12,137, 69,220,131, 58, 0, 15,132,172,
|
||||
/* 0x00e0 */ 0, 0, 0,141, 85,228,137,240,106, 12,232,161,255,255,255,139,
|
||||
/* 0x00f0 */ 69,228, 90,133,192,139, 77,232,117, 19,129,249, 85, 80, 88, 33,
|
||||
/* 0x0100 */ 117, 15,131, 62, 0, 15,132,132, 0, 0, 0,235, 4,133,201,117,
|
||||
/* 0x0110 */ 7,106,127,232, 73,255,255,255, 57,193,119,245, 59, 3,119,241,
|
||||
/* 0x0120 */ 57,193,115, 76,137, 69,224, 15,182, 69,236, 80,141, 69,224, 80,
|
||||
/* 0x0130 */ 255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20,133,192,117,
|
||||
/* 0x0140 */ 208,139, 85,224, 59, 85,228,117,200,138, 69,237,132,192,116, 22,
|
||||
/* 0x0150 */ 133,255,116, 18, 15,182,192, 80, 15,182, 69,238, 80, 82,255,115,
|
||||
/* 0x0160 */ 4,255,215,131,196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 12,
|
||||
/* 0x0170 */ 139, 83, 4, 81,137,240,232, 21,255,255,255, 88,139, 85,228,139,
|
||||
/* 0x0180 */ 3, 1, 83, 4, 41,208,133,192,137, 3,233, 78,255,255,255,141,
|
||||
/* 0x0190 */ 101,244, 91, 94, 95,201,195, 85,137,229, 87, 86,131,206,255, 83,
|
||||
/* 0x01a0 */ 131,236, 88,199, 69,192, 0, 0, 0, 0,139, 69, 8,199, 69,188,
|
||||
/* 0x01b0 */ 0, 0, 0, 0,139, 85, 12,199, 69,180, 0, 0, 0, 0,137, 69,
|
||||
/* 0x01c0 */ 216,139, 69, 20,139,125,216,137, 85,212,137, 69,204,139, 69,216,
|
||||
/* 0x01d0 */ 139, 93, 16,131,199, 28,131,120, 12, 7,139, 85, 28,137, 93,208,
|
||||
/* 0x01e0 */ 139, 93, 32,137, 85,200,139, 72, 16,137, 93,196,137,250,116, 14,
|
||||
/* 0x01f0 */ 139, 93,216,184, 16, 0, 0, 0,246, 67, 26, 32,116, 2, 49,192,
|
||||
/* 0x0200 */ 5, 2, 16, 0, 0,133,201,137, 69,164,126, 77,131, 58, 1,117,
|
||||
/* 0x0210 */ 62,139, 66, 28,133,192,137, 69,156,116, 52,139, 66, 24,133,192,
|
||||
/* 0x0220 */ 117, 6,246, 69,164, 16,117, 39,139, 93,216,131,123, 12, 7,117,
|
||||
/* 0x0230 */ 13,131,254,255,117, 8,133,192,116, 4,131, 77,164, 16, 57,198,
|
||||
/* 0x0240 */ 118, 2,137,198, 3, 69,156, 57, 69,180,115, 3,137, 69,180,139,
|
||||
/* 0x0250 */ 66, 4,131,224,252, 1,194,226,179,129,230, 0,240,255,255, 41,
|
||||
/* 0x0260 */ 117,180,139, 93,180,129,195,255, 15, 0, 0,129,227, 0,240,255,
|
||||
/* 0x0270 */ 255,246, 69,164, 16,116, 12, 83, 86,137,117,188,232,232,253,255,
|
||||
/* 0x0280 */ 255, 88, 90,106, 0,106, 0,106,255,255,117,164,106, 0, 83,255,
|
||||
/* 0x0290 */ 117,188,232,226,253,255,255,131,196, 28, 41,240,199, 69,176, 0,
|
||||
/* 0x02a0 */ 0, 0, 0,137, 69,184, 49,210,139, 69,216, 59, 80, 16, 15,131,
|
||||
/* 0x02b0 */ 198, 1, 0, 0,131, 63, 1,117, 29,131,127, 28, 0,117, 23,139,
|
||||
/* 0x02c0 */ 69,208,141, 85,228,106, 12,232,196,253,255,255,139, 93,208,139,
|
||||
/* 0x02d0 */ 69,232, 1, 67, 4, 89,139, 7,131,248, 1, 15,133,111, 1, 0,
|
||||
/* 0x02e0 */ 0,139, 95, 28,133,219, 15,132,100, 1, 0, 0,139, 79, 36,139,
|
||||
/* 0x02f0 */ 85,184,137, 77,220,137,206, 3, 87, 24, 1,211,137,208, 37,255,
|
||||
/* 0x0300 */ 15, 0, 0,137, 93,172,137,211,137, 85,224, 41,195, 1,198,116,
|
||||
/* 0x0310 */ 89,131,125,208, 0,117, 11,133,201,199, 69,168, 18, 0, 0, 0,
|
||||
/* 0x0320 */ 117, 13,131,125,208, 0,199, 69,168, 18, 16, 0, 0,117, 7,133,
|
||||
/* 0x0330 */ 201,139, 85,204,117, 3,131,202,255,139, 69,212, 3, 71, 32,106,
|
||||
/* 0x0340 */ 0, 80, 82,255,117,168,106, 3, 86, 83,232, 42,253,255,255,131,
|
||||
/* 0x0350 */ 196, 28, 57,216, 15,133,157, 0, 0, 0,131,125, 24, 0,116, 10,
|
||||
/* 0x0360 */ 139, 69, 24,131, 56, 0,117, 2,137, 24,131,125,208, 0,116, 89,
|
||||
/* 0x0370 */ 131,127, 36, 0,116, 30,131,127, 32, 0,117, 5,139, 85, 24,137,
|
||||
/* 0x0380 */ 26,255,117,196,255,117,200,141, 85,220,139, 69,208,232, 50,253,
|
||||
/* 0x0390 */ 255,255, 88, 90,131,125,208, 0,116, 47,133,246,116, 43,131,127,
|
||||
/* 0x03a0 */ 32, 0,117, 37,131,127, 48, 0,116, 31,137,248, 43, 69,216,131,
|
||||
/* 0x03b0 */ 224,252,139, 68, 3, 96,131,224,252,141, 4, 3,199, 64,248,144,
|
||||
/* 0x03c0 */ 15, 5,195,131,232, 8,137, 69,192,137,240,141, 20, 30,247,216,
|
||||
/* 0x03d0 */ 37,255, 15, 0, 0,137, 69,160,116, 8,137,193,198, 2, 0, 66,
|
||||
/* 0x03e0 */ 226,250,133,246,116, 24,255,119, 44, 86, 83,232,117,252,255,255,
|
||||
/* 0x03f0 */ 131,196, 12,133,192,116, 7,106,127,232, 99,252,255,255,139, 85,
|
||||
/* 0x0400 */ 160,141, 4, 22, 1,195, 59, 93,172,115, 39,133,219,116, 88,106,
|
||||
/* 0x0410 */ 0,106, 0,106,255,104, 18, 16, 0, 0,255,119, 44, 41, 93,172,
|
||||
/* 0x0420 */ 255,117,172, 83,232, 80,252,255,255,131,196, 28, 57,195,116, 55,
|
||||
/* 0x0430 */ 235,197,131,125,208, 0,116, 47,141, 70, 3, 37,255, 15, 0, 0,
|
||||
/* 0x0440 */ 131,248, 3,119, 34, 80, 83,232, 29,252,255,255, 89, 91,235, 23,
|
||||
/* 0x0450 */ 131,125,208, 0,117, 17,131,232, 4,131,248, 1,119, 9,139, 93,
|
||||
/* 0x0460 */ 184, 3, 95, 56,137, 93,192,139, 71, 4,255, 69,176,131,224,252,
|
||||
/* 0x0470 */ 139, 85,176, 1,199,233, 46,254,255,255,139, 69,192,141,101,244,
|
||||
/* 0x0480 */ 91, 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, 32,199, 69,
|
||||
/* 0x0490 */ 212, 0, 0, 0, 0,139, 85, 32,139, 69, 24,139, 93, 16,137, 69,
|
||||
/* 0x04a0 */ 216,139,125, 20,141, 66, 24,137,125,232,137, 69,240,139, 69, 28,
|
||||
/* 0x04b0 */ 131,232, 24,137, 69,236,139, 66, 24,139, 85,240,106, 0,137, 69,
|
||||
/* 0x04c0 */ 228,139, 69,236,137, 85,224,137, 69,220,141, 85,228,141, 69,236,
|
||||
/* 0x04d0 */ 83,232,238,251,255,255,255,117, 12, 83,255,117, 8,141, 69,220,
|
||||
/* 0x04e0 */ 106,255, 80,106, 0, 87,232,172,252,255,255, 49,210,137,195,141,
|
||||
/* 0x04f0 */ 71, 28,131,196, 36,139, 79, 16, 57,202, 15,131,167, 0, 0, 0,
|
||||
/* 0x0500 */ 131, 56, 14, 15,133,149, 0, 0, 0, 3, 64, 8,106, 0,106, 0,
|
||||
/* 0x0510 */ 80,232, 95,251,255,255,131,196, 12,133,192,137,198,120, 23,106,
|
||||
/* 0x0520 */ 0,255,117,212,255,117,216, 87, 86,232, 63,251,255,255,131,196,
|
||||
/* 0x0530 */ 20, 57, 69,216,116, 15,106,127,232, 36,251,255,255,139, 91, 8,
|
||||
/* 0x0540 */ 137, 93,212,235,218,139, 7, 61,202,254,186,190,116, 7, 61,190,
|
||||
/* 0x0550 */ 186,254,202,117, 42, 15,182, 71, 7,141, 95, 8,107,192, 20,131,
|
||||
/* 0x0560 */ 192, 8, 80, 87,232,210,250,255,255, 89, 90, 49,192,139, 87, 4,
|
||||
/* 0x0570 */ 57,208,115, 11,131, 59, 7,116,196, 64,131,195, 20,235,241,106,
|
||||
/* 0x0580 */ 0,106, 0,106, 0, 86,106, 0,255,117,212, 87,232, 6,252,255,
|
||||
/* 0x0590 */ 255, 86,137,195,232,216,250,255,255,131,196, 32,235, 9, 3, 64,
|
||||
/* 0x05a0 */ 4, 66,233, 81,255,255,255,141,101,244,137,216, 91, 94, 95,201,
|
||||
/* 0x05b0 */ 195
|
||||
};
|
||||
|
||||
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
/* i386-darwin.macho-upxmain.h
|
||||
created from i386-darwin.macho-upxmain.exe, 4936 (0x1348) bytes
|
||||
created from i386-darwin.macho-upxmain.exe, 4688 (0x1250) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -31,13 +31,13 @@
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_I386_DARWIN_MACHO_UPXMAIN_EXE_SIZE 4936
|
||||
#define STUB_I386_DARWIN_MACHO_UPXMAIN_EXE_ADLER32 0x8952e687
|
||||
#define STUB_I386_DARWIN_MACHO_UPXMAIN_EXE_CRC32 0x20b8b848
|
||||
#define STUB_I386_DARWIN_MACHO_UPXMAIN_EXE_SIZE 4688
|
||||
#define STUB_I386_DARWIN_MACHO_UPXMAIN_EXE_ADLER32 0x8f7d68d7
|
||||
#define STUB_I386_DARWIN_MACHO_UPXMAIN_EXE_CRC32 0x20172ebf
|
||||
|
||||
unsigned char stub_i386_darwin_macho_upxmain_exe[4936] = {
|
||||
unsigned char stub_i386_darwin_macho_upxmain_exe[4688] = {
|
||||
/* 0x0000 */ 206,250,237,254, 7, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x0010 */ 13, 0, 0, 0,152, 2, 0, 0,133, 0, 0, 1, 1, 0, 0, 0,
|
||||
/* 0x0010 */ 9, 0, 0, 0,104, 2, 0, 0,141, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0020 */ 56, 0, 0, 0, 95, 95, 80, 65, 71, 69, 90, 69, 82, 79, 0, 0,
|
||||
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0040 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -46,39 +46,39 @@ unsigned char stub_i386_darwin_macho_upxmain_exe[4936] = {
|
||||
/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 7, 0, 0, 0,
|
||||
/* 0x0080 */ 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 95, 95,116,101,
|
||||
/* 0x0090 */ 120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 84, 69,
|
||||
/* 0x00a0 */ 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 25, 0, 0,
|
||||
/* 0x00b0 */ 151, 6, 0, 0, 33, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x00a0 */ 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 25, 0, 0,
|
||||
/* 0x00b0 */ 74, 6, 0, 0,100, 9, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x00c0 */ 0, 0, 0, 0, 0, 4, 0,128, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x00d0 */ 95, 95,117,110,119,105,110,100, 95,105,110,102,111, 0, 0, 0,
|
||||
/* 0x00e0 */ 95, 95, 84, 69, 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x00f0 */ 184, 31, 0, 0, 72, 0, 0, 0,184, 15, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x00f0 */ 176, 31, 0, 0, 72, 0, 0, 0,176, 15, 0, 0, 4, 0, 0, 0,
|
||||
/* 0x0100 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0110 */ 0, 0, 0, 0, 1, 0, 0, 0, 56, 0, 0, 0, 95, 95, 68, 65,
|
||||
/* 0x0120 */ 84, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
|
||||
/* 0x0130 */ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
|
||||
/* 0x0140 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
|
||||
/* 0x0150 */ 56, 0, 0, 0, 95, 95, 76, 73, 78, 75, 69, 68, 73, 84, 0, 0,
|
||||
/* 0x0160 */ 0, 0, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
|
||||
/* 0x0170 */ 72, 3, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0180 */ 0, 0, 0, 0, 34, 0, 0,128, 48, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0190 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x01a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
|
||||
/* 0x01b0 */ 224, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0,224, 16, 0, 0,
|
||||
/* 0x01c0 */ 29, 0, 0, 0, 60, 18, 0, 0, 12, 1, 0, 0, 11, 0, 0, 0,
|
||||
/* 0x01d0 */ 80, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,
|
||||
/* 0x01e0 */ 15, 0, 0, 0, 28, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x01f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0200 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0210 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
|
||||
/* 0x0220 */ 28, 0, 0, 0, 12, 0, 0, 0, 47,117,115,114, 47,108,105, 98,
|
||||
/* 0x0230 */ 47,100,121,108,100, 0, 0, 0, 36, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0240 */ 0, 12, 10, 0, 0, 12, 10, 0, 42, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0250 */ 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,128, 24, 0, 0, 0,
|
||||
/* 0x0260 */ 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0270 */ 12, 0, 0, 0, 52, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x0280 */ 0, 0,214, 4, 0, 0, 1, 0, 47,117,115,114, 47,108,105, 98,
|
||||
/* 0x0290 */ 47,108,105, 98, 83,121,115,116,101,109, 46, 66, 46,100,121,108,
|
||||
/* 0x02a0 */ 105, 98, 0, 0, 41, 0, 0, 0, 16, 0, 0, 0,224, 16, 0, 0,
|
||||
/* 0x0110 */ 0, 0, 0, 0, 1, 0, 0, 0, 56, 0, 0, 0, 95, 95, 76, 73,
|
||||
/* 0x0120 */ 78, 75, 69, 68, 73, 84, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
|
||||
/* 0x0130 */ 80, 2, 0, 0, 0, 16, 0, 0, 80, 2, 0, 0, 7, 0, 0, 0,
|
||||
/* 0x0140 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,128,
|
||||
/* 0x0150 */ 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0170 */ 0, 0, 0, 0, 0, 16, 0, 0,236, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x0180 */ 24, 0, 0, 0,236, 16, 0, 0, 17, 0, 0, 0,184, 17, 0, 0,
|
||||
/* 0x0190 */ 152, 0, 0, 0, 11, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x01a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x01b0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x01c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x01d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x01e0 */ 0, 0, 0, 0, 14, 0, 0, 0, 28, 0, 0, 0, 12, 0, 0, 0,
|
||||
/* 0x01f0 */ 47,117,115,114, 47,108,105, 98, 47,100,121,108,100, 0, 0, 0,
|
||||
/* 0x0200 */ 5, 0, 0, 0, 80, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0,
|
||||
/* 0x0210 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0220 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0230 */ 0, 0, 0, 0, 0, 0, 0, 0,100, 25, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0240 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0250 */ 12, 0, 0, 0, 52, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x0260 */ 11, 2,125, 0, 0, 0, 1, 0, 47,117,115,114, 47,108,105, 98,
|
||||
/* 0x0270 */ 47,108,105, 98, 83,121,115,116,101,109, 46, 66, 46,100,121,108,
|
||||
/* 0x0280 */ 105, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0290 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x02a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x02b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x02c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x02d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -182,167 +182,151 @@ unsigned char stub_i386_darwin_macho_upxmain_exe[4936] = {
|
||||
/* 0x08f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0900 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0910 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0920 */ 0, 85,137,229, 83, 87, 86,131,236, 44,139,117, 16,139, 93, 24,
|
||||
/* 0x0930 */ 139, 69, 8,139, 77, 12,137, 77,240,141, 72, 24,137, 77,236,139,
|
||||
/* 0x0940 */ 77,240,131,193,232,137, 77,232,137,117,228,139, 64, 24,137, 69,
|
||||
/* 0x0950 */ 224,242, 15, 16, 69,232,242, 15, 17, 69,216,131,236, 8, 49,255,
|
||||
/* 0x0960 */ 141, 77,232,141, 85,224, 87, 83,232, 21, 1, 0, 0,131,196, 16,
|
||||
/* 0x0970 */ 131,236, 8,141, 69,216, 49,210,137,241,255,117, 28, 83,255,117,
|
||||
/* 0x0980 */ 32,106,255, 80, 87,232,236, 1, 0, 0,137,242,131,196, 32,137,
|
||||
/* 0x0990 */ 195,139, 74, 16,133,201, 15,132,220, 0, 0, 0,139,117, 20,141,
|
||||
/* 0x09a0 */ 66, 28,131, 56, 14,116, 13, 71, 3, 64, 4, 57,207,114,243,233,
|
||||
/* 0x09b0 */ 196, 0, 0, 0, 3, 64, 8,131,236, 4, 49,219, 83, 83, 80,232,
|
||||
/* 0x09c0 */ 213, 5, 0, 0,131,196, 16,137, 69,212,133,192,120,119,139, 69,
|
||||
/* 0x09d0 */ 16,141, 64, 16,137, 69,208, 49,255,131,236, 12, 83, 87, 86,255,
|
||||
/* 0x09e0 */ 117, 16,255,117,212,232,167, 5, 0, 0,131,196, 32, 57,240,117,
|
||||
/* 0x09f0 */ 84,139, 77, 16,139, 1, 61,190,186,254,202,116, 7, 61,202,254,
|
||||
/* 0x0a00 */ 186,190,117, 78, 15,182, 65, 7,141, 4,128,141, 4,133, 8, 0,
|
||||
/* 0x0a10 */ 0, 0,131,236, 8, 80, 81,137,207,232, 59, 5, 0, 0,131,196,
|
||||
/* 0x0a20 */ 16,139, 71, 4, 49,201,133,192,139, 85,208,116, 24,131,122,248,
|
||||
/* 0x0a30 */ 7,116, 10, 65,131,194, 20, 57,193,114,242,235, 8,139, 58, 49,
|
||||
/* 0x0a40 */ 219,133,255,117,148,131,236, 12,106,127,232, 54, 5, 0, 0,131,
|
||||
/* 0x0a50 */ 196, 16,131,236, 8, 49,192,137,250, 80, 80, 80,139,117,212, 86,
|
||||
/* 0x0a60 */ 80, 83,232, 15, 1, 0, 0,131,196, 32,137,195,131,236, 12, 86,
|
||||
/* 0x0a70 */ 232, 32, 5, 0, 0,131,196, 16,137,216,131,196, 44, 94, 95, 91,
|
||||
/* 0x0a80 */ 93,195, 85,137,229, 83, 87, 86,131,236, 28,137,215,137, 77,224,
|
||||
/* 0x0a90 */ 131, 63, 0, 15,132,200, 0, 0, 0,131,236, 12,139, 77,224,141,
|
||||
/* 0x0aa0 */ 85,232,106, 12,232,102, 4, 0, 0,131,196, 16,139, 93,232,139,
|
||||
/* 0x0ab0 */ 117,236,133,219, 15,132,151, 0, 0, 0,141, 70,255, 57,216, 15,
|
||||
/* 0x0ac0 */ 131,164, 0, 0, 0, 59, 31, 15,135,156, 0, 0, 0, 57,222,115,
|
||||
/* 0x0ad0 */ 93,137, 93,228,139, 69,240,137, 69,220, 15,182,192,131,236, 12,
|
||||
/* 0x0ae0 */ 80,141, 69,228, 80,255,119, 4, 86,139, 69,224,255,112, 4,255,
|
||||
/* 0x0af0 */ 85, 8,131,196, 32,133,192,117,112, 57, 93,228,117,107,131,125,
|
||||
/* 0x0b00 */ 12, 0,139, 77,220,116, 29, 15,182,197,102,133,192,116, 21,193,
|
||||
/* 0x0b10 */ 233, 16, 15,183,192, 15,182,201, 80, 81, 83,255,119, 4,255, 85,
|
||||
/* 0x0b20 */ 12,131,196, 16,139, 69,224, 1,112, 4, 41, 48,235, 18,139, 87,
|
||||
/* 0x0b30 */ 4,131,236, 12,139, 77,224, 86,232,210, 3, 0, 0,131,196, 16,
|
||||
/* 0x0b40 */ 1, 95, 4,139, 7, 41,216,137, 7, 15,133, 74,255,255,255,235,
|
||||
/* 0x0b50 */ 16,129,254, 85, 80, 88, 33,117, 16,139, 69,224,131, 56, 0,117,
|
||||
/* 0x0b60 */ 8,131,196, 28, 94, 95, 91, 93,195,131,236, 12,106,127,232, 18,
|
||||
/* 0x0b70 */ 4, 0, 0,131,196, 16, 85,137,229, 83, 87, 86,131,236, 76,137,
|
||||
/* 0x0b80 */ 85,188,137, 77,200,139, 73, 16,137, 77,224, 49,192,133,201, 15,
|
||||
/* 0x0b90 */ 132, 85, 2, 0, 0,131,125, 12, 0, 15,149,193, 15,182,201,141,
|
||||
/* 0x0ba0 */ 12, 73,137, 77,184,139, 77,200,141, 89, 28, 49,210, 49,192, 49,
|
||||
/* 0x0bb0 */ 201, 49,246,137,117,228,137,215,137,206,139, 11,141, 81,252,131,
|
||||
/* 0x0bc0 */ 250, 2, 15,130,213, 0, 0, 0,129,249, 40, 0, 0,128, 15,132,
|
||||
/* 0x0bd0 */ 234, 0, 0, 0,131,249, 1,137,250, 15,133, 10, 1, 0, 0,139,
|
||||
/* 0x0be0 */ 123, 28,133,255,137,241, 15,132,238, 1, 0, 0,137,125,208,137,
|
||||
/* 0x0bf0 */ 85,216,137, 69,204,139, 67, 36,137, 69,232,139,123, 24, 1,207,
|
||||
/* 0x0c00 */ 137,125,212,137,125,236,137,254,129,230,255, 15, 0, 0,137,242,
|
||||
/* 0x0c10 */ 41,215, 1,194, 15,132,214, 0, 0, 0,137, 77,220,139, 77,184,
|
||||
/* 0x0c20 */ 141, 12, 10,137, 77,196,133,255,137, 85,224,186, 2, 0, 0, 0,
|
||||
/* 0x0c30 */ 185, 18, 0, 0, 0, 15, 69,209,133,192, 15,148,193, 15,182,201,
|
||||
/* 0x0c40 */ 193,225, 12,131,125, 12, 0,190, 0, 16, 0, 0, 15, 69,206, 9,
|
||||
/* 0x0c50 */ 209,131,248, 1, 25,192, 11, 69, 16,137, 69,192,139, 83, 32, 3,
|
||||
/* 0x0c60 */ 85,188,139, 69, 8,190, 0, 0, 0, 0, 17,240,131,236, 4, 80,
|
||||
/* 0x0c70 */ 82,255,117,192, 81,106, 3,255,117,196, 87,232, 29, 3, 0, 0,
|
||||
/* 0x0c80 */ 139, 85,224,131,196, 32,133,255,139, 77,220, 15, 68,200,137, 77,
|
||||
/* 0x0c90 */ 220,131,248,255,137,199,117, 91,233, 85, 1, 0, 0,131,123, 8,
|
||||
/* 0x0ca0 */ 1,137,241,117, 61,131,123, 12, 16,137,250,139,117,228, 15,133,
|
||||
/* 0x0cb0 */ 41, 1, 0, 0,139, 67, 56, 1,200,233, 31, 1, 0, 0,139, 67,
|
||||
/* 0x0cc0 */ 8,137,250, 57, 66, 32,137,241, 15,135, 12, 1, 0, 0, 59, 66,
|
||||
/* 0x0cd0 */ 36,139,117,228, 15,131, 3, 1, 0, 0, 3, 66, 24,233,251, 0,
|
||||
/* 0x0ce0 */ 0, 0,137,250,233,241, 0, 0, 0,137,241,233,234, 0, 0, 0,
|
||||
/* 0x0cf0 */ 137, 77,220,131,125, 12, 0,116, 47,131,123, 36, 0,116, 41,137,
|
||||
/* 0x0d00 */ 214,131,123, 32, 0,117, 8,139, 69, 20,137, 56,137, 93,216,131,
|
||||
/* 0x0d10 */ 236, 8,139, 77, 12,141, 85,232,255,117, 28,255,117, 24,232, 95,
|
||||
/* 0x0d20 */ 253,255,255,131,196, 16,137,242,137,214,247,222,129,230,255, 15,
|
||||
/* 0x0d30 */ 0, 0,116, 22,141, 4, 23,131,236, 8, 86, 80,137, 85,224,232,
|
||||
/* 0x0d40 */ 44, 2, 0, 0,139, 85,224,131,196, 16,133,210,116, 30,131,236,
|
||||
/* 0x0d50 */ 4,255,115, 44, 82, 87,137, 85,224,232, 43, 2, 0, 0,139, 85,
|
||||
/* 0x0d60 */ 224,131,196, 16,133,192, 15,133,134, 0, 0, 0,139, 69,212, 3,
|
||||
/* 0x0d70 */ 69,208, 1,214, 1,247, 57,199,115, 41,133,255,116, 74,137,193,
|
||||
/* 0x0d80 */ 41,249,131,236, 4, 49,192, 80, 80,106,255,104, 18, 16, 0, 0,
|
||||
/* 0x0d90 */ 255,115, 44, 81, 87,232, 3, 2, 0, 0,131,196, 32, 57,199,116,
|
||||
/* 0x0da0 */ 39,235, 79,131,125, 12, 0,116, 31,131,194, 3,129,226,255, 15,
|
||||
/* 0x0db0 */ 0, 0,184, 3, 0, 0, 0, 57,194,119, 13,131,236, 8, 82, 87,
|
||||
/* 0x0dc0 */ 232,200, 1, 0, 0,131,196, 16,139, 69,200,139, 64, 16,137, 69,
|
||||
/* 0x0dd0 */ 224,139, 69,204,139, 77,220,139, 85,216,139,117,228, 70, 3, 91,
|
||||
/* 0x0de0 */ 4, 59,117,224, 15,130,201,253,255,255,131,196, 76, 94, 95, 91,
|
||||
/* 0x0df0 */ 93,195,131,236, 12,106,127,232,137, 1, 0, 0,131,196, 16, 85,
|
||||
/* 0x0e00 */ 137,229, 83, 87, 86,129,236, 28, 64, 0, 0,232, 0, 0, 0, 0,
|
||||
/* 0x0e10 */ 88,139,117, 4,141, 77, 8,141,128,239,255,255,255, 37, 0,240,
|
||||
/* 0x0e20 */ 255,255,139, 80, 16,133,210,116, 68,137,181,228,191,255,255,137,
|
||||
/* 0x0e30 */ 141,232,191,255,255,131,200, 28, 49,246,185, 76, 73, 78, 75,131,
|
||||
/* 0x0e40 */ 56, 1,117, 19,139,120, 14,187, 69, 68, 73, 84, 49,223,139, 88,
|
||||
/* 0x0e50 */ 10, 49,203, 9,251,116, 48, 70, 3, 64, 4, 57,214,137,189,240,
|
||||
/* 0x0e60 */ 191,255,255,137,189,236,191,255,255,114,212,235, 61,137,181,228,
|
||||
/* 0x0e70 */ 191,255,255,137,141,232,191,255,255,137,133,240,191,255,255,137,
|
||||
/* 0x0e80 */ 133,236,191,255,255,235, 35,139, 88, 24, 15,183, 3, 1,216,141,
|
||||
/* 0x0e90 */ 75, 2,139,123,252,131,195,252,133,255,116,246, 41,251,137,133,
|
||||
/* 0x0ea0 */ 236,191,255,255,137,141,240,191,255,255,139,181,232,191,255,255,
|
||||
/* 0x0eb0 */ 137,240,131,192,248,131,236, 4,141,141,244,191,255,255, 80,255,
|
||||
/* 0x0ec0 */ 181,240,191,255,255,255,181,236,191,255,255,104, 0, 64, 0, 0,
|
||||
/* 0x0ed0 */ 81, 87, 83,232, 73,250,255,255,131,196, 32,137,133,240,191,255,
|
||||
/* 0x0ee0 */ 255,131,236, 8, 87, 83,232,162, 0, 0, 0,131,196, 16,139,133,
|
||||
/* 0x0ef0 */ 228,191,255,255,137, 70,252,139,133,240,191,255,255,141,102,248,
|
||||
/* 0x0f00 */ 255,224, 49,192,129,196, 28, 64, 0, 0, 94, 95, 91, 93,195, 85,
|
||||
/* 0x0f10 */ 137,229, 83, 87, 86,131,236, 12,139, 69, 8,139, 57, 57,199,114,
|
||||
/* 0x0f20 */ 44,139,113, 4,133,192,116, 20,137,199, 79,138, 30,141,118, 1,
|
||||
/* 0x0f30 */ 136, 26,141, 82, 1,117,243,139, 57,139,113, 4, 1,198,137,113,
|
||||
/* 0x0f40 */ 4, 41,199,137, 57,131,196, 12, 94, 95, 91, 93,195,199, 4, 36,
|
||||
/* 0x0f50 */ 127, 0, 0, 0,232, 44, 0, 0, 0,139, 84, 36, 4,139, 76, 36,
|
||||
/* 0x0f60 */ 8,139, 2, 15,200,137, 2,131,233, 4,141, 82, 4,119,242,195,
|
||||
/* 0x0f70 */ 90, 88, 89, 81, 80, 82, 87,151, 49,192,243,170, 95,195, 90, 15,
|
||||
/* 0x0f80 */ 52,176, 4,235, 2,176, 1,235, 2,176, 74,235, 2,176, 73,235,
|
||||
/* 0x0f90 */ 2,176,153,235, 2,176, 6,235, 2,176, 5,235, 2,176,197,235,
|
||||
/* 0x0fa0 */ 2,176, 3, 15,182,192,137,225, 13, 0, 0, 12, 0,232,204,255,
|
||||
/* 0x0fb0 */ 255,255,115, 3,131,200,255,195, 1, 0, 0, 0, 28, 0, 0, 0,
|
||||
/* 0x0fc0 */ 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
|
||||
/* 0x0fd0 */ 2, 0, 0, 0, 33, 9, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0,
|
||||
/* 0x0fe0 */ 185, 15, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0,
|
||||
/* 0x0ff0 */ 12, 0, 1, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x1000 */ 0, 1, 95, 0, 5, 0, 10, 95, 0, 72,117,112,120, 95,109, 97,
|
||||
/* 0x1010 */ 105,110, 0,106,109, 0,111, 98, 0,148, 1,119,114,105,116,101,
|
||||
/* 0x1020 */ 0,179, 1,101,120,105,116, 0,184, 1,112,114,101, 97,100, 0,
|
||||
/* 0x1030 */ 199, 1, 99,108,111,115,101, 0,204, 1,111,112,101,110, 0,209,
|
||||
/* 0x1040 */ 1,114,101, 97,100, 0,219, 1, 0, 2,109,104, 95,101,120,101,
|
||||
/* 0x1050 */ 99,117,116,101, 95,104,101, 97,100,101,114, 0,102, 95, 98,122,
|
||||
/* 0x1060 */ 101,114,111, 0,169, 1, 2, 0, 0, 0, 3, 0,161, 18, 0, 0,
|
||||
/* 0x1070 */ 4, 97,105,110, 0,143, 1,112,114,111,116,101, 99,116, 0,189,
|
||||
/* 0x1080 */ 1,117,110,109, 97,112, 0,194, 1,109, 97,112, 0,214, 1, 3,
|
||||
/* 0x1090 */ 0,255, 27, 0, 0, 2,115,119, 97,112, 0,164, 1,122,101,114,
|
||||
/* 0x10a0 */ 111, 0,174, 1, 3, 0,217, 30, 0, 3, 0,240, 30, 0, 3, 0,
|
||||
/* 0x10b0 */ 240, 30, 0, 3, 0,129, 31, 0, 3, 0,133, 31, 0, 3, 0,137,
|
||||
/* 0x10c0 */ 31, 0, 3, 0,141, 31, 0, 3, 0,145, 31, 0, 3, 0,149, 31,
|
||||
/* 0x10d0 */ 0, 3, 0,153, 31, 0, 3, 0,157, 31, 0, 3, 0,161, 31, 0,
|
||||
/* 0x10e0 */ 141, 0, 0, 0, 14, 1, 0, 0,130, 26, 0, 0,155, 0, 0, 0,
|
||||
/* 0x10f0 */ 14, 1, 0, 0,118, 27, 0, 0,164, 0, 0, 0, 14, 1, 0, 0,
|
||||
/* 0x1100 */ 15, 31, 0, 0,171, 0, 0, 0, 14, 1, 0, 0,126, 31, 0, 0,
|
||||
/* 0x1110 */ 177, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0,186, 0, 0, 0,
|
||||
/* 0x1120 */ 2, 0, 0, 0, 3, 0, 0, 0,195, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x1130 */ 4, 0, 0, 0,205, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0,
|
||||
/* 0x1140 */ 214, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0,224, 0, 0, 0,
|
||||
/* 0x1150 */ 2, 0, 0, 0, 73, 0, 0, 0,235, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x1160 */ 74, 0, 0, 0,248, 0, 0, 0, 2, 0, 0, 0,153, 0, 0, 0,
|
||||
/* 0x1170 */ 2, 1, 0, 0, 2, 0, 0, 0,197, 0, 0, 0, 2, 0, 0, 0,
|
||||
/* 0x1180 */ 15, 1, 0, 0,112, 31, 0, 0, 11, 0, 0, 0, 3, 1, 16, 0,
|
||||
/* 0x1190 */ 0, 16, 0, 0, 31, 0, 0, 0, 15, 1, 0, 0, 89, 31, 0, 0,
|
||||
/* 0x11a0 */ 38, 0, 0, 0, 15, 1, 0, 0,112, 31, 0, 0, 45, 0, 0, 0,
|
||||
/* 0x11b0 */ 15, 1, 0, 0,149, 31, 0, 0, 52, 0, 0, 0, 15, 1, 0, 0,
|
||||
/* 0x11c0 */ 133, 31, 0, 0, 58, 0, 0, 0, 15, 1, 0, 0,255, 29, 0, 0,
|
||||
/* 0x11d0 */ 64, 0, 0, 0, 15, 1, 0, 0,157, 31, 0, 0, 70, 0, 0, 0,
|
||||
/* 0x11e0 */ 15, 1, 0, 0,137, 31, 0, 0, 80, 0, 0, 0, 15, 1, 0, 0,
|
||||
/* 0x11f0 */ 141, 31, 0, 0, 88, 0, 0, 0, 15, 1, 0, 0,153, 31, 0, 0,
|
||||
/* 0x1200 */ 94, 0, 0, 0, 15, 1, 0, 0,145, 31, 0, 0,101, 0, 0, 0,
|
||||
/* 0x1210 */ 15, 1, 0, 0,161, 31, 0, 0,107, 0, 0, 0, 15, 1, 0, 0,
|
||||
/* 0x1220 */ 33, 25, 0, 0,117, 0, 0, 0, 15, 1, 0, 0,129, 31, 0, 0,
|
||||
/* 0x1230 */ 124, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 32, 0, 95, 95,
|
||||
/* 0x1240 */ 95, 98,122,101,114,111, 0, 95, 95,109,104, 95,101,120,101, 99,
|
||||
/* 0x1250 */ 117,116,101, 95,104,101, 97,100,101,114, 0, 95, 98,115,119, 97,
|
||||
/* 0x1260 */ 112, 0, 95, 98,122,101,114,111, 0, 95, 99,108,111,115,101, 0,
|
||||
/* 0x1270 */ 95,101,120,105,116, 0, 95,109, 97,105,110, 0, 95,109,109, 97,
|
||||
/* 0x1280 */ 112, 0, 95,109,112,114,111,116,101, 99,116, 0, 95,109,117,110,
|
||||
/* 0x1290 */ 109, 97,112, 0, 95,111,112,101,110, 0, 95,112,114,101, 97,100,
|
||||
/* 0x12a0 */ 0, 95,114,101, 97,100, 0, 95,117,112,120, 95,109, 97,105,110,
|
||||
/* 0x12b0 */ 0, 95,119,114,105,116,101, 0,100,121,108,100, 95,115,116,117,
|
||||
/* 0x12c0 */ 98, 95, 98,105,110,100,101,114, 0, 95,117,110,112, 97, 99,107,
|
||||
/* 0x12d0 */ 69,120,116,101,110,116, 0, 95,100,111, 95,120,109, 97,112, 0,
|
||||
/* 0x12e0 */ 95,120,114,101, 97,100, 0,115,121,115,103,111, 0, 83, 89, 83,
|
||||
/* 0x12f0 */ 95,101,120,105,116, 0, 83, 89, 83, 95,114,101, 97,100, 0, 83,
|
||||
/* 0x1300 */ 89, 83, 95,119,114,105,116,101, 0, 83, 89, 83, 95,111,112,101,
|
||||
/* 0x1310 */ 110, 0, 83, 89, 83, 95, 99,108,111,115,101, 0, 83, 89, 83, 95,
|
||||
/* 0x1320 */ 109,117,110,109, 97,112, 0, 83, 89, 83, 95,109,112,114,111,116,
|
||||
/* 0x1330 */ 101, 99,116, 0, 83, 89, 83, 95,112,114,101, 97,100, 0, 83, 89,
|
||||
/* 0x1340 */ 83, 95,109,109, 97,112, 0, 0
|
||||
/* 0x0920 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0930 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0940 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0950 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0960 */ 0, 0, 0, 0,204, 85,137,229, 83, 87, 86,131,236, 44,139, 69,
|
||||
/* 0x0970 */ 8,141,120, 24,141, 77,208,137,121, 4,139, 93, 12,131,195,232,
|
||||
/* 0x0980 */ 137, 25,139,117, 16,141, 85,216,137,114, 4,139, 64, 24,137, 2,
|
||||
/* 0x0990 */ 141, 69,224,137,120, 4,137, 24,139, 93, 24,131,236, 8, 49,255,
|
||||
/* 0x09a0 */ 87, 83,232, 54, 1, 0, 0,131,196, 8, 49,210,137,241,255,117,
|
||||
/* 0x09b0 */ 28, 83,255,117, 32,106,255,141, 69,224, 80, 87,232, 1, 2, 0,
|
||||
/* 0x09c0 */ 0,131,196, 32,137,195,139, 78, 16,133,201, 15,132, 2, 1, 0,
|
||||
/* 0x09d0 */ 0,141, 70, 28,131, 56, 14,116, 13, 71, 3, 64, 4, 57,207,114,
|
||||
/* 0x09e0 */ 243,233,237, 0, 0, 0, 3, 64, 8,131,236, 4, 49,255, 87, 87,
|
||||
/* 0x09f0 */ 80,232,153, 5, 0, 0,131,196, 16,137, 69,240,133,192, 15,136,
|
||||
/* 0x0a00 */ 152, 0, 0, 0,131,236, 12, 87, 87,139, 69, 20,137,199, 87, 86,
|
||||
/* 0x0a10 */ 255,117,240,232,111, 5, 0, 0,131,196, 32, 57,248,117,125,141,
|
||||
/* 0x0a20 */ 70, 16,137, 69,232, 49,219,199, 69,236, 0, 0, 0, 0,139, 6,
|
||||
/* 0x0a30 */ 61,190,186,254,202,116, 7, 61,202,254,186,190,117,107, 15,182,
|
||||
/* 0x0a40 */ 70, 7,141, 4,128,141, 4,133, 8, 0, 0, 0,131,236, 8, 80,
|
||||
/* 0x0a50 */ 86,232,249, 4, 0, 0,131,196, 16,139, 70, 4,133,192,116, 60,
|
||||
/* 0x0a60 */ 49,201,139, 85,232,131,122,248, 7,116, 10, 65,131,194, 20, 57,
|
||||
/* 0x0a70 */ 193,114,242,235, 39,139, 26,133,219,116, 33,199, 69,236, 0, 0,
|
||||
/* 0x0a80 */ 0, 0,131,236, 12,106, 0, 83,139,125, 20, 87, 86,255,117,240,
|
||||
/* 0x0a90 */ 232,242, 4, 0, 0,131,196, 32, 57,248,116,146,131,236, 12,106,
|
||||
/* 0x0aa0 */ 127,232,213, 4, 0, 0,131,196, 16,131,236, 8, 49,192,137,241,
|
||||
/* 0x0ab0 */ 137,218, 80, 80, 80,139,117,240, 86, 80,255,117,236,232, 0, 1,
|
||||
/* 0x0ac0 */ 0, 0,131,196, 32,137,195,131,236, 12, 86,232,187, 4, 0, 0,
|
||||
/* 0x0ad0 */ 131,196, 16,137,216,131,196, 44, 94, 95, 91, 93,195, 85,137,229,
|
||||
/* 0x0ae0 */ 83, 87, 86,131,236, 28,137,215,137, 77,240,131, 63, 0, 15,132,
|
||||
/* 0x0af0 */ 185, 0, 0, 0,131,236, 12,139, 77,240,141, 85,224,106, 12,232,
|
||||
/* 0x0b00 */ 8, 4, 0, 0,131,196, 16,139, 93,224,139,117,228,133,219, 15,
|
||||
/* 0x0b10 */ 132,136, 0, 0, 0,141, 70,255, 57,216, 15,131,149, 0, 0, 0,
|
||||
/* 0x0b20 */ 59, 31, 15,135,141, 0, 0, 0, 57,222,115, 82,137, 93,236, 15,
|
||||
/* 0x0b30 */ 182, 69,232,131,236, 12, 80,141, 69,236, 80,255,119, 4, 86,139,
|
||||
/* 0x0b40 */ 69,240,255,112, 4,255, 85, 8,131,196, 32,133,192,117,102, 57,
|
||||
/* 0x0b50 */ 93,236,117, 97,131,125, 12, 0,116, 26,138, 69,233,132,192,116,
|
||||
/* 0x0b60 */ 19, 15,182,192, 15,182, 77,234, 80, 81, 83,255,119, 4,255, 85,
|
||||
/* 0x0b70 */ 12,131,196, 16,139, 69,240, 1,112, 4, 41, 48,235, 18,139, 87,
|
||||
/* 0x0b80 */ 4,131,236, 12,139, 77,240, 86,232,127, 3, 0, 0,131,196, 16,
|
||||
/* 0x0b90 */ 1, 95, 4, 41, 31, 15,133, 89,255,255,255,235, 16,129,254, 85,
|
||||
/* 0x0ba0 */ 80, 88, 33,117, 16,139, 69,240,131, 56, 0,117, 8,131,196, 28,
|
||||
/* 0x0bb0 */ 94, 95, 91, 93,195,131,236, 12,106,127,232,188, 3, 0, 0,131,
|
||||
/* 0x0bc0 */ 196, 16, 85,137,229, 83, 87, 86,131,236, 60,137, 85,216,139, 65,
|
||||
/* 0x0bd0 */ 16,137,198,133,192, 15,132, 76, 2, 0, 0, 49,210,131,125, 12,
|
||||
/* 0x0be0 */ 0, 15,149,194,141, 20, 82,137, 85,220,137, 77,204,141, 89, 28,
|
||||
/* 0x0bf0 */ 199, 69,228, 0, 0, 0, 0, 49,192,199, 69,236, 0, 0, 0, 0,
|
||||
/* 0x0c00 */ 49,255,137,241,137, 69,232,139, 51,141, 86,252,131,250, 2, 15,
|
||||
/* 0x0c10 */ 130,208, 0, 0, 0,129,254, 40, 0, 0,128, 15,132,230, 0, 0,
|
||||
/* 0x0c20 */ 0,131,254, 1, 15,133,236, 1, 0, 0,139, 83, 28,133,210,139,
|
||||
/* 0x0c30 */ 69,232, 15,132,225, 1, 0, 0,137, 85,200,139, 75, 36,137, 77,
|
||||
/* 0x0c40 */ 184,139, 67, 24, 3, 69,236,137, 69,188,137,198,129,230,255, 15,
|
||||
/* 0x0c50 */ 0, 0,137, 69,196,137,194, 41,242, 1,206,137,117,224, 15,132,
|
||||
/* 0x0c60 */ 195, 0, 0, 0,139, 69,220,141, 4, 6,137, 69,208,137,208,137,
|
||||
/* 0x0c70 */ 69,240, 49,210,133,192, 15,149,194,193,226, 4, 49,192,133,201,
|
||||
/* 0x0c80 */ 15,148,192,193,224, 12,131,125, 12, 0,190, 0, 16, 0, 0, 15,
|
||||
/* 0x0c90 */ 69,198,141, 68, 2, 2,137, 69,212,131,249, 1, 25,201, 11, 77,
|
||||
/* 0x0ca0 */ 16,139, 83, 32, 3, 85,216,139, 69, 8,190, 0, 0, 0, 0, 17,
|
||||
/* 0x0cb0 */ 240,131,236, 4, 80, 82, 81,255,117,212,106, 3,255,117,208,255,
|
||||
/* 0x0cc0 */ 117,240,232,204, 2, 0, 0,131,196, 32,131,125,240, 0,139, 77,
|
||||
/* 0x0cd0 */ 236, 15, 68,200,137,194,131,248,255,137,200,139, 77,228,117, 77,
|
||||
/* 0x0ce0 */ 233, 76, 1, 0, 0,131,123, 8, 1, 15,133, 39, 1, 0, 0,131,
|
||||
/* 0x0cf0 */ 123, 12, 16,139, 69,232, 15,133, 29, 1, 0, 0,139, 67, 56, 3,
|
||||
/* 0x0d00 */ 69,236,233, 18, 1, 0, 0,139, 67, 8,139, 85,228, 57, 66, 32,
|
||||
/* 0x0d10 */ 15,135, 3, 1, 0, 0, 57, 66, 36, 15,134,250, 0, 0, 0, 3,
|
||||
/* 0x0d20 */ 66, 24,233,242, 0, 0, 0,139, 69,236,139, 77,228,137, 69,236,
|
||||
/* 0x0d30 */ 131,125, 12, 0,137, 85,240,116, 49,131,123, 36, 0,116, 43,131,
|
||||
/* 0x0d40 */ 123, 32, 0,117, 7,139, 69, 20,137, 16,137,217,131,236, 8,137,
|
||||
/* 0x0d50 */ 206,139, 77, 12,141, 85,184,255,117, 28,255,117, 24,232,123,253,
|
||||
/* 0x0d60 */ 255,255,139, 85,240,137,241,131,196, 16,137, 77,228,139, 69,224,
|
||||
/* 0x0d70 */ 137,198,247,222,129,230,255, 15, 0, 0,116, 22,141, 4, 2,131,
|
||||
/* 0x0d80 */ 236, 8, 86, 80,232,221, 1, 0, 0,139, 69,224,139, 85,240,131,
|
||||
/* 0x0d90 */ 196, 16,133,192,137,193,116, 26,131,236, 4,255,115, 44, 81, 82,
|
||||
/* 0x0da0 */ 232,218, 1, 0, 0,139, 77,224,139, 85,240,131,196, 16,133,192,
|
||||
/* 0x0db0 */ 117,127,139, 69,196, 3, 69,200, 1,206, 1,242, 57,194,115, 43,
|
||||
/* 0x0dc0 */ 133,210,116, 76,137,193, 41,209,131,236, 4, 49,192, 80, 80,106,
|
||||
/* 0x0dd0 */ 255,104, 18, 16, 0, 0,255,115, 44, 81, 82,137,214,232,177, 1,
|
||||
/* 0x0de0 */ 0, 0,131,196, 32, 57,198,116, 39,235, 70,131,125, 12, 0,116,
|
||||
/* 0x0df0 */ 31,131,193, 3,129,225,255, 15, 0, 0,184, 3, 0, 0, 0, 57,
|
||||
/* 0x0e00 */ 193,119, 13,131,236, 8, 81, 82,232,118, 1, 0, 0,131,196, 16,
|
||||
/* 0x0e10 */ 139, 69,204,139, 72, 16,139, 69,232, 71, 3, 91, 4, 57,207, 15,
|
||||
/* 0x0e20 */ 130,223,253,255,255,235, 2, 49,192,131,196, 60, 94, 95, 91, 93,
|
||||
/* 0x0e30 */ 195,131,236, 12,106,127,232, 64, 1, 0, 0,131,196, 16, 85,137,
|
||||
/* 0x0e40 */ 229, 83, 87, 86,129,236, 28, 64, 0, 0,232, 0, 0, 0, 0, 88,
|
||||
/* 0x0e50 */ 139,117, 4,141, 85, 8,141,128,239,255,255,255, 37, 0,240,255,
|
||||
/* 0x0e60 */ 255,139, 72, 16,133,201,137, 85,228,137,117,232,116, 44,131,200,
|
||||
/* 0x0e70 */ 28, 49,246,186, 76, 73, 78, 75,131, 56, 1,117, 19,139,120, 14,
|
||||
/* 0x0e80 */ 187, 69, 68, 73, 84, 49,223,139, 88, 10, 49,211, 9,251,116, 12,
|
||||
/* 0x0e90 */ 70, 3, 64, 4, 57,206,114,224,235, 31,235, 29,139, 88, 24, 15,
|
||||
/* 0x0ea0 */ 183, 3, 1,216,141, 75, 2,139,123,252,131,195,252,133,255,116,
|
||||
/* 0x0eb0 */ 246, 41,251,137, 69,236,137, 77,240,139,117,228,137,240,131,192,
|
||||
/* 0x0ec0 */ 248,131,236, 4,141,141,228,191,255,255, 80,255,117,240,255,117,
|
||||
/* 0x0ed0 */ 236,104, 0, 64, 0, 0, 81, 87, 83,232,135,250,255,255,131,196,
|
||||
/* 0x0ee0 */ 32,137, 69,240,131,236, 8, 87, 83,232,149, 0, 0, 0,131,196,
|
||||
/* 0x0ef0 */ 16,139, 69,232,137, 70,252,139, 69,240,141,102,248,255,224, 49,
|
||||
/* 0x0f00 */ 192,129,196, 28, 64, 0, 0, 94, 95, 91, 93,195, 85,137,229, 83,
|
||||
/* 0x0f10 */ 87, 86,131,236, 12,139, 69, 8,139, 49, 57,198,114, 37,133,192,
|
||||
/* 0x0f20 */ 116, 18,139,113, 4, 49,255,138, 28, 62,136, 28, 58, 71, 57,248,
|
||||
/* 0x0f30 */ 117,245,139, 49, 1, 65, 4, 41,198,137, 49,131,196, 12, 94, 95,
|
||||
/* 0x0f40 */ 91, 93,195,199, 4, 36,127, 0, 0, 0,232, 44, 0, 0, 0,139,
|
||||
/* 0x0f50 */ 84, 36, 4,139, 76, 36, 8,139, 2, 15,200,137, 2,131,233, 4,
|
||||
/* 0x0f60 */ 141, 82, 4,119,242,195, 90, 88, 89, 81, 80, 82, 87,151, 49,192,
|
||||
/* 0x0f70 */ 243,170, 95,195, 90, 15, 52,176, 4,235, 2,176, 1,235, 2,176,
|
||||
/* 0x0f80 */ 74,235, 2,176, 73,235, 2,176,153,235, 2,176, 6,235, 2,176,
|
||||
/* 0x0f90 */ 5,235, 2,176,197,235, 2,176, 3, 15,182,192,137,225, 13, 0,
|
||||
/* 0x0fa0 */ 0, 12, 0,232,204,255,255,255,115, 3,131,200,255,195, 0, 0,
|
||||
/* 0x0fb0 */ 1, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
|
||||
/* 0x0fc0 */ 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0fd0 */ 52, 0, 0, 0, 52, 0, 0, 0,249, 15, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0fe0 */ 52, 0, 0, 0, 3, 0, 0, 0, 12, 0, 1, 0, 16, 0, 1, 0,
|
||||
/* 0x0ff0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x1000 */ 0, 2, 95, 0, 12,115,116, 97,114,116, 0,113, 0, 10, 95, 0,
|
||||
/* 0x1010 */ 79,117,112,120, 95,109, 97,105,110, 0,118,109, 0,123, 98, 0,
|
||||
/* 0x1020 */ 160, 1,119,114,105,116,101, 0,191, 1,101,120,105,116, 0,196,
|
||||
/* 0x1030 */ 1,112,114,101, 97,100, 0,211, 1, 99,108,111,115,101, 0,216,
|
||||
/* 0x1040 */ 1,111,112,101,110, 0,221, 1,114,101, 97,100, 0,231, 1, 0,
|
||||
/* 0x1050 */ 2,109,104, 95,101,120,101, 99,117,116,101, 95,104,101, 97,100,
|
||||
/* 0x1060 */ 101,114, 0,109, 95, 98,122,101,114,111, 0,181, 1, 2, 0, 0,
|
||||
/* 0x1070 */ 0, 3, 0,228, 18, 0, 3, 0,229, 18, 0, 0, 4, 97,105,110,
|
||||
/* 0x1080 */ 0,155, 1,112,114,111,116,101, 99,116, 0,201, 1,117,110,109,
|
||||
/* 0x1090 */ 97,112, 0,206, 1,109, 97,112, 0,226, 1, 3, 0,190, 28, 0,
|
||||
/* 0x10a0 */ 0, 2,115,119, 97,112, 0,176, 1,122,101,114,111, 0,186, 1,
|
||||
/* 0x10b0 */ 3, 0,207, 30, 0, 3, 0,230, 30, 0, 3, 0,230, 30, 0, 3,
|
||||
/* 0x10c0 */ 0,247, 30, 0, 3, 0,251, 30, 0, 3, 0,255, 30, 0, 3, 0,
|
||||
/* 0x10d0 */ 131, 31, 0, 3, 0,135, 31, 0, 3, 0,139, 31, 0, 3, 0,143,
|
||||
/* 0x10e0 */ 31, 0, 3, 0,147, 31, 0, 3, 0,151, 31, 0, 4, 0, 0, 0,
|
||||
/* 0x10f0 */ 15, 1, 0, 0,102, 31, 0, 0, 13, 0, 0, 0, 3, 0, 16, 0,
|
||||
/* 0x1100 */ 0, 16, 0, 0, 33, 0, 0, 0, 15, 1, 0, 0, 79, 31, 0, 0,
|
||||
/* 0x1110 */ 40, 0, 0, 0, 15, 1, 0, 0,102, 31, 0, 0, 47, 0, 0, 0,
|
||||
/* 0x1120 */ 15, 1, 0, 0,139, 31, 0, 0, 54, 0, 0, 0, 15, 1, 0, 0,
|
||||
/* 0x1130 */ 123, 31, 0, 0, 60, 0, 0, 0, 15, 1, 0, 0, 62, 30, 0, 0,
|
||||
/* 0x1140 */ 66, 0, 0, 0, 15, 1, 0, 0,147, 31, 0, 0, 72, 0, 0, 0,
|
||||
/* 0x1150 */ 15, 1, 0, 0,127, 31, 0, 0, 82, 0, 0, 0, 15, 1, 0, 0,
|
||||
/* 0x1160 */ 131, 31, 0, 0, 90, 0, 0, 0, 15, 1, 0, 0,143, 31, 0, 0,
|
||||
/* 0x1170 */ 96, 0, 0, 0, 15, 1, 0, 0,135, 31, 0, 0,103, 0, 0, 0,
|
||||
/* 0x1180 */ 15, 1, 0, 0,151, 31, 0, 0,109, 0, 0, 0, 15, 1, 0, 0,
|
||||
/* 0x1190 */ 101, 25, 0, 0,119, 0, 0, 0, 15, 1, 0, 0,119, 31, 0, 0,
|
||||
/* 0x11a0 */ 126, 0, 0, 0, 15, 1, 0, 0,100, 25, 0, 0,132, 0, 0, 0,
|
||||
/* 0x11b0 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 95, 98,
|
||||
/* 0x11c0 */ 122,101,114,111, 0, 95, 95,109,104, 95,101,120,101, 99,117,116,
|
||||
/* 0x11d0 */ 101, 95,104,101, 97,100,101,114, 0, 95, 98,115,119, 97,112, 0,
|
||||
/* 0x11e0 */ 95, 98,122,101,114,111, 0, 95, 99,108,111,115,101, 0, 95,101,
|
||||
/* 0x11f0 */ 120,105,116, 0, 95,109, 97,105,110, 0, 95,109,109, 97,112, 0,
|
||||
/* 0x1200 */ 95,109,112,114,111,116,101, 99,116, 0, 95,109,117,110,109, 97,
|
||||
/* 0x1210 */ 112, 0, 95,111,112,101,110, 0, 95,112,114,101, 97,100, 0, 95,
|
||||
/* 0x1220 */ 114,101, 97,100, 0, 95,117,112,120, 95,109, 97,105,110, 0, 95,
|
||||
/* 0x1230 */ 119,114,105,116,101, 0,115,116, 97,114,116, 0,100,121,108,100,
|
||||
/* 0x1240 */ 95,115,116,117, 98, 95, 98,105,110,100,101,114, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
76
src/stub/src/arch/i386/bxx.S
Normal file
76
src/stub/src/arch/i386/bxx.S
Normal file
@ -0,0 +1,76 @@
|
||||
/* i386_bxx.S -- i386 Call/Branch Trick unfilter
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 2005-2019 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
//#include "regs.h"
|
||||
|
||||
i386bxx: # (*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
cmpl $0x49,4*NBPW(%esp); jne ckend0 # filter: JMP, CALL, 6-byte Jxx
|
||||
#endif
|
||||
push %ebp; movl %esp,%ebp
|
||||
push %ebx # C-language saved regs
|
||||
push %esi
|
||||
push %edi
|
||||
|
||||
movl 2*NBPW(%ebp),%esi // src
|
||||
movl 3*NBPW(%ebp),%ecx // len
|
||||
movl 4*NBPW(%ebp),%edx // b_cto8 (%dl)
|
||||
lea (1- 4)(%esi,%ecx),%ecx # beyond last possible displacement
|
||||
movl %esi,%ebx // start of buffer
|
||||
jmp ckstart
|
||||
ckloop4:
|
||||
cmpl %ecx,%esi; jae ckend
|
||||
push %esi # tail merge
|
||||
ckloop3:
|
||||
pop %esi; lodsb # next main opcode
|
||||
cmpb $0x80,%al; jb ckloop2 # lo of 6-byte Jcc
|
||||
cmpb $0x8F,%al; ja ckloop2 # hi of 6-byte Jcc
|
||||
cmpb $0x0F,-2(%esi); je ckmark # prefix of 6-byte Jcc
|
||||
ckloop2:
|
||||
subb $ 0xE8,%al
|
||||
cmpb $0xE9-0xE8,%al; ja ckloop4 # not JMP, not CALL
|
||||
ckmark:
|
||||
cmpl %ecx,%esi; jae ckend # peek only; not marked ==> do not consume
|
||||
push %esi; lodsl # (assume) marked, bswapped 32-bit displacement
|
||||
subb %dl,%al; jne ckloop3 # not marked with cto8
|
||||
pop %edi
|
||||
bswap %eax # (0<<24) | d24
|
||||
subl %edi,%eax # hardware: %esi; software: %edi [ 4==delta ]
|
||||
addl %ebx,%eax
|
||||
stosl
|
||||
ckstart:
|
||||
cmpl %ecx,%esi; jae ckend
|
||||
lodsb; jmp ckloop2 # 0x0F prefix would overlap previous displacement
|
||||
ckend:
|
||||
pop %edi
|
||||
pop %esi
|
||||
pop %ebx
|
||||
pop %ebp
|
||||
ckend0:
|
||||
#ifndef NO_METHOD_CHECK
|
||||
ret
|
||||
#endif
|
||||
76
src/stub/src/arch/i386/nrv2b_d32-easy.S
Normal file
76
src/stub/src/arch/i386/nrv2b_d32-easy.S
Normal file
@ -0,0 +1,76 @@
|
||||
/* i386_d_nrv2b-easy.S -- i386 decompressor for NRV2B
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2019 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2019 Laszlo Molnar
|
||||
Copyright (C) 2000-2019 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
cmpb $ M_NRV2B_LE32,methb; jne not_n2b
|
||||
#endif
|
||||
jmp top_n2b
|
||||
|
||||
lit_n2b:
|
||||
incl %esi; movb %dl,(%edi)
|
||||
incl %edi
|
||||
top_n2b:
|
||||
movb (%esi),%dl # speculate: literal, or bottom 8 bits of offset
|
||||
jnextb1yp lit_n2b
|
||||
push $1; pop off
|
||||
offmore_n2b:
|
||||
getnextbp(off)
|
||||
jnextb0np offmore_n2b
|
||||
|
||||
subl $ 3,off; jc len_n2b # use previous offset
|
||||
shll $ 8,off; movzbl %dl,%edx
|
||||
orl %edx,off; incl %esi
|
||||
xorl $~0,off; jz eof
|
||||
movl off,disp
|
||||
len_n2b:
|
||||
push $1; pop off
|
||||
getnextb(len); getnextb(len) # two bits; cc set on result
|
||||
jnz gotlen_n2b # raw 1,2,3 ==> 2,3,4
|
||||
movl off,len # len= 1, the msb
|
||||
addl $3-1,off # raw 2.. ==> 5..
|
||||
lenmore_n2b:
|
||||
getnextb(len)
|
||||
jnextb0n lenmore_n2b
|
||||
gotlen_n2b:
|
||||
cmpl $-0xd00,disp
|
||||
adcl off,len # len += off + (disp < -0xd00)
|
||||
call copy
|
||||
bot_n2b: # In: 0==len
|
||||
jmp top_n2b
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
not_n2b:
|
||||
# fall into 'eof'
|
||||
#endif
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
84
src/stub/src/arch/i386/nrv2d_d32-easy.S
Normal file
84
src/stub/src/arch/i386/nrv2d_d32-easy.S
Normal file
@ -0,0 +1,84 @@
|
||||
/* nrv2d_d-easy.S -- i386 decompressor for NRV2D
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2019 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2019 Laszlo Molnar
|
||||
Copyright (C) 2000-2019 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
cmpb $ M_NRV2D_LE32,methb; jne not_n2d
|
||||
#endif
|
||||
jmp top_n2d
|
||||
|
||||
lit_n2d:
|
||||
incl %esi; movb %dl,(%edi)
|
||||
incl %edi
|
||||
top_n2d:
|
||||
movb (%esi),%dl // speculate: literal, or bottom 8 bits of offset
|
||||
jnextb1yp lit_n2d
|
||||
push $1; pop off
|
||||
jmp getoff_n2d
|
||||
|
||||
off_n2d:
|
||||
dec off
|
||||
getnextbp(off)
|
||||
getoff_n2d:
|
||||
getnextbp(off)
|
||||
jnextb0np off_n2d
|
||||
|
||||
subl $ 3,off; jc offprev_n2d
|
||||
shll $ 8,off; movzbl %dl,%edx
|
||||
orl %edx,off; incl %esi
|
||||
xorl $~0,off; jz eof
|
||||
sarl off // Carry= original low bit
|
||||
movl off,disp // XXX: 2GB
|
||||
jmp len_n2d-2 // CHEAT: assume tail of getnextb is "adcl len,len"
|
||||
offprev_n2d:
|
||||
getnextb(len)
|
||||
len_n2d:
|
||||
getnextb(len); jne gotlen_n2d
|
||||
inc len // len= 1
|
||||
lenmore_n2d:
|
||||
getnextb(len)
|
||||
jnextb0n lenmore_n2d
|
||||
addl $2,len
|
||||
gotlen_n2d:
|
||||
cmpl $-0x500,disp
|
||||
adcl $1,len // len += 1+ (disp < -0x500);
|
||||
call copy
|
||||
bot_n2d: // In: 0==len
|
||||
jmp top_n2d
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
not_n2d:
|
||||
push %edi; pop %esi # src = arg1
|
||||
#endif
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
90
src/stub/src/arch/i386/nrv2e_d32-easy.S
Normal file
90
src/stub/src/arch/i386/nrv2e_d32-easy.S
Normal file
@ -0,0 +1,90 @@
|
||||
/* nrv2e_d-easy.S -- i386 decompressor for NRV2E
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2019 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2019 Laszlo Molnar
|
||||
Copyright (C) 2000-2019 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
cmpb $ M_NRV2E_LE32,methb; jne not_n2e
|
||||
#endif
|
||||
jmp top_n2e
|
||||
|
||||
lit_n2e:
|
||||
incl %esi; movb %dl,(%edi)
|
||||
incl %edi
|
||||
top_n2e:
|
||||
movb (%esi),%dl # speculate: literal, or bottom 8 bits of offset
|
||||
jnextb1yp lit_n2e
|
||||
push $1; pop off
|
||||
jmp getoff_n2e
|
||||
|
||||
off_n2e:
|
||||
dec off
|
||||
getnextbp(off)
|
||||
getoff_n2e:
|
||||
getnextbp(off)
|
||||
jnextb0np off_n2e
|
||||
|
||||
subl $ 3,off; jc offprev_n2e
|
||||
shll $ 8,off; movzbl %dl,%edx
|
||||
orl %edx,off; incl %esi
|
||||
xorl $~0,off; jz eof
|
||||
sarl off # Carry= original low bit
|
||||
movl off,disp # XXX: 2GB
|
||||
jc lenlast_n2e
|
||||
jmp lenmore_n2e
|
||||
|
||||
offprev_n2e:
|
||||
jnextb1y lenlast_n2e
|
||||
lenmore_n2e:
|
||||
incl len # len= 1
|
||||
jnextb1y lenlast_n2e
|
||||
len_n2e:
|
||||
getnextb(len)
|
||||
jnextb0n len_n2e
|
||||
addl $6-2-2,len
|
||||
jmp gotlen_n2e
|
||||
|
||||
lenlast_n2e:
|
||||
getnextb(len) # 0,1,2,3
|
||||
gotlen_n2e:
|
||||
cmpl $-0x500,disp
|
||||
adcl $2,len # len += 2+ (disp < -0x500);
|
||||
call copy
|
||||
bot_n2e: # In: 0==len
|
||||
jmp top_n2e
|
||||
|
||||
#ifndef NO_METHOD_CHECK
|
||||
not_n2e:
|
||||
push %edi; pop %esi # src = arg1
|
||||
#endif
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
@ -31,110 +31,255 @@
|
||||
;
|
||||
*/
|
||||
|
||||
#include "arch/i386/macros.S"
|
||||
NBPW= 4
|
||||
|
||||
section I386BXX0
|
||||
0: .word end_filter // - 0b // sizeof unfilter
|
||||
//#include "arch/i386/macros.S"
|
||||
.altmacro
|
||||
.att_syntax
|
||||
.code32
|
||||
.macro section name
|
||||
.section \name
|
||||
.code32
|
||||
.endm
|
||||
|
||||
section I386BXX1
|
||||
ret // in case no filter
|
||||
end_filter:
|
||||
// 2-byte bramches, even when destination is not known yet
|
||||
.macro jmps target
|
||||
.byte 0xeb, \target - . - 1
|
||||
.endm
|
||||
|
||||
.macro jzs target
|
||||
.byte 0x74, \target - . - 1
|
||||
.endm
|
||||
|
||||
.macro jnzs target
|
||||
.byte 0x75, \target - . - 1
|
||||
.endm
|
||||
|
||||
.macro jcs target
|
||||
.byte 0x72, \target - . - 1
|
||||
.endm
|
||||
|
||||
.macro jncs target
|
||||
.byte 0x73, \target - . - 1
|
||||
.endm
|
||||
|
||||
.macro jnas target
|
||||
.byte 0x76, \target - . - 1
|
||||
.endm
|
||||
#define jbes jnas
|
||||
|
||||
mlc_cmd = 0
|
||||
LC_SEGMENT= 0x01
|
||||
mlc_cmdsize = 4
|
||||
|
||||
sz_Mach_header= 7*4
|
||||
mhdr_ncmds= 4*4
|
||||
mhdr_flags= 6*4
|
||||
MH_PIE=0x200000
|
||||
|
||||
sz_Mach_segment= 2*NBPW + 16 + 4*NBPW + 4*4
|
||||
mseg_segname= 2*NBPW
|
||||
mseg_vmaddr= 2*NBPW + 16
|
||||
mseg_vmsize= 2*NBPW + 16 + NBPW
|
||||
mseg_initprot= 2*NBPW + 16 + (4*NBPW) + 4
|
||||
|
||||
msec_addr= 2*16
|
||||
msec_size= 2*16 + NBPW
|
||||
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
// see glibc/sysdeps/i386/elf/start.S
|
||||
// see glibc/sysdeps/amd64/elf/start.S
|
||||
**************************************************************************/
|
||||
|
||||
section LEXEC000
|
||||
MAP_FIXED = 0x10
|
||||
MAP_PRIVATE = 0x02
|
||||
MAP_ANON = 0x1000
|
||||
PROT_NONE = 0
|
||||
PROT_READ = 1
|
||||
PROT_WRITE = 2
|
||||
PROT_EXEC = 4
|
||||
MAP_ANON_FD = -1
|
||||
|
||||
SYSBASE= 0 // at runtime: 0xC0000
|
||||
SYS_mmap =0xc5 + SYSBASE
|
||||
SYS_mprotect =0x4a + SYSBASE
|
||||
SYS_munmap =0x49 + SYSBASE
|
||||
SYS_write = 4 + SYSBASE
|
||||
|
||||
#define __c4(a,b,c,d) (((a)<<(0*8)) | ((b)<<(1*8)) | ((c)<<(2*8)) | ((d)<<(3*8)))
|
||||
#define __c8(a,b,c,d,e,f,g,h) (__c4(a,b,c,d) | (__c4(e,f,g,h) << 32))
|
||||
|
||||
// FYI: Following the env[] vector there is another vector apple[] of strings.
|
||||
// Contents from one actual instance on MacOS 10.13 HighSierra:
|
||||
// "executable_path=<rooted_path>"
|
||||
// "pfz=0x7ffffff84000"
|
||||
// "stack_guard=0x850795b0f36900c2"
|
||||
// "malloc_entropy=0x94a87434eb9e2c1,0xf6814219485392e8"
|
||||
// "main_stack=0x7ffeefc00000,0x800000,0x7ffeebc00000,0x4000000"
|
||||
// "executable_file=0x1000008,0x2209ce"
|
||||
// when %rsp was 0x7ffeefbffaf0.
|
||||
|
||||
// Notes:
|
||||
// Command-line debugger from Xcode: lldb foo; "process launch -s"
|
||||
|
||||
//0: .word -0b + &Mach_header
|
||||
//0: .word -0b + l_info
|
||||
section MACHMAINX
|
||||
_start: .globl _start
|
||||
//// int3
|
||||
/*
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date.
|
||||
;; Invoke gdb, and give a 'run' command. Define a single-step macro such as
|
||||
;; define g
|
||||
;; stepi
|
||||
;; x/i $pc
|
||||
;; end
|
||||
;; and a step-over macro such as
|
||||
;; define h
|
||||
;; x/2i $pc
|
||||
;; tbreak *$_
|
||||
;; continue
|
||||
;; x/i $pc
|
||||
;; end
|
||||
;; Step through the code; remember that <Enter> repeats the previous command.
|
||||
;;
|
||||
*/
|
||||
call main // push address of decompress subroutine
|
||||
decompress:
|
||||
// int3
|
||||
call main // push &f_exp
|
||||
_start_end:
|
||||
|
||||
section MACH_UNC
|
||||
/* Returns 0 on success; non-zero on failure. */
|
||||
decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method)
|
||||
|
||||
/* Arguments according to calling convention */
|
||||
#define src %esi
|
||||
#define lsrc INS
|
||||
#define dst %edi
|
||||
#define ldst OUTS /* Out: actually a reference: &len_dst */
|
||||
#define meth PARM
|
||||
#define methb PARM
|
||||
|
||||
// /*************************************************************************
|
||||
// // C callable decompressor
|
||||
// **************************************************************************/
|
||||
|
||||
// /* Offsets to parameters, allowing for {pusha + call} */
|
||||
#define O_INP (8*4 +1*4)
|
||||
#define O_INS (8*4 +2*4)
|
||||
#define O_OUTP (8*4 +3*4)
|
||||
#define O_OUTS (8*4 +4*4)
|
||||
#define O_PARAM (8*4 +5*4)
|
||||
#define O_INP NBPW*(8+1)
|
||||
#define O_INS NBPW*(8+2)
|
||||
#define O_OUTP NBPW*(8+3)
|
||||
#define O_OUTS NBPW*(8+4)
|
||||
#define O_PARAM NBPW*(8+5)
|
||||
|
||||
#define INP dword ptr [esp+O_INP]
|
||||
#define INS dword ptr [esp+O_INS]
|
||||
#define OUTP dword ptr [esp+O_OUTP]
|
||||
#define OUTS dword ptr [esp+O_OUTS]
|
||||
#define PARM dword ptr [esp+O_PARAM]
|
||||
#define INP O_INP(%esp)
|
||||
#define INS O_INS(%esp)
|
||||
#define OUTP O_OUTP(%esp)
|
||||
#define OUTS O_OUTS(%esp)
|
||||
#define PARM O_PARAM(%esp)
|
||||
|
||||
section LEXEC009
|
||||
//; empty section for commonality with l_lx_exec86.asm
|
||||
section LEXEC010
|
||||
pusha
|
||||
// cld
|
||||
M_NRV2B_LE32=2 // ../conf.h
|
||||
M_NRV2D_LE32=5
|
||||
M_NRV2E_LE32=8
|
||||
|
||||
mov esi, INP
|
||||
mov edi, OUTP
|
||||
section NRV_HEAD
|
||||
|
||||
or ebp, -1
|
||||
//;; align 8
|
||||
0: .word 9f - 0b
|
||||
#include "arch/i386/bxx.S"
|
||||
9:
|
||||
|
||||
#include "arch/i386/nrv2b_d32.S"
|
||||
#include "arch/i386/nrv2d_d32.S"
|
||||
#include "arch/i386/nrv2e_d32.S"
|
||||
/* Working registers */
|
||||
#define off %eax /* XXX: 2GB */
|
||||
#define len %ecx /* XXX: 2GB */
|
||||
#define bits %ebx
|
||||
#define disp %ebp
|
||||
|
||||
pusha
|
||||
movl INP,%esi // hardware src for movsb, lodsb
|
||||
movl INS,%ecx // srclen
|
||||
add %esi,%ecx; mov %ecx,INP // src EOF
|
||||
movl OUTP,%edi // hardware dst for movsb
|
||||
xorl bits,bits // empty; force refill
|
||||
xorl len,len // create loop invariant
|
||||
orl $(~0),disp // -1: initial displacement
|
||||
jmp setup
|
||||
|
||||
/* AMD64 branch prediction is much worse if there are more than 3 branches
|
||||
per 16-byte block. The jnextb would suffer unless inlined. getnextb is OK
|
||||
using closed subroutine to save space, and should be OK on cycles because
|
||||
CALL+RET should be predicted. getnextb could partially expand, using closed
|
||||
subroutine only for refill.
|
||||
*/
|
||||
/* jump on next bit {0,1} with prediction {y==>likely, n==>unlikely} */
|
||||
/* Prediction omitted for now. */
|
||||
/* On refill: prefetch next byte, for latency reduction on literals and offsets. */
|
||||
#define jnextb0np jnextb0yp
|
||||
#define jnextb0yp GETBITp; jnc
|
||||
#define jnextb1np jnextb1yp
|
||||
#define jnextb1yp GETBITp; jc
|
||||
#define GETBITp \
|
||||
addl bits,bits; jnz 0f; \
|
||||
movl (%esi),bits; subl $-4,%esi; \
|
||||
adcl bits,bits; movb (%esi),%dl; \
|
||||
0:
|
||||
/* Same, but without prefetch (not useful for length of match.) */
|
||||
#define jnextb0n jnextb0y
|
||||
#define jnextb0y GETBIT; jnc
|
||||
#define jnextb1n jnextb1y
|
||||
#define jnextb1y GETBIT; jc
|
||||
#define GETBIT \
|
||||
addl bits,bits; jnz 0f; \
|
||||
movl (%esi),bits; subl $-4,%esi; \
|
||||
adcl bits,bits; \
|
||||
0:
|
||||
|
||||
/* rotate next bit into bottom bit of reg */
|
||||
#define getnextbp(reg) GETBITp; adcl reg,reg
|
||||
#define getnextb(reg) getnextbp(reg)
|
||||
|
||||
|
||||
getbit:
|
||||
addl bits,bits; jz refill // Carry= next bit
|
||||
rep; ret
|
||||
refill:
|
||||
movl (%esi),bits; subl $-4,%esi // next 32 bits; set Carry
|
||||
adcl bits,bits // LSB= 1 (CarryIn); CarryOut= next bit
|
||||
movb (%esi),%dl // speculate: literal, or bottom 8 bits of offset
|
||||
rep; ret
|
||||
|
||||
copy: // In: len, %edi, disp; Out: 0==len, %edi, disp; trashes %eax, %edx
|
||||
leal (%edi,disp),%eax; cmpl $5,len // <=3 is forced
|
||||
movb (%eax),%dl; jbe copy1 // <=5 for better branch predict
|
||||
cmpl $-4,disp; ja copy1 // 4-byte chunks would overlap
|
||||
subl $4,len // adjust for termination cases
|
||||
copy4:
|
||||
movl (%eax),%edx; addl $4, %eax; subl $4,len
|
||||
movl %edx,(%edi); leal 4(%edi),%edi; jnc copy4
|
||||
addl $4,len; movb (%eax),%dl; jz copy0
|
||||
copy1:
|
||||
incl %eax; movb %dl,(%edi); decl len
|
||||
movb (%eax),%dl
|
||||
leal 1(%edi),%edi; jnz copy1
|
||||
copy0:
|
||||
rep; ret
|
||||
|
||||
setup:
|
||||
cld
|
||||
|
||||
section NRV2E
|
||||
#include "arch/i386/nrv2e_d32-easy.S"
|
||||
|
||||
section NRV2D
|
||||
#include "arch/i386/nrv2d_d32-easy.S"
|
||||
|
||||
section NRV2B
|
||||
#include "arch/i386/nrv2b_d32-easy.S"
|
||||
|
||||
/* lzma has its own 'section's */
|
||||
.intel_syntax noprefix
|
||||
#include "arch/i386/lzma_d.S"
|
||||
.att_syntax
|
||||
|
||||
section LEXEC015
|
||||
// eax is 0 from decompressor code
|
||||
//xor eax, eax ; return code
|
||||
section NRV_TAIL
|
||||
/* NRV_TAIL is empty */
|
||||
|
||||
// check compressed size
|
||||
mov edx, INP
|
||||
add edx, INS
|
||||
cmp esi, edx
|
||||
jz .ok
|
||||
dec eax
|
||||
.ok:
|
||||
section MACHMAINY
|
||||
eof:
|
||||
subl OUTP,dst // dst -= original dst
|
||||
movl OUTS,%ecx; movl dst,(%ecx) // actual length used at dst XXX: 4GB
|
||||
subl INP,src // src -= eof; // return 0: good; else: bad
|
||||
movl src,7*NBPW(%esp) // %eax in 'popa'
|
||||
popa
|
||||
ret
|
||||
|
||||
// write back the uncompressed size
|
||||
sub edi, OUTP
|
||||
mov edx, OUTS
|
||||
mov [edx], edi
|
||||
end_decompress: .globl end_decompress
|
||||
|
||||
mov [7*4 + esp], eax
|
||||
popa
|
||||
ret
|
||||
/* IDENTSTR goes here */
|
||||
|
||||
ctojr32
|
||||
ctok32 edi, dl
|
||||
cit32 edi
|
||||
section LEXEC017
|
||||
popa
|
||||
ret
|
||||
|
||||
section LEXEC020
|
||||
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
section MACHMAINZ
|
||||
PAGE_SIZE= ( 1<<12)
|
||||
PAGE_MASK= -PAGE_SIZE
|
||||
|
||||
GAP= 128 // > farthest prefetch; must match ../../p_mach.cpp
|
||||
NO_LAP= 64 // avoid overlap for folded loader; must match ../../p_mach.cpp
|
||||
@ -144,40 +289,125 @@ sz_b_info= 12
|
||||
sz_cpr= 4
|
||||
b_method= 8
|
||||
|
||||
#define r_MHDR edi
|
||||
|
||||
main:
|
||||
pop %ebp // &_start_end
|
||||
lea -2*NBPW + (_start - _start_end)(%ebp),%esi
|
||||
|
||||
movzwl 0(%ebp),%eax // displ to f_exp
|
||||
lea 2(%ebp),%ecx; push %ecx // FUNF
|
||||
add %eax,%ebp // &f_exp
|
||||
|
||||
movl %esi,%edx
|
||||
movl %esi,%edi; lodsl; subl %eax,%r_MHDR
|
||||
movl %esi,%ecx; lodsl; subl %eax,%ecx // ADRX= &{l_info; p_info; b_info}
|
||||
// For the benefit of 'fold':
|
||||
push %ecx // ADRX
|
||||
subl %ecx,%edx; push %edx // LENX
|
||||
push %edi // MHDR
|
||||
jmp unfold0
|
||||
|
||||
// Decompress the rest of this loader, and jump to it.
|
||||
unfold:
|
||||
pop esi; lodsd; // push %eax // O_BINFO
|
||||
push esi; pop ebx // &{ b_info:{sz_unc, sz_cpr, 4{byte}}, compressed_data...}
|
||||
mov ecx,[sz_cpr + ebx]
|
||||
lea esi,[ -1+ sz_b_info + ecx + ebx] // &hi_byte folded original
|
||||
mov edi,[sz_unc + ebx]
|
||||
lea edi,[GAP + NO_LAP -1+ sz_b_info + edi + ebx] // &hi_byte folded copy
|
||||
std; rep movsb // copy descending
|
||||
pop %ebx // &{ b_info:{sz_unc, sz_cpr, 4{byte}}, compressed_fold...}
|
||||
// Find __LINKEDIT
|
||||
lea sz_Mach_header(%r_MHDR),%esi
|
||||
sub %ecx,%ecx
|
||||
L100:
|
||||
add %ecx,%esi // next command
|
||||
movl mlc_cmdsize(%esi),%ecx
|
||||
cmpl $LC_SEGMENT,(%esi); jne L100
|
||||
cmpl $__c4('L','I','N','K'),2+mseg_segname(%esi); jne L100
|
||||
cmpl $__c4('E','D','I','T'),6+mseg_segname(%esi); jne L100
|
||||
movl mseg_vmaddr(%esi),%ecx // arg1 for mprotect; dst= new unfold
|
||||
|
||||
lea edx,[GAP + ebx] // &unfolded
|
||||
mov esi,ebx // &b_info
|
||||
lea ebx,[1+ edi] // &lo_byte folded copy
|
||||
push edx // &unfolded code
|
||||
cld
|
||||
lodsd
|
||||
push eax // sz_uncompressed (maximum dstlen for lzma)
|
||||
mov ecx,esp // save &dstlen
|
||||
push eax // space for 5th param
|
||||
push ecx // &dstlen
|
||||
push edx // &dst
|
||||
lodsd
|
||||
push eax // sz_compressed (srclen)
|
||||
lodsd
|
||||
mov [4*3 + esp],eax // last 4 bytes of b_info
|
||||
push ebx // &copied_compressed_data
|
||||
call ebp // decompress(&src, srclen, &dst, &dstlen, b_info.misc)
|
||||
add esp, (5+1)*4 // (5+1) args to decompress
|
||||
lea ebx,[-4+ _start - decompress + ebp] // &total_length
|
||||
ret // &destination
|
||||
main:
|
||||
pop ebp // &decompress
|
||||
// Unfold
|
||||
movl %ebx,%esi
|
||||
push $PROT_READ|PROT_EXEC // arg3 for mprotect
|
||||
lodsl; push %eax // arg2 for mprotect; .sz_unc == dstlen
|
||||
movl %esp,%edx // remember &dstlen
|
||||
push %ecx // arg1 for mprotect; dst= new unfold
|
||||
|
||||
push NBPW(%esi) // arg5 b_method (.b_method - .sz_cpr)
|
||||
push %edx // arg4 &dstlen
|
||||
push %ecx // arg3 dst
|
||||
lodsl; push %eax // arg2 .sz_cpr
|
||||
lodsl; push %esi // arg1 src
|
||||
call *%ebp // decompress
|
||||
addl $NBPW*5,%esp // 5 params to FEXP()
|
||||
|
||||
// PROT_EXEC
|
||||
pop %edi // arg1 dst= new unfold
|
||||
push %edi
|
||||
push %edi // retaddr: dst is tail !!
|
||||
// Use the copy.
|
||||
// FIXME: ADRX, LENX
|
||||
// rsp/ fd,ADRU,LENU,%entry,&Mach_header
|
||||
// FALL THROUGH to mprotect
|
||||
mprotect:
|
||||
movb $SYS_mprotect,%al
|
||||
L200:
|
||||
movzbl %al,%eax
|
||||
mov %esp,%ecx // &{user_ra, arg1, arg2, ...}
|
||||
or $0xC0000,%eax
|
||||
call sysgo; jnc 0f
|
||||
or $~0,%eax // mov %eax,errno
|
||||
0:
|
||||
ret $3*NBPW // always remove 3 arguments from stack
|
||||
write:
|
||||
movb $SYS_write,%al; jmp L200
|
||||
sysgo:
|
||||
pop %edx // return address for sysenter
|
||||
.byte 0x0f,0x34 // sysenter
|
||||
|
||||
#define DEBUG 1
|
||||
#if DEBUG /*{*/
|
||||
TRACE_BUFLEN=0x78
|
||||
FD_STDERR=2
|
||||
trace: // push $__c4(...); call trace
|
||||
pusha; movl %esp,%esi // input
|
||||
movl NBPW*(8+1)(%esp),%eax // annotation
|
||||
subl $TRACE_BUFLEN,%esp
|
||||
movl %esp,%edi // output
|
||||
|
||||
pushl %eax; movb $'\n',%al; stosb; popl %eax
|
||||
0: // print annotation
|
||||
stosb; shr $8,%eax; jnz 0b
|
||||
|
||||
pushl $8 // words per row
|
||||
popl %eax
|
||||
L610: // each word
|
||||
pushl %eax // count
|
||||
movb $' ',%al; call trace_hex // next word
|
||||
popl %eax; decl %eax; jnz L610
|
||||
|
||||
movb $'\n',%al; stosb
|
||||
xchg %edi,%eax
|
||||
subl %esp,%eax // count
|
||||
movl %esp,%ecx // buf
|
||||
pushl %eax; pushl %ecx; push $FD_STDERR
|
||||
call write
|
||||
addl $TRACE_BUFLEN,%esp
|
||||
popa
|
||||
ret $NBPW // remove annotation
|
||||
|
||||
trace_hex:
|
||||
stosb // punctuation
|
||||
lodsl // datum
|
||||
call 0f; .ascii "0123456789abcdef"; 0: pop %ebx
|
||||
push $8; pop %ecx // iterations
|
||||
1:
|
||||
rol $4,%eax; mov %eax,%edx
|
||||
andl $0xf,%eax; xlat; stosb; xchg %eax,%edx
|
||||
dec %ecx; jnz 1b
|
||||
ret
|
||||
|
||||
#endif /*}*/
|
||||
|
||||
unfold0:
|
||||
call unfold
|
||||
.long 0 // O_BINFO
|
||||
FOLD:
|
||||
// compressed fold_elf86 follows
|
||||
|
||||
/* vim:set ts=8 sw=8 et: */
|
||||
|
||||
@ -29,7 +29,8 @@
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/i386/macros.S"
|
||||
.att_syntax // opcode src,dst
|
||||
NBPW= 4
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
@ -40,54 +41,48 @@ sz_p_info= 12
|
||||
|
||||
_start: .globl _start # ignored, but silence "cannot find entry symbol _start" from ld
|
||||
|
||||
i386_ts_eax = 0*4
|
||||
i386_ts_ebx = 1*4
|
||||
i386_ts_ecx = 2*4
|
||||
i386_ts_edx = 3*4
|
||||
i386_ts_edi = 4*4
|
||||
i386_ts_esi = 5*4
|
||||
i386_ts_ebp = 6*4
|
||||
i386_ts_esp = 7*4
|
||||
i386_ts_ss = 8*4
|
||||
i386_ts_eflags = 9*4
|
||||
i386_ts_eip = 10*4
|
||||
i386_ts_cs = 11*4
|
||||
i386_ts_ds = 12*4
|
||||
i386_ts_es = 13*4
|
||||
i386_ts_fs = 14*4
|
||||
i386_ts_gs = 15*4
|
||||
//In:
|
||||
// %ebp= f_exp
|
||||
// %esp/ MHDR, LENX, ADRX, FUNF, argc, argv, 0, envp, 0, apple, 0, strings
|
||||
|
||||
fold_begin: // In: ebx= &total_length
|
||||
//// int3
|
||||
push 0 # default value for mhdrp
|
||||
mov edi,esp # &mhdrp
|
||||
lea esi,[ 2+ ebp] # &f_unfilter
|
||||
mov edx,[ebx] # sz_total
|
||||
mov ecx,ebx
|
||||
sub ecx,edx # src= &{l_info; p_info; b_info}
|
||||
mov ebx,[sz_unc + sz_p_info + sz_l_info + ecx] # sz_mach_headers
|
||||
mov eax,2048 # allow for /usr/lib/dyld
|
||||
cmp eax,ebx
|
||||
jbe 0f
|
||||
mov ebx,eax
|
||||
fold_begin:
|
||||
// int3
|
||||
pop %eax // MHDR
|
||||
pop %edx // LENX
|
||||
pop %ecx // ADRX &{l_info; p_info; b_info}
|
||||
|
||||
mov sz_unc + sz_p_info + sz_l_info(%ecx),%ebx # sz_mach_headers
|
||||
movl $2048,%esi
|
||||
cmp %esi,%ebx # allow for /usr/lib/dyld: 1564==sizeofcmds (MacOS 10.6.8)
|
||||
ja 0f
|
||||
mov %esi,%ebx
|
||||
0:
|
||||
sub esp,ebx # alloca
|
||||
pusha # (mhdrpp, f_unfilter, f_decompress, mhdr, sz_mhdr, sz_total, src, junk)
|
||||
call upx_main # Out: eax= &Mach_i386_thread_state of dyld
|
||||
mov ecx,[4*4 + esp] # sz_mhdr
|
||||
lea esp,[8*4 + 1*ecx + esp] # un_pusha, un_alloca; keep mhdrp
|
||||
jmp [i386_ts_eip + eax] # esp: mhdrp, argc, argv...
|
||||
pop %esi // FUNF
|
||||
|
||||
push $0 # default value for mhdrp
|
||||
mov %esp,%edi # &mhdrp
|
||||
sub %ebx,%esp # alloca
|
||||
pusha # (mhdrpp, f_unfilter, f_decompress, mhdr, sz_mhdr, sz_total, src, MHDR)
|
||||
call upx_main # Out: %eax= entry
|
||||
movl 5*NBPW(%esp),%edi # sz_total
|
||||
movl 7*NBPW(%esp),%esi # MHDR
|
||||
push %eax; push %edi; push %esi; call munmap
|
||||
pop %eax; pop %eax; pop %eax # %eax= entry
|
||||
|
||||
mov 4*NBPW(%esp),%ecx # sz_mhdr
|
||||
lea 8*NBPW(%esp,%ecx),%esp # un_pusha, un_alloca; keep mhdrp
|
||||
jmp *%eax # esp: mhdrp, argc, argv...
|
||||
|
||||
bswap: .globl bswap
|
||||
mov eax,[4+ esp] # ptr
|
||||
mov ecx,[8+ esp] # len
|
||||
mov 1*NBPW(%esp),%eax # ptr
|
||||
mov 2*NBPW(%esp),%ecx # len
|
||||
0:
|
||||
mov edx,[eax]
|
||||
mov (%eax),%edx
|
||||
.byte 0x0f,0xc8+2 // bswap edx
|
||||
mov [eax],edx
|
||||
sub ecx,4
|
||||
lea eax,[4+ eax]
|
||||
jae 0b
|
||||
mov %edx,(%eax)
|
||||
sub $NBPW,%ecx
|
||||
lea NBPW(%eax),%eax
|
||||
ja 0b
|
||||
ret
|
||||
|
||||
SYS_exit =1
|
||||
@ -102,36 +97,40 @@ SYS_mmap =197
|
||||
SYS_munmap = 73
|
||||
SYS_mprotect= 74
|
||||
|
||||
spin: .globl spin
|
||||
rep; nop; jmp spin
|
||||
ret
|
||||
|
||||
sysgo:
|
||||
pop edx # return address for sysenter
|
||||
pop %edx # return address for sysenter
|
||||
.byte 0x0f, 0x34 # sysenter
|
||||
|
||||
// lazy jmps enable compression of this code
|
||||
write: .globl write
|
||||
mov al,SYS_write; jmps 2+ 0f; 0:
|
||||
mov $SYS_write,%al; 0:jmp 0f
|
||||
exit: .globl exit
|
||||
mov al,SYS_exit; jmps 2+ 0f; 0:
|
||||
mov $SYS_exit,%al; 0:jmp 0f
|
||||
mprotect: .globl mprotect
|
||||
mov al,SYS_mprotect; jmps 2+ 0f; 0:
|
||||
mov $SYS_mprotect,%al; 0:jmp 0f
|
||||
munmap: .globl munmap
|
||||
mov al,SYS_munmap; jmps 2+ 0f; 0:
|
||||
mov $SYS_munmap,%al; 0:jmp 0f
|
||||
pread: .globl pread
|
||||
mov al,SYS_pread; jmps 2+ 0f; 0:
|
||||
mov $SYS_pread,%al; 0:jmp 0f
|
||||
close: .globl close
|
||||
mov al,SYS_close; jmps 2+ 0f; 0:
|
||||
mov $SYS_close,%al; 0:jmp 0f
|
||||
open: .globl open
|
||||
mov al,SYS_open; jmps 2+ 0f; 0:
|
||||
mov $SYS_open,%al; 0:jmp 0f
|
||||
mmap: .globl mmap
|
||||
mov al,SYS_mmap; jmps 2+ 0f; 0:
|
||||
mov $SYS_mmap,%al; 0:jmp 0f
|
||||
read: .globl read
|
||||
mov al,SYS_read
|
||||
mov $SYS_read,%al; 0:
|
||||
|
||||
movzbl eax,al # SYS_nnnnn
|
||||
mov ecx,esp # &{user_ret_addr, arg1, arg2, ...}
|
||||
movzbl %al,%eax # SYS_nnnnn
|
||||
mov %esp,%ecx # &{user_ret_addr, arg1, arg2, ...}
|
||||
call sysgo
|
||||
jncs 0f
|
||||
//mov errno,eax
|
||||
or eax,~0
|
||||
jnc 0f
|
||||
//mov errno,%eax
|
||||
or $~0,%eax
|
||||
0:
|
||||
ret
|
||||
|
||||
|
||||
@ -46,65 +46,25 @@
|
||||
// static data, and no string constants.
|
||||
|
||||
#if !DEBUG /*{*/
|
||||
#define DPRINTF(a) /* empty: no debug drivel */
|
||||
#define DEBUG_STRCON(name, value) /* empty */
|
||||
#define DPRINTF(a ...) /* empty: no debug drivel */
|
||||
#else /*}{ DEBUG */
|
||||
extern int write(int, void const *, size_t);
|
||||
#if 0
|
||||
#include "stdarg.h"
|
||||
#else
|
||||
#define DPRINTF(fmt, args...) ({ \
|
||||
char const *r_fmt; \
|
||||
asm("call 0f; .asciz \"" fmt "\"; 0: pop %0" \
|
||||
/*out*/ : "=r"(r_fmt) ); \
|
||||
dprintf(r_fmt, args); \
|
||||
})
|
||||
|
||||
#define va_arg __builtin_va_arg
|
||||
#define va_end __builtin_va_end
|
||||
#define va_list __builtin_va_list
|
||||
#define va_start __builtin_va_start
|
||||
#endif
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__) /*{*/
|
||||
#define PIC_STRING(value, var) \
|
||||
__asm__ __volatile__ ( \
|
||||
"call 0f; .asciz \"" value "\"; \
|
||||
0: pop %0;" : "=r"(var) : \
|
||||
)
|
||||
#elif defined(__arm__) /*}{*/
|
||||
#define PIC_STRING(value, var) \
|
||||
__asm__ __volatile__ ( \
|
||||
"mov %0,pc; b 0f; \
|
||||
.asciz \"" value "\"; .balign 4; \
|
||||
0: " : "=r"(var) \
|
||||
)
|
||||
#elif defined(__mips__) /*}{*/
|
||||
#define PIC_STRING(value, var) \
|
||||
__asm__ __volatile__ ( \
|
||||
".set noreorder; bal 0f; move %0,$31; .set reorder; \
|
||||
.asciz \"" value "\"; .balign 4; \
|
||||
0: " \
|
||||
: "=r"(var) : : "ra" \
|
||||
)
|
||||
#endif /*}*/
|
||||
|
||||
|
||||
#define DEBUG_STRCON(name, strcon) \
|
||||
static char const *name(void) { \
|
||||
register char const *rv; PIC_STRING(strcon, rv); \
|
||||
return rv; \
|
||||
}
|
||||
|
||||
|
||||
#ifdef __arm__ /*{*/
|
||||
extern unsigned div10(unsigned);
|
||||
#else /*}{*/
|
||||
static unsigned
|
||||
div10(unsigned x)
|
||||
{
|
||||
return x / 10u;
|
||||
}
|
||||
#endif /*}*/
|
||||
|
||||
static int
|
||||
unsimal(unsigned x, char *ptr, int n)
|
||||
{
|
||||
if (10<=x) {
|
||||
unsigned const q = div10(x);
|
||||
unsigned const q = x / 10;
|
||||
x -= 10 * q;
|
||||
n = unsimal(q, ptr, n);
|
||||
}
|
||||
@ -122,54 +82,80 @@ decimal(int x, char *ptr, int n)
|
||||
return unsimal(x, ptr, n);
|
||||
}
|
||||
|
||||
DEBUG_STRCON(STR_hex, "0123456789abcdef");
|
||||
|
||||
static int
|
||||
heximal(unsigned long x, char *ptr, int n)
|
||||
{
|
||||
if (16<=x) {
|
||||
n = heximal(x>>4, ptr, n);
|
||||
x &= 0xf;
|
||||
unsigned j = -1+ 2*sizeof(unsigned long);
|
||||
unsigned long m = 0xful << (4 * j);
|
||||
for (; j; --j, m >>= 4) { // omit leading 0 digits
|
||||
if (m & x) break;
|
||||
}
|
||||
ptr[n] = STR_hex()[x];
|
||||
return 1+ n;
|
||||
for (; m; --j, m >>= 4) {
|
||||
unsigned d = 0xf & (x >> (4 * j));
|
||||
ptr[n++] = ((10<=d) ? ('a' - 10) : '0') + d;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
#define DPRINTF(a) dprintf a
|
||||
|
||||
static int
|
||||
dprintf(char const *fmt, ...)
|
||||
{
|
||||
char c;
|
||||
int n= 0;
|
||||
char *ptr;
|
||||
char buf[20];
|
||||
char const *literal = 0; // NULL
|
||||
char buf[24]; // ~0ull == 18446744073709551615 ==> 20 chars
|
||||
va_list va; va_start(va, fmt);
|
||||
ptr= &buf[0];
|
||||
while (0!=(c= *fmt++)) if ('%'!=c) goto literal;
|
||||
else switch (c= *fmt++) {
|
||||
default: {
|
||||
literal:
|
||||
n+= write(2, fmt-1, 1);
|
||||
} break;
|
||||
case 0: goto done; /* early */
|
||||
case 'u': {
|
||||
n+= write(2, buf, unsimal(va_arg(va, unsigned), buf, 0));
|
||||
} break;
|
||||
case 'd': {
|
||||
n+= write(2, buf, decimal(va_arg(va, int), buf, 0));
|
||||
} break;
|
||||
case 'p': {
|
||||
buf[0] = '0';
|
||||
buf[1] = 'x';
|
||||
n+= write(2, buf, heximal((unsigned long)va_arg(va, void *), buf, 2));
|
||||
} break;
|
||||
case 'x': {
|
||||
buf[0] = '0';
|
||||
buf[1] = 'x';
|
||||
n+= write(2, buf, heximal(va_arg(va, int), buf, 2));
|
||||
} break;
|
||||
for (;;) {
|
||||
char c = *fmt++;
|
||||
if (!c) { // end of fmt
|
||||
if (literal) {
|
||||
goto finish;
|
||||
}
|
||||
break; // goto done
|
||||
}
|
||||
if ('%'!=c) {
|
||||
if (!literal) {
|
||||
literal = fmt; // 1 beyond start of literal
|
||||
}
|
||||
continue;
|
||||
}
|
||||
// '%' == c
|
||||
if (literal) {
|
||||
finish:
|
||||
n += write(2, -1+ literal, fmt - literal);
|
||||
literal = 0; // NULL
|
||||
if (!c) { // fmt already ended
|
||||
break; // goto done
|
||||
}
|
||||
}
|
||||
switch (c= *fmt++) { // deficiency: does not handle _long_
|
||||
default: { // un-implemented conversion
|
||||
n+= write(2, -1+ fmt, 1);
|
||||
} break;
|
||||
case 0: { // fmt ends with "%\0" ==> ignore
|
||||
goto done;
|
||||
} break;
|
||||
case 'u': {
|
||||
n+= write(2, buf, unsimal(va_arg(va, unsigned), buf, 0));
|
||||
} break;
|
||||
case 'd': {
|
||||
n+= write(2, buf, decimal(va_arg(va, int), buf, 0));
|
||||
} break;
|
||||
case 'p': {
|
||||
buf[0] = '0';
|
||||
buf[1] = 'x';
|
||||
n+= write(2, buf, heximal((unsigned long)va_arg(va, void *), buf, 2));
|
||||
} break;
|
||||
case 'x': {
|
||||
buf[0] = '0';
|
||||
buf[1] = 'x';
|
||||
n+= write(2, buf, heximal(va_arg(va, unsigned int), buf, 2));
|
||||
} break;
|
||||
case 's': {
|
||||
char *s0= (char *)va_arg(va, unsigned char *), *s= s0;
|
||||
if (s) while (*s) ++s;
|
||||
n+= write(2, s0, s - s0);
|
||||
} break;
|
||||
} // 'switch'
|
||||
}
|
||||
done:
|
||||
va_end(va);
|
||||
@ -177,6 +163,7 @@ done:
|
||||
}
|
||||
#endif /*}*/
|
||||
|
||||
extern int spin(int);
|
||||
|
||||
/*************************************************************************
|
||||
// "file" util
|
||||
@ -187,17 +174,16 @@ typedef struct {
|
||||
void *buf;
|
||||
} Extent;
|
||||
|
||||
DEBUG_STRCON(STR_xread, "xread %%p(%%x %%p) %%p %%x\\n")
|
||||
DEBUG_STRCON(STR_xreadfail, "xreadfail %%p(%%x %%p) %%p %%x\\n")
|
||||
|
||||
static void
|
||||
xread(Extent *x, void *buf, size_t count)
|
||||
{
|
||||
unsigned char *p=x->buf, *q=buf;
|
||||
size_t j;
|
||||
DPRINTF((STR_xread(), x, x->size, x->buf, buf, count));
|
||||
DPRINTF("xread %%p(%%x %%p) %%p %%x\\n",
|
||||
x, x->size, x->buf, buf, count);
|
||||
if (x->size < count) {
|
||||
DPRINTF((STR_xreadfail(), x, x->size, x->buf, buf, count));
|
||||
DPRINTF("xreadfail %%p(%%x %%p) %%p %%x\\n",
|
||||
x, x->size, x->buf, buf, count);
|
||||
exit(127);
|
||||
}
|
||||
for (j = count; 0!=j--; ++p, ++q) {
|
||||
@ -217,7 +203,6 @@ xread(Extent *x, void *buf, size_t count)
|
||||
#define err_exit(a) goto error
|
||||
#else //}{ save debugging time
|
||||
#define ERR_LAB /*empty*/
|
||||
DEBUG_STRCON(STR_exit, "err_exit %%x\\n");
|
||||
|
||||
static void
|
||||
err_exit(int a)
|
||||
@ -265,10 +250,6 @@ typedef int f_expand(
|
||||
const nrv_byte *, nrv_uint,
|
||||
nrv_byte *, nrv_uint *, unsigned );
|
||||
|
||||
DEBUG_STRCON(STR_unpackExtent,
|
||||
"unpackExtent in=%%p(%%x %%p) out=%%p(%%x %%p) %%p %%p\\n");
|
||||
DEBUG_STRCON(STR_err5, "sz_cpr=%%x sz_unc=%%x xo->size=%%x\\n");
|
||||
|
||||
static void
|
||||
unpackExtent(
|
||||
Extent *const xi, // input
|
||||
@ -277,8 +258,8 @@ unpackExtent(
|
||||
f_unfilter *f_unf
|
||||
)
|
||||
{
|
||||
DPRINTF((STR_unpackExtent(),
|
||||
xi, xi->size, xi->buf, xo, xo->size, xo->buf, f_decompress, f_unf));
|
||||
DPRINTF("unpackExtent in=%%p(%%x %%p) out=%%p(%%x %%p) %%p %%p\\n",
|
||||
xi, xi->size, xi->buf, xo, xo->size, xo->buf, f_decompress, f_unf);
|
||||
while (xo->size) {
|
||||
struct b_info h;
|
||||
// Note: if h.sz_unc == h.sz_cpr then the block was not
|
||||
@ -286,6 +267,8 @@ unpackExtent(
|
||||
|
||||
// Read and check block sizes.
|
||||
xread(xi, (unsigned char *)&h, sizeof(h));
|
||||
DPRINTF(" sz_unc=%%x sz_cpr=%%x param=%%x\\n",
|
||||
h.sz_unc, h.sz_cpr, *(int *)&h.b_method);
|
||||
if (h.sz_unc == 0) { // uncompressed size 0 -> EOF
|
||||
if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic
|
||||
err_exit(2);
|
||||
@ -299,7 +282,8 @@ ERR_LAB
|
||||
}
|
||||
if (h.sz_cpr > h.sz_unc
|
||||
|| h.sz_unc > xo->size ) {
|
||||
DPRINTF((STR_err5(), h.sz_cpr, h.sz_unc, xo->size));
|
||||
DPRINTF("sz_cpr=%%x sz_unc=%%x xo->size=%%x\\n",
|
||||
h.sz_cpr, h.sz_unc, xo->size);
|
||||
err_exit(5);
|
||||
}
|
||||
// Now we have:
|
||||
@ -313,7 +297,10 @@ ERR_LAB
|
||||
xo->buf, &out_len, h.b_method);
|
||||
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
|
||||
err_exit(7);
|
||||
DPRINTF(" b_ftid=%%x f_unf=%%p\\n", h.b_ftid, f_unf);
|
||||
if (h.b_ftid!=0 && f_unf) { // have filter
|
||||
DPRINTF(" unfiltering f_unf=%%p buf=%%p len=%%x cto=%%x ftid=%%x\\n",
|
||||
f_unf, xo->buf, out_len, h.b_cto8, h.b_ftid);
|
||||
(*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
|
||||
}
|
||||
xi->buf += h.sz_cpr;
|
||||
@ -349,6 +336,8 @@ upx_bzero(unsigned char *p, size_t len)
|
||||
|(REP8(PROT_WRITE) & EXP8(PF_W)) \
|
||||
) >> ((pf & (PF_R|PF_W|PF_X))<<2) ))
|
||||
|
||||
typedef size_t Addr;
|
||||
|
||||
typedef struct {
|
||||
unsigned magic;
|
||||
unsigned nfat_arch;
|
||||
@ -408,8 +397,8 @@ typedef struct {
|
||||
unsigned cmd;
|
||||
unsigned cmdsize;
|
||||
char segname[16];
|
||||
unsigned vmaddr;
|
||||
unsigned vmsize;
|
||||
Addr vmaddr;
|
||||
Addr vmsize;
|
||||
unsigned fileoff;
|
||||
unsigned filesize;
|
||||
unsigned maxprot;
|
||||
@ -418,11 +407,26 @@ typedef struct {
|
||||
unsigned flags;
|
||||
} Mach_segment_command;
|
||||
enum e5 {
|
||||
VM_PROT_NONE = 0,
|
||||
VM_PROT_READ = 1,
|
||||
VM_PROT_WRITE = 2,
|
||||
VM_PROT_EXECUTE = 4
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
char sectname[16];
|
||||
char segname[16];
|
||||
Addr addr; /* memory address */
|
||||
Addr size; /* size in bytes */
|
||||
unsigned offset; /* file offset */
|
||||
unsigned align; /* power of 2 */
|
||||
unsigned reloff; /* file offset of relocation entries */
|
||||
unsigned nreloc; /* number of relocation entries */
|
||||
unsigned flags; /* section type and attributes */
|
||||
unsigned reserved1; /* for offset or index */
|
||||
unsigned reserved2; /* for count or sizeof */
|
||||
} Mach_section_command;
|
||||
|
||||
typedef struct {
|
||||
unsigned eax, ebx, ecx, edx;
|
||||
unsigned edi, esi, ebp;
|
||||
@ -465,102 +469,235 @@ extern void *mmap(void *, size_t, unsigned, unsigned, int, off_t_upx_stub, unsig
|
||||
extern ssize_t pread(int, void *, size_t, off_t_upx_stub, unsigned);
|
||||
extern void bswap(void *, unsigned);
|
||||
|
||||
DEBUG_STRCON(STR_mmap,
|
||||
"mmap addr=%%p len=%%p prot=%%x flags=%%x fd=%%d off=%%p\\n");
|
||||
DEBUG_STRCON(STR_do_xmap,
|
||||
"do_xmap fdi=%%x mhdr=%%p xi=%%p(%%x %%p) f_unf=%%p\\n")
|
||||
enum {
|
||||
MH_DYLINKER= 7, /* /usr/bin/dyld */
|
||||
MH_PIE = 0x200000 // ASLR
|
||||
|
||||
static Mach_i386_thread_state const *
|
||||
do_xmap(
|
||||
};
|
||||
|
||||
// Find convex hull of PT_LOAD (the minimal interval which covers all PT_LOAD),
|
||||
// and mmap that much, to be sure that a kernel using exec-shield-randomize
|
||||
// won't place the first piece in a way that leaves no room for the rest.
|
||||
static Addr // returns relocation constant
|
||||
xfind_pages(
|
||||
Mach_header const *const mhdr,
|
||||
Mach_segment_command const *sc,
|
||||
int const ncmds,
|
||||
Addr addr
|
||||
)
|
||||
{
|
||||
Addr lo= ~(Addr)0, hi= 0;
|
||||
int j;
|
||||
unsigned mflags = ((mhdr->filetype == MH_DYLINKER || mhdr->flags & MH_PIE) ? 0 : MAP_FIXED);
|
||||
mflags += MAP_PRIVATE | MAP_ANON; // '+' can optimize better than '|'
|
||||
DPRINTF("xfind_pages mhdr=%%p sc=%%p ncmds=%%d addr=%%p mflags=%%x\\n",
|
||||
mhdr, sc, ncmds, addr, mflags);
|
||||
for (j=0; j < ncmds; ++j,
|
||||
(sc = (Mach_segment_command const *)((sc->cmdsize>>2) + (unsigned const *)sc))
|
||||
) if (LC_SEGMENT==sc->cmd) {
|
||||
DPRINTF(" #%%d cmd=%%x cmdsize=%%x vmaddr=%%p vmsize==%%p lo=%%p mflags=%%x\\n",
|
||||
j, sc->cmd, sc->cmdsize, sc->vmaddr, sc->vmsize, lo, mflags);
|
||||
if (sc->vmsize // theoretically occupies address space
|
||||
&& !(sc->vmaddr==0 && (MAP_FIXED & mflags)) // but ignore PAGEZERO when MAP_FIXED
|
||||
) {
|
||||
if (mhdr->filetype == MH_DYLINKER // /usr/lib/dyld
|
||||
&& 0==(1+ lo) // 1st LC_SEGMENT
|
||||
&& sc->vmaddr != 0 // non-floating address
|
||||
) {
|
||||
// "pre-linked" dyld on MacOS 10.11.x El Capitan
|
||||
mflags |= MAP_FIXED;
|
||||
}
|
||||
if (lo > sc->vmaddr) {
|
||||
lo = sc->vmaddr;
|
||||
}
|
||||
if (hi < (sc->vmsize + sc->vmaddr)) {
|
||||
hi = sc->vmsize + sc->vmaddr;
|
||||
}
|
||||
}
|
||||
}
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
DPRINTF(" addr=%%p lo=%%p len=%%p mflags=%%x\\n", addr, lo, hi, mflags);
|
||||
if (MAP_FIXED & mflags) {
|
||||
addr = lo;
|
||||
int rv = munmap((void *)addr, hi);
|
||||
if (rv) {
|
||||
DPRINTF("munmap addr=%%p len=%%p, rv=%%x\\n", addr, hi, rv);
|
||||
}
|
||||
}
|
||||
addr = (Addr)mmap((void *)addr, hi, VM_PROT_NONE, mflags, MAP_ANON_FD, 0, 0);
|
||||
DPRINTF(" addr=%%p\\n", addr);
|
||||
if (~PAGE_MASK & addr) {
|
||||
//err_exit(6);
|
||||
}
|
||||
return (Addr)(addr - lo);
|
||||
}
|
||||
Addr // entry: &hatch if main; Mach_thread_state->eip if dyld
|
||||
do_xmap(
|
||||
Mach_header *const mhdr,
|
||||
off_t_upx_stub const fat_offset,
|
||||
Extent *const xi,
|
||||
int const fdi,
|
||||
Mach_header **mhdrpp,
|
||||
f_expand *const f_decompress,
|
||||
f_expand *const f_exp,
|
||||
f_unfilter *const f_unf
|
||||
)
|
||||
{
|
||||
Mach_segment_command const *sc = (Mach_segment_command const *)(1+ mhdr);
|
||||
Mach_i386_thread_state const *entry = 0;
|
||||
DPRINTF("do_xmap fdi=%%x mhdr=%%p *mhdrpp=%%p xi=%%p(%%x %%p) f_unf=%%p\\n",
|
||||
fdi, mhdr, (mhdrpp ? *mhdrpp : 0), xi, (xi? xi->size: 0), (xi? xi->buf: 0), f_unf);
|
||||
|
||||
Addr rv = 0;
|
||||
Mach_segment_command *sc = (Mach_segment_command *)(1+ mhdr);
|
||||
Addr const reloc = xfind_pages(mhdr, sc, mhdr->ncmds, 0);
|
||||
DPRINTF("do_xmap reloc=%%p\\n", reloc);
|
||||
unsigned j;
|
||||
|
||||
DPRINTF((STR_do_xmap(),
|
||||
fdi, mhdr, xi, (xi? xi->size: 0), (xi? xi->buf: 0), f_unf));
|
||||
|
||||
for ( j=0; j < mhdr->ncmds; ++j,
|
||||
(sc = (Mach_segment_command const *)(sc->cmdsize + (void const *)sc))
|
||||
) if (LC_SEGMENT==sc->cmd && sc->vmsize!=0) {
|
||||
Extent xo;
|
||||
size_t mlen = xo.size = sc->filesize;
|
||||
unsigned char *addr = xo.buf = (unsigned char *)sc->vmaddr;
|
||||
unsigned char *haddr = sc->vmsize + addr;
|
||||
size_t frag = (int)addr &~ PAGE_MASK;
|
||||
addr -= frag;
|
||||
mlen += frag;
|
||||
(sc = (Mach_segment_command *)((sc->cmdsize>>2) + (unsigned *)sc))
|
||||
) {
|
||||
DPRINTF(" #%%d cmd=%%x cmdsize=%%x vmsize=%%x\\n",
|
||||
j, sc->cmd, sc->cmdsize, sc->vmsize);
|
||||
if (LC_SEGMENT==sc->cmd && !sc->vmsize) {
|
||||
// Typical __DWARF info segment for 'rust'
|
||||
struct b_info h;
|
||||
xread(xi, (unsigned char *)&h, sizeof(h));
|
||||
DPRINTF(" 0==.vmsize; skipping %%x\\n", h.sz_cpr);
|
||||
xi->buf += h.sz_cpr;
|
||||
}
|
||||
if (LC_SEGMENT==sc->cmd && sc->vmsize) {
|
||||
Extent xo;
|
||||
size_t mlen = xo.size = sc->filesize;
|
||||
xo.buf = (void *)(reloc + sc->vmaddr);
|
||||
Addr addr = (Addr)xo.buf;
|
||||
Addr haddr = sc->vmsize + addr;
|
||||
size_t frag = addr &~ PAGE_MASK;
|
||||
addr -= frag;
|
||||
mlen += frag;
|
||||
|
||||
if (0!=mlen) {
|
||||
// Decompressor can overrun the destination by 3 bytes. [x86 only]
|
||||
size_t const mlen3 = mlen + (xi ? 3 : 0);
|
||||
unsigned const prot = VM_PROT_READ | VM_PROT_WRITE;
|
||||
unsigned const flags = MAP_FIXED | MAP_PRIVATE |
|
||||
((xi || 0==sc->filesize) ? MAP_ANON : 0);
|
||||
int const fdm = ((0==sc->filesize) ? MAP_ANON_FD : fdi);
|
||||
off_t_upx_stub const offset = sc->fileoff + fat_offset;
|
||||
DPRINTF(" mlen=%%p frag=%%p addr=%%p\\n", mlen, frag, addr);
|
||||
if (0!=mlen) { // In particular, omitted for __PAGEZERO
|
||||
size_t const mlen3 = mlen
|
||||
#if defined(__x86_64__) //{
|
||||
// Decompressor can overrun the destination by 3 bytes. [x86 only]
|
||||
+ (xi ? 3 : 0)
|
||||
#endif //}
|
||||
;
|
||||
unsigned const prot = VM_PROT_READ | VM_PROT_WRITE;
|
||||
// MAP_FIXED: xfind_pages() reserved them, so use them!
|
||||
unsigned const flags = MAP_FIXED | MAP_PRIVATE |
|
||||
((xi || 0==sc->filesize) ? MAP_ANON : 0);
|
||||
int const fdm = ((xi || 0==sc->filesize) ? MAP_ANON_FD : fdi);
|
||||
off_t_upx_stub const offset = sc->fileoff + fat_offset;
|
||||
|
||||
DPRINTF((STR_mmap(), addr, mlen3, prot, flags, fdm, offset));
|
||||
if (addr != mmap(addr, mlen3, prot, flags, fdm, offset, 0)) {
|
||||
err_exit(8);
|
||||
DPRINTF("mmap addr=%%p len=%%p prot=%%x flags=%%x fd=%%d off=%%p reloc=%%p\\n",
|
||||
addr, mlen3, prot, flags, fdm, offset, reloc);
|
||||
{
|
||||
Addr maddr = (Addr)mmap((void *)addr, mlen3, prot, flags, fdm, offset, 0);
|
||||
DPRINTF("maddr=%%p\\n", maddr);
|
||||
if (maddr != addr) {
|
||||
err_exit(8);
|
||||
}
|
||||
addr = maddr;
|
||||
}
|
||||
if (mhdrpp && !*mhdrpp) { // MH_DYLINKER
|
||||
*mhdrpp = (Mach_header*)addr;
|
||||
}
|
||||
}
|
||||
if (xi && 0!=sc->filesize) {
|
||||
if (0==sc->fileoff /*&& 0!=mhdrpp*/) {
|
||||
*mhdrpp = (Mach_header *)(void *)addr;
|
||||
}
|
||||
unpackExtent(xi, &xo, f_exp, f_unf);
|
||||
}
|
||||
DPRINTF("xi=%%p mlen=%%p fileoff=%%p nsects=%%d\\n",
|
||||
xi, mlen, sc->fileoff, sc->nsects);
|
||||
if (xi && mlen && !sc->fileoff && sc->nsects) {
|
||||
// main target __TEXT segment at beginning of file with sections (__text)
|
||||
// Use upto 2 words of header padding for the escape hatch.
|
||||
// fold.S could do this easier, except PROT_WRITE is missing then.
|
||||
union {
|
||||
unsigned char *p0;
|
||||
unsigned short *p1;
|
||||
unsigned int *p2;
|
||||
unsigned long *p3;
|
||||
} u;
|
||||
u.p0 = (unsigned char *)addr;
|
||||
Mach_segment_command *segp = (Mach_segment_command *)((((char *)sc - (char *)mhdr)>>2) + u.p2);
|
||||
Mach_section_command *const secp = (Mach_section_command *)(1+ segp);
|
||||
unsigned *hatch= -2+ (secp->offset>>2) + u.p2;
|
||||
DPRINTF("hatch=%%p segp=%%p secp=%%p secp->offset=%%p mhdr=%%p\\n", hatch, segp, secp, secp->offset, addr);
|
||||
#if defined(__aarch64__) //{
|
||||
hatch[0] = 0xd4000001; // svc #0 // syscall
|
||||
hatch[1] = 0xd65f03c0; // ret
|
||||
#elif defined(__arm__) //}{
|
||||
hatch[0] = 0xef000000; // svc 0x0 // syscall
|
||||
hatch[1] = 0xe12fff1e; // bx lr
|
||||
#elif defined(__x86_64__) //}{
|
||||
hatch[0] = 0xc3050f90; // nop; syscall; ret
|
||||
#elif defined(__i386__) //}{
|
||||
hatch[0] = 0xc3050f90; // nop; syscall; ret
|
||||
#endif //}
|
||||
rv = (Addr)hatch;
|
||||
}
|
||||
/*bzero(addr, frag);*/ // fragment at lo end
|
||||
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
|
||||
bzero((void *)(mlen+addr), frag); // fragment at hi end
|
||||
if (0!=mlen && 0!=mprotect((void *)addr, mlen, sc->initprot)) {
|
||||
err_exit(10);
|
||||
ERR_LAB
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (
|
||||
#if SIMULATE_ON_LINUX_EABI4 /*{*/
|
||||
0!=addr &&
|
||||
#endif /*}*/
|
||||
addr < haddr) { // need pages for .bss
|
||||
if (0!=addr && addr != (Addr)mmap((void *)addr, haddr - addr, sc->initprot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANON, MAP_ANON_FD, 0, 0) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
}
|
||||
else if (xi) { // cleanup if decompressor overrun crosses page boundary
|
||||
mlen = ~PAGE_MASK & (3+ mlen);
|
||||
if (mlen<=3) { // page fragment was overrun buffer only
|
||||
DPRINTF("munmap %%x %%x\\n", addr, mlen);
|
||||
munmap((char *)addr, mlen);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (xi && 0!=sc->filesize) {
|
||||
if (0==sc->fileoff && 0!=mhdrpp) {
|
||||
*mhdrpp = (Mach_header *)addr;
|
||||
}
|
||||
unpackExtent(xi, &xo, f_decompress, f_unf);
|
||||
}
|
||||
/*bzero(addr, frag);*/ // fragment at lo end
|
||||
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
if (0!=mlen && 0!=mprotect(addr, mlen, sc->initprot)) {
|
||||
err_exit(10);
|
||||
ERR_LAB
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (0!=addr && addr != mmap(addr, haddr - addr, sc->initprot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANON, MAP_ANON_FD, 0, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
}
|
||||
else if (xi) { // cleanup if decompressor overrun crosses page boundary
|
||||
mlen = ~PAGE_MASK & (3+ mlen);
|
||||
if (mlen<=3) { // page fragment was overrun buffer only
|
||||
munmap(addr, mlen);
|
||||
else if (!xi // dyld
|
||||
&& (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd)) {
|
||||
Mach_thread_command *const thrc = (Mach_thread_command *)sc;
|
||||
DPRINTF("thread_command= %%p\\n", sc);
|
||||
if (1
|
||||
// FIXME THREAD_STATE ==thrc->flavor
|
||||
// && THREAD_STATE_COUNT==thrc->count
|
||||
) {
|
||||
DPRINTF("thread_state= %%p flavor=%%d count=%%x reloc=%%p\\n",
|
||||
&thrc->state, thrc->flavor, thrc->count, reloc);
|
||||
#if defined(__aarch64__) //{
|
||||
rv = reloc + thrc->state.pc;
|
||||
#elif defined(__arm__) //}{
|
||||
rv = reloc + thrc->state.pc;
|
||||
#elif defined(__x86_64__) //}{
|
||||
rv = reloc + thrc->state.rip;
|
||||
#elif defined(__i386__) //}{
|
||||
rv = reloc + thrc->state.eip;
|
||||
#else //}{
|
||||
#error do_xmap rv $ARCH
|
||||
#endif //}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) {
|
||||
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
|
||||
if (i386_THREAD_STATE ==thrc->flavor
|
||||
&& i386_THREAD_STATE_COUNT==thrc->count ) {
|
||||
entry = &thrc->state;
|
||||
}
|
||||
}
|
||||
return entry;
|
||||
DPRINTF("do_xmap= %%p\\n", rv);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// upx_main - called by our entry code
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
DEBUG_STRCON(STR_upx_main,
|
||||
"upx_main szc=%%x f_dec=%%p f_unf=%%p "
|
||||
" xo=%%p(%%x %%p) xi=%%p(%%x %%p) mhdrpp=%%p\\n")
|
||||
|
||||
Mach_i386_thread_state const *
|
||||
Addr
|
||||
upx_main(
|
||||
Mach_header **const mhdrpp, // Out: *mhdrpp= &real Mach_header
|
||||
f_unfilter *const f_unf,
|
||||
@ -571,7 +708,7 @@ upx_main(
|
||||
struct l_info const *const li
|
||||
)
|
||||
{
|
||||
Mach_i386_thread_state const *entry;
|
||||
Addr entry;
|
||||
off_t_upx_stub fat_offset = 0;
|
||||
Extent xi, xo, xi0;
|
||||
xi.buf = CONST_CAST(unsigned char *, 1+ (struct p_info const *)(1+ li)); // &b_info
|
||||
@ -580,9 +717,11 @@ upx_main(
|
||||
xo.size = ((struct b_info const *)(void const *)xi.buf)->sz_unc;
|
||||
xi0 = xi;
|
||||
|
||||
DPRINTF((STR_upx_main(),
|
||||
sz_compressed, f_decompress, f_unf, &xo, xo.size, xo.buf,
|
||||
&xi, xi.size, xi.buf, mhdrpp));
|
||||
DPRINTF("upx_main szc=%%x f_dec=%%p f_unf=%%p "
|
||||
" xo=%%p(%%x %%p) xi=%%p(%%x %%p) mhdrpp=%%p\\n",
|
||||
sz_compressed, f_decompress, f_unf,
|
||||
&xo, xo.size, xo.buf,
|
||||
&xi, xi.size, xi.buf, mhdrpp);
|
||||
|
||||
// Uncompress Macho headers
|
||||
unpackExtent(&xi, &xo, f_decompress, 0); // never filtered?
|
||||
|
||||
@ -710,6 +710,44 @@ typedef struct {
|
||||
//# -Wl,-unexported_symbols_list unexport-upxload.txt \
|
||||
//# strip -u -r i386-darwin.macho-upxmain.exe
|
||||
|
||||
// Makefile:
|
||||
//# Compile i386-darwin.macho-upxmain.c on MacOS 10.9 (Mavericks) or later,
|
||||
//# to get smaller code. Then copy i386-darwin.macho-upxmain.o to MacOS 10.6.x,
|
||||
//# and static link, to get runtime conventions straight [??]
|
||||
//#\tgcc -m32 -c -I $PWD \
|
||||
//#\t -Os -fPIC -fno-stack-protector -fno-unwind-tables \
|
||||
//#\t i386-darwin.macho-upxmain.c
|
||||
//
|
||||
//i386-darwin.macho-upxmain.exe: Makefile
|
||||
//i386-darwin.macho-upxmain.exe: start.S
|
||||
//i386-darwin.macho-upxmain.exe: i386-darwin.macho-upxsubr.S
|
||||
//i386-darwin.macho-upxmain.exe: i386-darwin.macho-upxmain.o
|
||||
//\tgcc -c start.S i386-darwin.macho-upxsubr.S
|
||||
//\tgcc -o $@ -I $PWD \
|
||||
//\t -O -nostartfiles -fno-stack-protector -fno-unwind-tables \
|
||||
//\t start.o \
|
||||
//\t i386-darwin.macho-upxmain.o \
|
||||
//\t i386-darwin.macho-upxsubr.o \
|
||||
//\t -Wl,-pagezero_size,0x1000 \
|
||||
//\t -Wl,-no_uuid \
|
||||
//\t -Wl,-bind_at_load \
|
||||
//\t -Wl,-headerpad,0x400
|
||||
//\tstrip -u -r -S -x $@
|
||||
//\totool -hl $@ >upxmain-new.otool
|
||||
|
||||
// History: Originally this file i386-darwin.macho-upxmain.c was the entry point
|
||||
// of the compressed program. The output i386-darwin.macho-upxmain.exe was used
|
||||
// as a prototype for LC_* commands. The start address was in LC_UNIXTHREAD.
|
||||
// The decompressor upx_main() i386-darwin.macho-main.c itself was not compressed.
|
||||
//
|
||||
// Then MacOS 10.7 ("Lion") supported 64-bit x86_64, and things began to change.
|
||||
// The start address (for anything except the dynamic linker) is in LC_MAIN.
|
||||
// We still use LC_UNIXTHREAD because we are "dynamic linker".
|
||||
// Because no program on MacOS uses brk(0), then the compressed program and stub
|
||||
// could above the space for un-compressed program, saving a copy-and-relocate.
|
||||
// The run-time decompression could be more like on Linux, using: macho-entry.S,
|
||||
// macho-fold.S, macho-main.c
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
@ -2,521 +2,60 @@ file format elf32-i386
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 I386BXX0 00000002 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||
1 I386BXX1 00000001 00000000 00000000 00000036 2**0 CONTENTS, READONLY
|
||||
2 LEXEC000 00000005 00000000 00000000 00000037 2**0 CONTENTS, RELOC, READONLY
|
||||
3 LEXEC009 00000000 00000000 00000000 0000003c 2**0 CONTENTS, READONLY
|
||||
4 LEXEC010 0000000c 00000000 00000000 0000003c 2**0 CONTENTS, READONLY
|
||||
5 N2BSMA10 00000003 00000000 00000000 00000048 2**0 CONTENTS, RELOC, READONLY
|
||||
6 N2BFAS10 00000002 00000000 00000000 0000004b 2**0 CONTENTS, RELOC, READONLY
|
||||
7 N2BFAS11 00000006 00000000 00000000 0000004d 2**0 CONTENTS, READONLY
|
||||
8 N2BDEC10 0000000b 00000000 00000000 00000053 2**0 CONTENTS, READONLY
|
||||
9 N2BSMA20 00000005 00000000 00000000 0000005e 2**0 CONTENTS, RELOC, READONLY
|
||||
10 N2BFAS20 00000009 00000000 00000000 00000063 2**0 CONTENTS, RELOC, READONLY
|
||||
11 N2BDEC20 0000000d 00000000 00000000 0000006c 2**0 CONTENTS, READONLY
|
||||
12 N2BSMA30 0000000d 00000000 00000000 00000079 2**0 CONTENTS, RELOC, READONLY
|
||||
13 N2BFAS30 0000000f 00000000 00000000 00000086 2**0 CONTENTS, RELOC, READONLY
|
||||
14 N2BDEC30 0000003e 00000000 00000000 00000095 2**0 CONTENTS, RELOC, READONLY
|
||||
15 N2BSMA40 0000000d 00000000 00000000 000000d3 2**0 CONTENTS, RELOC, READONLY
|
||||
16 N2BFAS40 0000000f 00000000 00000000 000000e0 2**0 CONTENTS, RELOC, READONLY
|
||||
17 N2BSMA50 00000002 00000000 00000000 000000ef 2**0 CONTENTS, READONLY
|
||||
18 N2BFAS50 00000003 00000000 00000000 000000f1 2**0 CONTENTS, READONLY
|
||||
19 N2BDEC50 00000009 00000000 00000000 000000f4 2**0 CONTENTS, READONLY
|
||||
20 N2BSMA60 0000000c 00000000 00000000 000000fd 2**0 CONTENTS, RELOC, READONLY
|
||||
21 N2BFAS60 00000019 00000000 00000000 00000109 2**0 CONTENTS, RELOC, READONLY
|
||||
22 N2BFAS61 00000016 00000000 00000000 00000122 2**0 CONTENTS, RELOC, READONLY
|
||||
23 N2BDEC60 00000000 00000000 00000000 00000138 2**0 CONTENTS, READONLY
|
||||
24 N2DSMA10 00000003 00000000 00000000 00000138 2**0 CONTENTS, RELOC, READONLY
|
||||
25 N2DFAS10 00000002 00000000 00000000 0000013b 2**0 CONTENTS, RELOC, READONLY
|
||||
26 N2DFAS11 00000006 00000000 00000000 0000013d 2**0 CONTENTS, READONLY
|
||||
27 N2DDEC10 0000000b 00000000 00000000 00000143 2**0 CONTENTS, READONLY
|
||||
28 N2DSMA20 00000005 00000000 00000000 0000014e 2**0 CONTENTS, RELOC, READONLY
|
||||
29 N2DFAS20 00000009 00000000 00000000 00000153 2**0 CONTENTS, RELOC, READONLY
|
||||
30 N2DDEC20 0000000d 00000000 00000000 0000015c 2**0 CONTENTS, READONLY
|
||||
31 N2DSMA30 0000000d 00000000 00000000 00000169 2**0 CONTENTS, RELOC, READONLY
|
||||
32 N2DFAS30 0000000f 00000000 00000000 00000176 2**0 CONTENTS, RELOC, READONLY
|
||||
33 N2DDEC30 00000052 00000000 00000000 00000185 2**0 CONTENTS, RELOC, READONLY
|
||||
34 N2DSMA40 0000000d 00000000 00000000 000001d7 2**0 CONTENTS, RELOC, READONLY
|
||||
35 N2DFAS40 0000000f 00000000 00000000 000001e4 2**0 CONTENTS, RELOC, READONLY
|
||||
36 N2DSMA50 00000002 00000000 00000000 000001f3 2**0 CONTENTS, READONLY
|
||||
37 N2DFAS50 00000003 00000000 00000000 000001f5 2**0 CONTENTS, READONLY
|
||||
38 N2DDEC50 00000009 00000000 00000000 000001f8 2**0 CONTENTS, READONLY
|
||||
39 N2DSMA60 0000000c 00000000 00000000 00000201 2**0 CONTENTS, RELOC, READONLY
|
||||
40 N2DFAS60 00000019 00000000 00000000 0000020d 2**0 CONTENTS, RELOC, READONLY
|
||||
41 N2DFAS61 00000016 00000000 00000000 00000226 2**0 CONTENTS, RELOC, READONLY
|
||||
42 N2DDEC60 00000000 00000000 00000000 0000023c 2**0 CONTENTS, READONLY
|
||||
43 N2ESMA10 00000003 00000000 00000000 0000023c 2**0 CONTENTS, RELOC, READONLY
|
||||
44 N2EFAS10 00000002 00000000 00000000 0000023f 2**0 CONTENTS, RELOC, READONLY
|
||||
45 N2EFAS11 00000006 00000000 00000000 00000241 2**0 CONTENTS, READONLY
|
||||
46 N2EDEC10 0000000b 00000000 00000000 00000247 2**0 CONTENTS, READONLY
|
||||
47 N2ESMA20 00000005 00000000 00000000 00000252 2**0 CONTENTS, RELOC, READONLY
|
||||
48 N2EFAS20 00000009 00000000 00000000 00000257 2**0 CONTENTS, RELOC, READONLY
|
||||
49 N2EDEC20 0000000d 00000000 00000000 00000260 2**0 CONTENTS, READONLY
|
||||
50 N2ESMA30 0000000d 00000000 00000000 0000026d 2**0 CONTENTS, RELOC, READONLY
|
||||
51 N2EFAS30 0000000f 00000000 00000000 0000027a 2**0 CONTENTS, RELOC, READONLY
|
||||
52 N2EDEC30 0000005f 00000000 00000000 00000289 2**0 CONTENTS, RELOC, READONLY
|
||||
53 N2ESMA40 0000000d 00000000 00000000 000002e8 2**0 CONTENTS, RELOC, READONLY
|
||||
54 N2EFAS40 0000000f 00000000 00000000 000002f5 2**0 CONTENTS, RELOC, READONLY
|
||||
55 N2ESMA50 00000002 00000000 00000000 00000304 2**0 CONTENTS, READONLY
|
||||
56 N2EFAS50 00000003 00000000 00000000 00000306 2**0 CONTENTS, READONLY
|
||||
57 N2EDEC50 00000009 00000000 00000000 00000309 2**0 CONTENTS, READONLY
|
||||
58 N2ESMA60 0000000c 00000000 00000000 00000312 2**0 CONTENTS, RELOC, READONLY
|
||||
59 N2EFAS60 00000019 00000000 00000000 0000031e 2**0 CONTENTS, RELOC, READONLY
|
||||
60 N2EFAS61 00000016 00000000 00000000 00000337 2**0 CONTENTS, RELOC, READONLY
|
||||
61 N2EDEC60 00000000 00000000 00000000 0000034d 2**0 CONTENTS, READONLY
|
||||
62 LZMA_DEC00 0000002e 00000000 00000000 0000034d 2**0 CONTENTS, RELOC, READONLY
|
||||
63 LZMA_ELF00 00000048 00000000 00000000 0000037b 2**0 CONTENTS, READONLY
|
||||
64 LZMA_DEC10 00000a86 00000000 00000000 000003c3 2**0 CONTENTS, READONLY
|
||||
65 LZMA_DEC20 00000a86 00000000 00000000 00000e49 2**0 CONTENTS, READONLY
|
||||
66 LZMA_DEC30 0000001a 00000000 00000000 000018cf 2**0 CONTENTS, READONLY
|
||||
67 LEXEC015 0000001d 00000000 00000000 000018e9 2**0 CONTENTS, READONLY
|
||||
68 LXUNF000 00000002 00000000 00000000 00001906 2**0 CONTENTS, RELOC, READONLY
|
||||
69 LXUNF002 00000005 00000000 00000000 00001908 2**0 CONTENTS, READONLY
|
||||
70 MRUBYTE0 00000002 00000000 00000000 0000190d 2**0 CONTENTS, READONLY
|
||||
71 LXMRU005 00000005 00000000 00000000 0000190f 2**0 CONTENTS, RELOC, READONLY
|
||||
72 LXMRU006 00000007 00000000 00000000 00001914 2**0 CONTENTS, READONLY
|
||||
73 LXMRU007 00000007 00000000 00000000 0000191b 2**0 CONTENTS, READONLY
|
||||
74 LXUNF008 00000004 00000000 00000000 00001922 2**0 CONTENTS, READONLY
|
||||
75 LXUNF010 00000005 00000000 00000000 00001926 2**0 CONTENTS, RELOC, READONLY
|
||||
76 LXJCC010 00000003 00000000 00000000 0000192b 2**0 CONTENTS, READONLY
|
||||
77 LXMRU045 00000003 00000000 00000000 0000192e 2**0 CONTENTS, READONLY
|
||||
78 LXMRU046 00000002 00000000 00000000 00001931 2**0 CONTENTS, READONLY
|
||||
79 LXJCC020 00000002 00000000 00000000 00001933 2**0 CONTENTS, RELOC, READONLY
|
||||
80 LXJCC021 00000005 00000000 00000000 00001935 2**0 CONTENTS, RELOC, READONLY
|
||||
81 LXJCC023 00000007 00000000 00000000 0000193a 2**0 CONTENTS, READONLY
|
||||
82 LXUNF037 00000002 00000000 00000000 00001941 2**0 CONTENTS, READONLY
|
||||
83 LXUNF386 00000001 00000000 00000000 00001943 2**0 CONTENTS, READONLY
|
||||
84 LXUNF387 00000009 00000000 00000000 00001944 2**0 CONTENTS, READONLY
|
||||
85 LXUNF388 00000003 00000000 00000000 0000194d 2**0 CONTENTS, RELOC, READONLY
|
||||
86 LXUNF486 00000004 00000000 00000000 00001950 2**0 CONTENTS, READONLY
|
||||
87 LXUNF487 00000002 00000000 00000000 00001954 2**0 CONTENTS, RELOC, READONLY
|
||||
88 LXMRU065 00000005 00000000 00000000 00001956 2**0 CONTENTS, RELOC, READONLY
|
||||
89 MRUBYTE3 00000002 00000000 00000000 0000195b 2**0 CONTENTS, READONLY
|
||||
90 MRUARB30 00000001 00000000 00000000 0000195d 2**0 CONTENTS, READONLY
|
||||
91 MRUBITS3 00000002 00000000 00000000 0000195e 2**0 CONTENTS, READONLY
|
||||
92 MRUARB40 00000004 00000000 00000000 00001960 2**0 CONTENTS, READONLY
|
||||
93 LXMRU070 00000008 00000000 00000000 00001964 2**0 CONTENTS, RELOC, READONLY
|
||||
94 MRUBYTE4 00000003 00000000 00000000 0000196c 2**0 CONTENTS, READONLY
|
||||
95 MRUBITS4 00000002 00000000 00000000 0000196f 2**0 CONTENTS, READONLY
|
||||
96 MRUARB50 00000006 00000000 00000000 00001971 2**0 CONTENTS, READONLY
|
||||
97 LXMRU080 00000003 00000000 00000000 00001977 2**0 CONTENTS, READONLY
|
||||
98 MRUBYTE5 00000002 00000000 00000000 0000197a 2**0 CONTENTS, READONLY
|
||||
99 MRUARB60 00000001 00000000 00000000 0000197c 2**0 CONTENTS, READONLY
|
||||
100 MRUBITS5 00000002 00000000 00000000 0000197d 2**0 CONTENTS, READONLY
|
||||
101 MRUARB70 00000004 00000000 00000000 0000197f 2**0 CONTENTS, READONLY
|
||||
102 LXMRU090 0000000b 00000000 00000000 00001983 2**0 CONTENTS, RELOC, READONLY
|
||||
103 MRUBYTE6 00000002 00000000 00000000 0000198e 2**0 CONTENTS, READONLY
|
||||
104 MRUARB80 00000001 00000000 00000000 00001990 2**0 CONTENTS, READONLY
|
||||
105 MRUBITS6 00000002 00000000 00000000 00001991 2**0 CONTENTS, READONLY
|
||||
106 MRUARB90 00000004 00000000 00000000 00001993 2**0 CONTENTS, READONLY
|
||||
107 LXMRU100 00000010 00000000 00000000 00001997 2**0 CONTENTS, READONLY
|
||||
108 LXUNF040 00000005 00000000 00000000 000019a7 2**0 CONTENTS, READONLY
|
||||
109 LXMRU110 00000003 00000000 00000000 000019ac 2**0 CONTENTS, READONLY
|
||||
110 LXMRU111 00000002 00000000 00000000 000019af 2**0 CONTENTS, READONLY
|
||||
111 LXUNF041 00000007 00000000 00000000 000019b1 2**0 CONTENTS, RELOC, READONLY
|
||||
112 LXUNF042 00000000 00000000 00000000 000019b8 2**0 CONTENTS, READONLY
|
||||
113 LEXEC016 00000005 00000000 00000000 000019b8 2**0 CONTENTS, RELOC, READONLY
|
||||
114 LXMRU010 00000001 00000000 00000000 000019bd 2**0 CONTENTS, READONLY
|
||||
115 LXJMPA00 00000002 00000000 00000000 000019be 2**0 CONTENTS, READONLY
|
||||
116 LXCALLB0 00000002 00000000 00000000 000019c0 2**0 CONTENTS, READONLY
|
||||
117 LXUNF021 00000006 00000000 00000000 000019c2 2**0 CONTENTS, READONLY
|
||||
118 LXMRU022 00000003 00000000 00000000 000019c8 2**0 CONTENTS, READONLY
|
||||
119 LXJMPA01 00000002 00000000 00000000 000019cb 2**0 CONTENTS, READONLY
|
||||
120 LXCALLB1 00000002 00000000 00000000 000019cd 2**0 CONTENTS, READONLY
|
||||
121 MRUBITS1 00000001 00000000 00000000 000019cf 2**0 CONTENTS, READONLY
|
||||
122 LXMRU030 00000002 00000000 00000000 000019d0 2**0 CONTENTS, READONLY
|
||||
123 MRUBYTE1 00000002 00000000 00000000 000019d2 2**0 CONTENTS, READONLY
|
||||
124 MRUARB10 00000001 00000000 00000000 000019d4 2**0 CONTENTS, READONLY
|
||||
125 LXMRU040 00000002 00000000 00000000 000019d5 2**0 CONTENTS, RELOC, READONLY
|
||||
126 LXUNF030 00000006 00000000 00000000 000019d7 2**0 CONTENTS, READONLY
|
||||
127 LXJCC000 00000008 00000000 00000000 000019dd 2**0 CONTENTS, RELOC, READONLY
|
||||
128 LXCJ0MRU 00000002 00000000 00000000 000019e5 2**0 CONTENTS, READONLY
|
||||
129 LXCJ1MRU 00000003 00000000 00000000 000019e7 2**0 CONTENTS, READONLY
|
||||
130 LXCALJMP 00000003 00000000 00000000 000019ea 2**0 CONTENTS, READONLY
|
||||
131 LXCALL00 00000002 00000000 00000000 000019ed 2**0 CONTENTS, RELOC, READONLY
|
||||
132 LXCALL01 00000003 00000000 00000000 000019ef 2**0 CONTENTS, READONLY
|
||||
133 LXCJ2MRU 00000002 00000000 00000000 000019f2 2**0 CONTENTS, RELOC, READONLY
|
||||
134 LXCJ4MRU 00000002 00000000 00000000 000019f4 2**0 CONTENTS, RELOC, READONLY
|
||||
135 LXCJ6MRU 00000002 00000000 00000000 000019f6 2**0 CONTENTS, RELOC, READONLY
|
||||
136 LXCJ7MRU 00000002 00000000 00000000 000019f8 2**0 CONTENTS, RELOC, READONLY
|
||||
137 LXCJ8MRU 00000003 00000000 00000000 000019fa 2**0 CONTENTS, RELOC, READONLY
|
||||
138 LXUNF034 00000005 00000000 00000000 000019fd 2**0 CONTENTS, RELOC, READONLY
|
||||
139 LXMRU055 00000002 00000000 00000000 00001a02 2**0 CONTENTS, READONLY
|
||||
140 MRUBYTE2 00000005 00000000 00000000 00001a04 2**0 CONTENTS, READONLY
|
||||
141 MRUBITS2 00000005 00000000 00000000 00001a09 2**0 CONTENTS, READONLY
|
||||
142 MRUARB20 00000005 00000000 00000000 00001a0e 2**0 CONTENTS, READONLY
|
||||
143 LXMRU057 00000006 00000000 00000000 00001a13 2**0 CONTENTS, READONLY
|
||||
144 LXMRU058 00000001 00000000 00000000 00001a19 2**0 CONTENTS, READONLY
|
||||
145 LXUNF035 00000006 00000000 00000000 00001a1a 2**0 CONTENTS, READONLY
|
||||
146 ctok32.00 00000007 00000000 00000000 00001a20 2**0 CONTENTS, RELOC, READONLY
|
||||
147 ctok32.10 0000000e 00000000 00000000 00001a27 2**0 CONTENTS, RELOC, READONLY
|
||||
148 ctok32.20 00000020 00000000 00000000 00001a35 2**0 CONTENTS, RELOC, READONLY
|
||||
149 ctok32.30 0000000a 00000000 00000000 00001a55 2**0 CONTENTS, RELOC, READONLY
|
||||
150 ctok32.40 00000005 00000000 00000000 00001a5f 2**0 CONTENTS, RELOC, READONLY
|
||||
151 CALLTR00 00000010 00000000 00000000 00001a64 2**0 CONTENTS, RELOC, READONLY
|
||||
152 CTCLEVE1 00000005 00000000 00000000 00001a74 2**0 CONTENTS, RELOC, READONLY
|
||||
153 CALLTR01 00000005 00000000 00000000 00001a79 2**0 CONTENTS, READONLY
|
||||
154 CTBSHR01 00000004 00000000 00000000 00001a7e 2**0 CONTENTS, READONLY
|
||||
155 CTBROR01 00000002 00000000 00000000 00001a82 2**0 CONTENTS, READONLY
|
||||
156 CTBSWA01 00000005 00000000 00000000 00001a84 2**0 CONTENTS, READONLY
|
||||
157 CALLTR02 00000010 00000000 00000000 00001a89 2**0 CONTENTS, RELOC, READONLY
|
||||
158 CALLTR10 00000005 00000000 00000000 00001a99 2**0 CONTENTS, RELOC, READONLY
|
||||
159 CALLTRE8 00000002 00000000 00000000 00001a9e 2**0 CONTENTS, READONLY
|
||||
160 CALLTRE9 00000002 00000000 00000000 00001aa0 2**0 CONTENTS, READONLY
|
||||
161 CALLTR11 00000004 00000000 00000000 00001aa2 2**0 CONTENTS, RELOC, READONLY
|
||||
162 CTCLEVE2 00000005 00000000 00000000 00001aa6 2**0 CONTENTS, RELOC, READONLY
|
||||
163 CALLTR12 00000002 00000000 00000000 00001aab 2**0 CONTENTS, READONLY
|
||||
164 CTBSHR11 00000004 00000000 00000000 00001aad 2**0 CONTENTS, READONLY
|
||||
165 CTBROR11 00000002 00000000 00000000 00001ab1 2**0 CONTENTS, READONLY
|
||||
166 CTBSWA11 00000005 00000000 00000000 00001ab3 2**0 CONTENTS, READONLY
|
||||
167 CALLTR13 00000007 00000000 00000000 00001ab8 2**0 CONTENTS, RELOC, READONLY
|
||||
168 LEXEC017 00000002 00000000 00000000 00001abf 2**0 CONTENTS, READONLY
|
||||
169 LEXEC020 00000046 00000000 00000000 00001ac1 2**0 CONTENTS, READONLY
|
||||
0 MACHMAINX 00000005 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||
1 MACH_UNC 00000000 00000000 00000000 00000039 2**0 CONTENTS, READONLY
|
||||
2 NRV_HEAD 000000bc 00000000 00000000 00000039 2**0 CONTENTS, READONLY
|
||||
3 NRV2E 000000d4 00000000 00000000 000000f5 2**0 CONTENTS, RELOC, READONLY
|
||||
4 NRV2D 000000c7 00000000 00000000 000001c9 2**0 CONTENTS, RELOC, READONLY
|
||||
5 NRV2B 000000b2 00000000 00000000 00000290 2**0 CONTENTS, RELOC, READONLY
|
||||
6 LZMA_DEC00 0000002e 00000000 00000000 00000342 2**0 CONTENTS, RELOC, READONLY
|
||||
7 LZMA_ELF00 00000048 00000000 00000000 00000370 2**0 CONTENTS, READONLY
|
||||
8 LZMA_DEC10 00000a86 00000000 00000000 000003b8 2**0 CONTENTS, READONLY
|
||||
9 LZMA_DEC20 00000a86 00000000 00000000 00000e3e 2**0 CONTENTS, READONLY
|
||||
10 LZMA_DEC30 0000001a 00000000 00000000 000018c4 2**0 CONTENTS, READONLY
|
||||
11 NRV_TAIL 00000000 00000000 00000000 000018de 2**0 CONTENTS, READONLY
|
||||
12 MACHMAINY 00000014 00000000 00000000 000018de 2**0 CONTENTS, READONLY
|
||||
13 MACHMAINZ 000000f0 00000000 00000000 000018f2 2**0 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d I386BXX1 00000000 I386BXX1
|
||||
00000000 l d N2BSMA10 00000000 N2BSMA10
|
||||
00000000 l d N2BFAS11 00000000 N2BFAS11
|
||||
00000000 l d N2BDEC10 00000000 N2BDEC10
|
||||
00000000 l d N2BDEC20 00000000 N2BDEC20
|
||||
00000000 l d N2BDEC30 00000000 N2BDEC30
|
||||
00000000 l d N2BDEC50 00000000 N2BDEC50
|
||||
00000000 l d N2BFAS61 00000000 N2BFAS61
|
||||
00000000 l d N2BDEC60 00000000 N2BDEC60
|
||||
00000000 l d N2DSMA10 00000000 N2DSMA10
|
||||
00000000 l d N2DFAS11 00000000 N2DFAS11
|
||||
00000000 l d N2DDEC10 00000000 N2DDEC10
|
||||
00000000 l d N2DDEC20 00000000 N2DDEC20
|
||||
00000000 l d N2DDEC30 00000000 N2DDEC30
|
||||
00000000 l d N2DDEC50 00000000 N2DDEC50
|
||||
00000000 l d N2DFAS61 00000000 N2DFAS61
|
||||
00000000 l d N2DDEC60 00000000 N2DDEC60
|
||||
00000000 l d N2ESMA10 00000000 N2ESMA10
|
||||
00000000 l d N2EFAS11 00000000 N2EFAS11
|
||||
00000000 l d N2EDEC10 00000000 N2EDEC10
|
||||
00000000 l d N2EDEC20 00000000 N2EDEC20
|
||||
00000000 l d N2EDEC30 00000000 N2EDEC30
|
||||
00000000 l d N2EDEC50 00000000 N2EDEC50
|
||||
00000000 l d N2EFAS61 00000000 N2EFAS61
|
||||
00000000 l d N2EDEC60 00000000 N2EDEC60
|
||||
00000000 l d LXUNF010 00000000 LXUNF010
|
||||
00000000 l d LXJCC010 00000000 LXJCC010
|
||||
00000000 l d LXUNF037 00000000 LXUNF037
|
||||
00000000 l d LXMRU070 00000000 LXMRU070
|
||||
00000000 l d LXMRU100 00000000 LXMRU100
|
||||
00000000 l d LXUNF040 00000000 LXUNF040
|
||||
00000000 l d LXUNF042 00000000 LXUNF042
|
||||
00000000 l d LXMRU030 00000000 LXMRU030
|
||||
00000000 l d LXUNF030 00000000 LXUNF030
|
||||
00000000 l d LXCJ8MRU 00000000 LXCJ8MRU
|
||||
00000000 l d LXUNF034 00000000 LXUNF034
|
||||
00000000 l d ctok32.00 00000000 ctok32.00
|
||||
00000000 l d ctok32.10 00000000 ctok32.10
|
||||
00000000 l d ctok32.20 00000000 ctok32.20
|
||||
00000000 l d ctok32.40 00000000 ctok32.40
|
||||
00000000 l d CALLTR00 00000000 CALLTR00
|
||||
00000000 l d CALLTR10 00000000 CALLTR10
|
||||
00000000 l d CALLTR11 00000000 CALLTR11
|
||||
00000000 l d CALLTR13 00000000 CALLTR13
|
||||
00000000 l d LEXEC020 00000000 LEXEC020
|
||||
00000000 l d I386BXX0 00000000 I386BXX0
|
||||
00000000 l d LEXEC000 00000000 LEXEC000
|
||||
00000000 l d LEXEC009 00000000 LEXEC009
|
||||
00000000 l d LEXEC010 00000000 LEXEC010
|
||||
00000000 l d N2BFAS10 00000000 N2BFAS10
|
||||
00000000 l d N2BSMA20 00000000 N2BSMA20
|
||||
00000000 l d N2BFAS20 00000000 N2BFAS20
|
||||
00000000 l d N2BSMA30 00000000 N2BSMA30
|
||||
00000000 l d N2BFAS30 00000000 N2BFAS30
|
||||
00000000 l d N2BSMA40 00000000 N2BSMA40
|
||||
00000000 l d N2BFAS40 00000000 N2BFAS40
|
||||
00000000 l d N2BSMA50 00000000 N2BSMA50
|
||||
00000000 l d N2BFAS50 00000000 N2BFAS50
|
||||
00000000 l d N2BSMA60 00000000 N2BSMA60
|
||||
00000000 l d N2BFAS60 00000000 N2BFAS60
|
||||
00000000 l d N2DFAS10 00000000 N2DFAS10
|
||||
00000000 l d N2DSMA20 00000000 N2DSMA20
|
||||
00000000 l d N2DFAS20 00000000 N2DFAS20
|
||||
00000000 l d N2DSMA30 00000000 N2DSMA30
|
||||
00000000 l d N2DFAS30 00000000 N2DFAS30
|
||||
00000000 l d N2DSMA40 00000000 N2DSMA40
|
||||
00000000 l d N2DFAS40 00000000 N2DFAS40
|
||||
00000000 l d N2DSMA50 00000000 N2DSMA50
|
||||
00000000 l d N2DFAS50 00000000 N2DFAS50
|
||||
00000000 l d N2DSMA60 00000000 N2DSMA60
|
||||
00000000 l d N2DFAS60 00000000 N2DFAS60
|
||||
00000000 l d N2EFAS10 00000000 N2EFAS10
|
||||
00000000 l d N2ESMA20 00000000 N2ESMA20
|
||||
00000000 l d N2EFAS20 00000000 N2EFAS20
|
||||
00000000 l d N2ESMA30 00000000 N2ESMA30
|
||||
00000000 l d N2EFAS30 00000000 N2EFAS30
|
||||
00000000 l d N2ESMA40 00000000 N2ESMA40
|
||||
00000000 l d N2EFAS40 00000000 N2EFAS40
|
||||
00000000 l d N2ESMA50 00000000 N2ESMA50
|
||||
00000000 l d N2EFAS50 00000000 N2EFAS50
|
||||
00000000 l d N2ESMA60 00000000 N2ESMA60
|
||||
00000000 l d N2EFAS60 00000000 N2EFAS60
|
||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||
00000000 l d MACHMAINY 00000000 MACHMAINY
|
||||
00000000 l d MACHMAINZ 00000000 MACHMAINZ
|
||||
00000000 l d MACHMAINX 00000000 MACHMAINX
|
||||
00000000 l d MACH_UNC 00000000 MACH_UNC
|
||||
00000000 l d NRV2E 00000000 NRV2E
|
||||
00000000 l d NRV2D 00000000 NRV2D
|
||||
00000000 l d NRV2B 00000000 NRV2B
|
||||
00000000 l d LZMA_DEC00 00000000 LZMA_DEC00
|
||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||
00000000 l d LEXEC015 00000000 LEXEC015
|
||||
00000000 l d LXUNF000 00000000 LXUNF000
|
||||
00000000 l d LXUNF002 00000000 LXUNF002
|
||||
00000000 l d MRUBYTE0 00000000 MRUBYTE0
|
||||
00000000 l d LXMRU005 00000000 LXMRU005
|
||||
00000000 l d LXMRU006 00000000 LXMRU006
|
||||
00000000 l d LXMRU007 00000000 LXMRU007
|
||||
00000000 l d LXUNF008 00000000 LXUNF008
|
||||
00000000 l d LXMRU045 00000000 LXMRU045
|
||||
00000000 l d LXMRU046 00000000 LXMRU046
|
||||
00000000 l d LXJCC020 00000000 LXJCC020
|
||||
00000000 l d LXJCC021 00000000 LXJCC021
|
||||
00000000 l d LXJCC023 00000000 LXJCC023
|
||||
00000000 l d LXUNF386 00000000 LXUNF386
|
||||
00000000 l d LXUNF387 00000000 LXUNF387
|
||||
00000000 l d LXUNF388 00000000 LXUNF388
|
||||
00000000 l d LXUNF486 00000000 LXUNF486
|
||||
00000000 l d LXUNF487 00000000 LXUNF487
|
||||
00000000 l d LXMRU065 00000000 LXMRU065
|
||||
00000000 l d MRUBYTE3 00000000 MRUBYTE3
|
||||
00000000 l d MRUARB30 00000000 MRUARB30
|
||||
00000000 l d MRUBITS3 00000000 MRUBITS3
|
||||
00000000 l d MRUARB40 00000000 MRUARB40
|
||||
00000000 l d MRUBYTE4 00000000 MRUBYTE4
|
||||
00000000 l d MRUBITS4 00000000 MRUBITS4
|
||||
00000000 l d MRUARB50 00000000 MRUARB50
|
||||
00000000 l d LXMRU080 00000000 LXMRU080
|
||||
00000000 l d MRUBYTE5 00000000 MRUBYTE5
|
||||
00000000 l d MRUARB60 00000000 MRUARB60
|
||||
00000000 l d MRUBITS5 00000000 MRUBITS5
|
||||
00000000 l d MRUARB70 00000000 MRUARB70
|
||||
00000000 l d LXMRU090 00000000 LXMRU090
|
||||
00000000 l d MRUBYTE6 00000000 MRUBYTE6
|
||||
00000000 l d MRUARB80 00000000 MRUARB80
|
||||
00000000 l d MRUBITS6 00000000 MRUBITS6
|
||||
00000000 l d MRUARB90 00000000 MRUARB90
|
||||
00000000 l d LXMRU110 00000000 LXMRU110
|
||||
00000000 l d LXMRU111 00000000 LXMRU111
|
||||
00000000 l d LXUNF041 00000000 LXUNF041
|
||||
00000000 l d LEXEC016 00000000 LEXEC016
|
||||
00000000 l d LXMRU010 00000000 LXMRU010
|
||||
00000000 l d LXJMPA00 00000000 LXJMPA00
|
||||
00000000 l d LXCALLB0 00000000 LXCALLB0
|
||||
00000000 l d LXUNF021 00000000 LXUNF021
|
||||
00000000 l d LXMRU022 00000000 LXMRU022
|
||||
00000000 l d LXJMPA01 00000000 LXJMPA01
|
||||
00000000 l d LXCALLB1 00000000 LXCALLB1
|
||||
00000000 l d MRUBITS1 00000000 MRUBITS1
|
||||
00000000 l d MRUBYTE1 00000000 MRUBYTE1
|
||||
00000000 l d MRUARB10 00000000 MRUARB10
|
||||
00000000 l d LXMRU040 00000000 LXMRU040
|
||||
00000000 l d LXJCC000 00000000 LXJCC000
|
||||
00000000 l d LXCJ0MRU 00000000 LXCJ0MRU
|
||||
00000000 l d LXCJ1MRU 00000000 LXCJ1MRU
|
||||
00000000 l d LXCALJMP 00000000 LXCALJMP
|
||||
00000000 l d LXCALL00 00000000 LXCALL00
|
||||
00000000 l d LXCALL01 00000000 LXCALL01
|
||||
00000000 l d LXCJ2MRU 00000000 LXCJ2MRU
|
||||
00000000 l d LXCJ4MRU 00000000 LXCJ4MRU
|
||||
00000000 l d LXCJ6MRU 00000000 LXCJ6MRU
|
||||
00000000 l d LXCJ7MRU 00000000 LXCJ7MRU
|
||||
00000000 l d LXMRU055 00000000 LXMRU055
|
||||
00000000 l d MRUBYTE2 00000000 MRUBYTE2
|
||||
00000000 l d MRUBITS2 00000000 MRUBITS2
|
||||
00000000 l d MRUARB20 00000000 MRUARB20
|
||||
00000000 l d LXMRU057 00000000 LXMRU057
|
||||
00000000 l d LXMRU058 00000000 LXMRU058
|
||||
00000000 l d LXUNF035 00000000 LXUNF035
|
||||
00000000 l d ctok32.30 00000000 ctok32.30
|
||||
00000000 l d CTCLEVE1 00000000 CTCLEVE1
|
||||
00000000 l d CALLTR01 00000000 CALLTR01
|
||||
00000000 l d CTBSHR01 00000000 CTBSHR01
|
||||
00000000 l d CTBROR01 00000000 CTBROR01
|
||||
00000000 l d CTBSWA01 00000000 CTBSWA01
|
||||
00000000 l d CALLTR02 00000000 CALLTR02
|
||||
00000000 l d CALLTRE8 00000000 CALLTRE8
|
||||
00000000 l d CALLTRE9 00000000 CALLTRE9
|
||||
00000000 l d CTCLEVE2 00000000 CTCLEVE2
|
||||
00000000 l d CALLTR12 00000000 CALLTR12
|
||||
00000000 l d CTBSHR11 00000000 CTBSHR11
|
||||
00000000 l d CTBROR11 00000000 CTBROR11
|
||||
00000000 l d CTBSWA11 00000000 CTBSWA11
|
||||
00000000 l d LEXEC017 00000000 LEXEC017
|
||||
00000000 g LEXEC000 00000000 _start
|
||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||
00000000 g MACHMAINX 00000000 _start
|
||||
00000000 *UND* 00000000 lzma_stack_adjust
|
||||
00000000 *UND* 00000000 lzma_u_len
|
||||
00000000 *UND* 00000000 lzma_c_len
|
||||
00000000 *UND* 00000000 lzma_properties
|
||||
00000000 *UND* 00000000 NMRU
|
||||
00000000 *UND* 00000000 filter_length
|
||||
00000000 *UND* 00000000 filter_cto
|
||||
00000014 g MACHMAINY 00000000 end_decompress
|
||||
|
||||
RELOCATION RECORDS FOR [I386BXX0]:
|
||||
RELOCATION RECORDS FOR [MACHMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_386_16 I386BXX1
|
||||
00000001 R_386_PC32 MACHMAINZ
|
||||
|
||||
RELOCATION RECORDS FOR [LEXEC000]:
|
||||
RELOCATION RECORDS FOR [NRV2E]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC32 LEXEC020
|
||||
000000c9 R_386_PC32 NRV_HEAD
|
||||
00000068 R_386_PC32 MACHMAINY
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA10]:
|
||||
RELOCATION RECORDS FOR [NRV2D]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2BDEC10
|
||||
000000bc R_386_PC32 NRV_HEAD
|
||||
00000068 R_386_PC32 MACHMAINY
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS10]:
|
||||
RELOCATION RECORDS FOR [NRV2B]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2BSMA10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2BFAS11
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2BDEC20
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2BDEC20
|
||||
0000000e R_386_PC8 N2BDEC20
|
||||
|
||||
RELOCATION RECORDS FOR [N2BDEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000011 R_386_PC8 N2BDEC60
|
||||
0000002f R_386_PC8 N2BDEC50
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA40]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2BDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2BDEC30
|
||||
0000000e R_386_PC8 N2BDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA60]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_386_PC32 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS60]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000a R_386_PC8 N2BFAS61
|
||||
00000015 R_386_PC32 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS61]:
|
||||
OFFSET TYPE VALUE
|
||||
00000012 R_386_PC32 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2DSMA10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2DFAS11
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_PC8 N2DDEC30
|
||||
0000000e R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DDEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000f R_386_PC8 N2DDEC20
|
||||
00000021 R_386_PC8 N2DDEC60
|
||||
00000043 R_386_PC8 N2DDEC50
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA40]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2DDEC30
|
||||
0000000e R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA60]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_386_PC32 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS60]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000a R_386_PC8 N2DFAS61
|
||||
00000015 R_386_PC32 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS61]:
|
||||
OFFSET TYPE VALUE
|
||||
00000012 R_386_PC32 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2ESMA10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2EFAS11
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_PC8 N2EDEC30
|
||||
0000000e R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2EDEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000f R_386_PC8 N2EDEC20
|
||||
0000001e R_386_PC8 N2EDEC50
|
||||
00000030 R_386_PC8 N2EDEC60
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA40]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2EDEC30
|
||||
0000000e R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA60]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_386_PC32 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS60]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000a R_386_PC8 N2EFAS61
|
||||
00000015 R_386_PC32 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS61]:
|
||||
OFFSET TYPE VALUE
|
||||
00000012 R_386_PC32 N2EDEC10
|
||||
000000a9 R_386_PC32 NRV_HEAD
|
||||
00000056 R_386_PC32 MACHMAINY
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC00]:
|
||||
OFFSET TYPE VALUE
|
||||
@ -524,140 +63,3 @@ OFFSET TYPE VALUE
|
||||
00000014 R_386_32 lzma_u_len
|
||||
0000001e R_386_32 lzma_c_len
|
||||
0000002a R_386_32 lzma_properties
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF000]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF010
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU005]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_32 NMRU
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF010]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC32 LXUNF042
|
||||
|
||||
RELOCATION RECORDS FOR [LXJCC020]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LXJCC021]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF388]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_PC8 LXUNF040
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF487]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF040
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU065]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXMRU070
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU070]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXUNF040
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU090]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 LXMRU100
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF041]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LEXEC016]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC32 LXUNF042
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU040]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXMRU030
|
||||
|
||||
RELOCATION RECORDS FOR [LXJCC000]:
|
||||
OFFSET TYPE VALUE
|
||||
00000007 R_386_PC8 LXJCC010
|
||||
|
||||
RELOCATION RECORDS FOR [LXCALL00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF037
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ2MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF037
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ4MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ6MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXCJ8MRU
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ7MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXCJ8MRU
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ8MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_PC8 LXUNF037
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF034]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXUNF030
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 ctok32.20
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.10]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000d R_386_PC8 ctok32.20
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_PC8 ctok32.40
|
||||
0000000a R_386_PC8 ctok32.40
|
||||
00000010 R_386_PC8 ctok32.40
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 ctok32.40
|
||||
00000009 R_386_PC8 ctok32.10
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 ctok32.00
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_32 filter_length
|
||||
|
||||
RELOCATION RECORDS FOR [CTCLEVE1]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_8 filter_cto
|
||||
00000004 R_386_PC8 CALLTR00
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR02]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000f R_386_PC8 CALLTR00
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_32 filter_length
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR11]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 CALLTR13
|
||||
|
||||
RELOCATION RECORDS FOR [CTCLEVE2]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_8 filter_cto
|
||||
00000004 R_386_PC8 CALLTR11
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR13]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 CALLTR10
|
||||
|
||||
@ -72,31 +72,32 @@ LOAD tmp/i386-darwin.macho-main.o
|
||||
.plt
|
||||
*(.plt)
|
||||
|
||||
.text 0x0000000008048000 0x46f
|
||||
.text 0x0000000008048000 0x5b1
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
.text 0x0000000008048000 0x7a tmp/i386-darwin.macho-fold.o
|
||||
0x0000000008048054 munmap
|
||||
0x000000000804802e bswap
|
||||
0x0000000008048064 mmap
|
||||
0x0000000008048048 write
|
||||
.text 0x0000000008048000 0x90 tmp/i386-darwin.macho-fold.o
|
||||
0x0000000008048069 munmap
|
||||
0x000000000804803b bswap
|
||||
0x0000000008048079 mmap
|
||||
0x000000000804805d write
|
||||
0x0000000008048000 _start
|
||||
0x0000000008048068 read
|
||||
0x0000000008048058 pread
|
||||
0x000000000804804c exit
|
||||
0x0000000008048060 open
|
||||
0x0000000008048050 mprotect
|
||||
0x000000000804805c close
|
||||
*fill* 0x000000000804807a 0x2 90909090
|
||||
.text 0x000000000804807c 0x3f3 tmp/i386-darwin.macho-main.o
|
||||
0x0000000008048341 upx_main
|
||||
0x000000000804807d read
|
||||
0x0000000008048052 spin
|
||||
0x000000000804806d pread
|
||||
0x0000000008048061 exit
|
||||
0x0000000008048075 open
|
||||
0x0000000008048065 mprotect
|
||||
0x0000000008048071 close
|
||||
.text 0x0000000008048090 0x521 tmp/i386-darwin.macho-main.o
|
||||
0x0000000008048197 do_xmap
|
||||
0x0000000008048485 upx_main
|
||||
*(.text.*personality*)
|
||||
*(.gnu.warning)
|
||||
|
||||
.fini
|
||||
*(.fini)
|
||||
0x000000000804846f PROVIDE (__etext, .)
|
||||
0x000000000804846f PROVIDE (_etext, .)
|
||||
0x000000000804846f PROVIDE (etext, .)
|
||||
0x00000000080485b1 PROVIDE (__etext, .)
|
||||
0x00000000080485b1 PROVIDE (_etext, .)
|
||||
0x00000000080485b1 PROVIDE (etext, .)
|
||||
|
||||
.rodata
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
@ -112,8 +113,8 @@ LOAD tmp/i386-darwin.macho-main.o
|
||||
|
||||
.gcc_except_table
|
||||
*(.gcc_except_table .gcc_except_table.*)
|
||||
0x000000000804846f . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff))
|
||||
0x000000000804946f . = (0x1000 DATA_SEGMENT_ALIGN 0x1000)
|
||||
0x00000000080485b1 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff))
|
||||
0x00000000080495b1 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000)
|
||||
|
||||
.eh_frame
|
||||
*(.eh_frame)
|
||||
@ -128,22 +129,22 @@ LOAD tmp/i386-darwin.macho-main.o
|
||||
*(.tbss .tbss.* .gnu.linkonce.tb.*)
|
||||
*(.tcommon)
|
||||
|
||||
.preinit_array 0x000000000804946f 0x0
|
||||
0x000000000804946f PROVIDE (__preinit_array_start, .)
|
||||
.preinit_array 0x00000000080495b1 0x0
|
||||
0x00000000080495b1 PROVIDE (__preinit_array_start, .)
|
||||
*(.preinit_array)
|
||||
0x000000000804946f PROVIDE (__preinit_array_end, .)
|
||||
0x00000000080495b1 PROVIDE (__preinit_array_end, .)
|
||||
|
||||
.init_array 0x000000000804946f 0x0
|
||||
0x000000000804946f PROVIDE (__init_array_start, .)
|
||||
.init_array 0x00000000080495b1 0x0
|
||||
0x00000000080495b1 PROVIDE (__init_array_start, .)
|
||||
*(SORT(.init_array.*))
|
||||
*(.init_array)
|
||||
0x000000000804946f PROVIDE (__init_array_end, .)
|
||||
0x00000000080495b1 PROVIDE (__init_array_end, .)
|
||||
|
||||
.fini_array 0x000000000804946f 0x0
|
||||
0x000000000804946f PROVIDE (__fini_array_start, .)
|
||||
.fini_array 0x00000000080495b1 0x0
|
||||
0x00000000080495b1 PROVIDE (__fini_array_start, .)
|
||||
*(.fini_array)
|
||||
*(SORT(.fini_array.*))
|
||||
0x000000000804946f PROVIDE (__fini_array_end, .)
|
||||
0x00000000080495b1 PROVIDE (__fini_array_end, .)
|
||||
|
||||
.ctors
|
||||
*crtbegin*.o(.ctors)
|
||||
@ -169,35 +170,35 @@ LOAD tmp/i386-darwin.macho-main.o
|
||||
|
||||
.got
|
||||
*(.got)
|
||||
0x000000000804946f . = (. DATA_SEGMENT_RELRO_END 0xc)
|
||||
0x00000000080495b1 . = (. DATA_SEGMENT_RELRO_END 0xc)
|
||||
|
||||
.got.plt
|
||||
*(.got.plt)
|
||||
|
||||
.data 0x0000000008049470 0x0
|
||||
.data 0x00000000080495b4 0x0
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
.data 0x0000000008049470 0x0 tmp/i386-darwin.macho-fold.o
|
||||
.data 0x0000000008049470 0x0 tmp/i386-darwin.macho-main.o
|
||||
.data 0x00000000080495b4 0x0 tmp/i386-darwin.macho-fold.o
|
||||
.data 0x00000000080495b4 0x0 tmp/i386-darwin.macho-main.o
|
||||
*(.gnu.linkonce.d.*personality*)
|
||||
|
||||
.data1
|
||||
*(.data1)
|
||||
0x0000000008049470 _edata = .
|
||||
0x0000000008049470 PROVIDE (edata, .)
|
||||
0x0000000008049470 __bss_start = .
|
||||
0x00000000080495b4 _edata = .
|
||||
0x00000000080495b4 PROVIDE (edata, .)
|
||||
0x00000000080495b4 __bss_start = .
|
||||
|
||||
.bss 0x0000000008049470 0x0
|
||||
.bss 0x00000000080495b4 0x0
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
.bss 0x0000000008049470 0x0 tmp/i386-darwin.macho-fold.o
|
||||
.bss 0x0000000008049470 0x0 tmp/i386-darwin.macho-main.o
|
||||
.bss 0x00000000080495b4 0x0 tmp/i386-darwin.macho-fold.o
|
||||
.bss 0x00000000080495b4 0x0 tmp/i386-darwin.macho-main.o
|
||||
*(COMMON)
|
||||
0x0000000008049470 . = ALIGN ((. != 0x0)?0x4:0x1)
|
||||
0x0000000008049470 . = ALIGN (0x4)
|
||||
0x0000000008049470 . = ALIGN (0x4)
|
||||
0x0000000008049470 _end = .
|
||||
0x0000000008049470 PROVIDE (end, .)
|
||||
0x0000000008049470 . = DATA_SEGMENT_END (.)
|
||||
0x00000000080495b4 . = ALIGN ((. != 0x0)?0x4:0x1)
|
||||
0x00000000080495b4 . = ALIGN (0x4)
|
||||
0x00000000080495b4 . = ALIGN (0x4)
|
||||
0x00000000080495b4 _end = .
|
||||
0x00000000080495b4 PROVIDE (end, .)
|
||||
0x00000000080495b4 . = DATA_SEGMENT_END (.)
|
||||
|
||||
.stab
|
||||
*(.stab)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user