segXHDR reserves address space; actual launch!

changed src/p_mach.cpp
 changed src/stub/amd64-darwin.macho-upxmain.h
 changed src/stub/src/amd64-darwin.macho-upxmain.c
This commit is contained in:
jreiser@BitWagon.com
2016-09-10 20:13:44 -07:00
committed by Markus F.X.J. Oberhumer
parent 5bb6f246ed
commit 13475002d7
3 changed files with 222 additions and 222 deletions
+12 -3
View File
@@ -831,13 +831,14 @@ void PackMachAMD64::pack4(OutputFile *fo, Filter &ft) // append PackHeader
fo->write(&stub_amd64_darwin_macho_upxmain_exe[segLINK.fileoff], segLINK.filesize);
// Mach_segment_command for new segXHDR
segXHDR.cmdsize = sizeof(segXHDR);
segXHDR.cmdsize = sizeof(segXHDR); // no need for sections
segLINK.vmaddr = segXHDR.vmsize;
segXHDR.vmsize -= segXHDR.vmaddr; // reserve for decompressed program
segXHDR.nsects = 0;
fo->seek((char const *)ptr1 - (char const *)ptr0, SEEK_SET);
fo->rewrite(&segXHDR, sizeof(segXHDR));
// Update the __LINKEDIT header
segLINK.vmaddr += delta;
segLINK.fileoff = offLINK;
fo->rewrite(&segLINK, sizeof(segLINK));
}
@@ -1423,6 +1424,10 @@ int PackMachBase<T>::pack2(OutputFile *fo, Filter &ft) // append compressed bo
for (k = 0; k < n_segment; ++k) {
if (lc_seg==msegcmd[k].cmd
&& 0!=msegcmd[k].filesize ) {
uint64_t const hi_va = msegcmd[k].vmaddr + msegcmd[k].vmsize;
if (segXHDR.vmsize < hi_va) {
segXHDR.vmsize = hi_va;
}
uip->ui_total_passes++;
if (my_filetype==Mach_header::MH_DYLIB) {
break;
@@ -1565,6 +1570,7 @@ void PackMachBase<T>::pack1(OutputFile *const fo, Filter &/*ft*/) // generate e
mhdro.ncmds += 1; // we add LC_SEGMENT{,_64} for UPX_DATA
mhdro.sizeofcmds += sizeof(segXHDR);
mhdro.flags &= ~Mach_header::MH_PIE; // we require fixed address
mhdro.flags |= Mach_header::MH_BINDATLOAD; // DT_BIND_NOW
}
fo->write(&mhdro, sizeof(mhdro));
@@ -1654,7 +1660,10 @@ void PackMachBase<T>::pack1(OutputFile *const fo, Filter &/*ft*/) // generate e
segXHDR.cmdsize = sizeof(segXHDR);
segXHDR.vmaddr = next_va;
segXHDR.fileoff = PAGE_MASK & (~PAGE_MASK + next_fpos);
segXHDR.maxprot = segXHDR.initprot = Mach_segment_command::VM_PROT_READ;
segXHDR.maxprot = Mach_segment_command::VM_PROT_READ
| Mach_segment_command::VM_PROT_WRITE
| Mach_segment_command::VM_PROT_EXECUTE;
segXHDR.initprot = Mach_segment_command::VM_PROT_READ;
segXHDR.nsects = 0;
fo->write(&segXHDR, sizeof(segXHDR));
// Mach_command __LINKEDIT and after
+205 -214
View File
@@ -1,5 +1,5 @@
/* amd64-darwin.macho-upxmain.h
created from amd64-darwin.macho-upxmain.exe, 8988 (0x231c) bytes
created from amd64-darwin.macho-upxmain.exe, 8848 (0x2290) bytes
This file is part of the UPX executable compressor.
@@ -31,13 +31,13 @@
*/
#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_SIZE 8988
#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_ADLER32 0x5d90d86d
#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_CRC32 0xa8ca228f
#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_SIZE 8848
#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_ADLER32 0x13cab0a0
#define STUB_AMD64_DARWIN_MACHO_UPXMAIN_EXE_CRC32 0xb26d00d6
unsigned char stub_amd64_darwin_macho_upxmain_exe[8988] = {
unsigned char stub_amd64_darwin_macho_upxmain_exe[8848] = {
/* 0x0000 */ 207,250,237,254, 7, 0, 0, 1, 3, 0, 0,128, 2, 0, 0, 0,
/* 0x0010 */ 13, 0, 0, 0,136, 4, 0, 0,133, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 13, 0, 0, 0, 56, 4, 0, 0,133, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 25, 0, 0, 0, 72, 0, 0, 0, 95, 95, 80, 65, 71, 69, 90, 69,
/* 0x0030 */ 82, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -49,68 +49,68 @@ unsigned char stub_amd64_darwin_macho_upxmain_exe[8988] = {
/* 0x00a0 */ 7, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x00b0 */ 95, 95,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00c0 */ 95, 95, 84, 69, 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00d0 */ 59, 9,255,255, 0, 0, 0, 0,203, 5, 0, 0, 0, 0, 0, 0,
/* 0x00e0 */ 59, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00d0 */ 31, 9,255,255, 0, 0, 0, 0,249, 5, 0, 0, 0, 0, 0, 0,
/* 0x00e0 */ 31, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00f0 */ 0, 4, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0100 */ 95, 95,115,116,117, 98,115, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0110 */ 95, 95, 84, 69, 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0120 */ 6, 15,255,255, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0,
/* 0x0130 */ 6, 15, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0120 */ 24, 15,255,255, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
/* 0x0130 */ 24, 15, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0140 */ 8, 4, 0,128, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
/* 0x0150 */ 95, 95,115,116,117, 98, 95,104,101,108,112,101,114, 0, 0, 0,
/* 0x0160 */ 95, 95, 84, 69, 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0170 */ 60, 15,255,255, 0, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0,
/* 0x0180 */ 60, 15, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0170 */ 72, 15,255,255, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,
/* 0x0180 */ 72, 15, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0190 */ 0, 4, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01a0 */ 95, 95,117,110,119,105,110,100, 95,105,110,102,111, 0, 0, 0,
/* 0x01b0 */ 95, 95, 84, 69, 88, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01c0 */ 168, 15,255,255, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0,
/* 0x01d0 */ 168, 15, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01f0 */ 25, 0, 0, 0, 56, 1, 0, 0, 95, 95, 68, 65, 84, 65, 0, 0,
/* 0x01f0 */ 25, 0, 0, 0,232, 0, 0, 0, 95, 95, 68, 65, 84, 65, 0, 0,
/* 0x0200 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,255,255, 0, 0, 0, 0,
/* 0x0210 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0220 */ 0, 16, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0,
/* 0x0230 */ 3, 0, 0, 0, 0, 0, 0, 0, 95, 95,110,108, 95,115,121,109,
/* 0x0230 */ 2, 0, 0, 0, 0, 0, 0, 0, 95, 95,110,108, 95,115,121,109,
/* 0x0240 */ 98,111,108, 95,112,116,114, 0, 95, 95, 68, 65, 84, 65, 0, 0,
/* 0x0250 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,255,255, 0, 0, 0, 0,
/* 0x0260 */ 16, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 3, 0, 0, 0,
/* 0x0270 */ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0,
/* 0x0280 */ 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,103,111,116, 0, 0, 0,
/* 0x0290 */ 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 68, 65, 84, 65, 0, 0,
/* 0x0270 */ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0,
/* 0x0280 */ 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,108, 97, 95,115,121,109,
/* 0x0290 */ 98,111,108, 95,112,116,114, 0, 95, 95, 68, 65, 84, 65, 0, 0,
/* 0x02a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 16,255,255, 0, 0, 0, 0,
/* 0x02b0 */ 8, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 3, 0, 0, 0,
/* 0x02c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0,
/* 0x02d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,108, 97, 95,115,121,109,
/* 0x02e0 */ 98,111,108, 95,112,116,114, 0, 95, 95, 68, 65, 84, 65, 0, 0,
/* 0x02f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 24, 16,255,255, 0, 0, 0, 0,
/* 0x0300 */ 72, 0, 0, 0, 0, 0, 0, 0, 24, 16, 0, 0, 3, 0, 0, 0,
/* 0x0310 */ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0, 0, 0,
/* 0x0320 */ 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 72, 0, 0, 0,
/* 0x0330 */ 95, 95, 76, 73, 78, 75, 69, 68, 73, 84, 0, 0, 0, 0, 0, 0,
/* 0x0340 */ 0, 32,255,255, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0350 */ 0, 32, 0, 0, 0, 0, 0, 0, 28, 3, 0, 0, 0, 0, 0, 0,
/* 0x0360 */ 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0370 */ 34, 0, 0,128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0380 */ 0, 32, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0390 */ 56, 32, 0, 0,136, 0, 0, 0,192, 32, 0, 0, 64, 0, 0, 0,
/* 0x03a0 */ 2, 0, 0, 0, 24, 0, 0, 0, 0, 33, 0, 0, 17, 0, 0, 0,
/* 0x03b0 */ 100, 34, 0, 0,184, 0, 0, 0, 11, 0, 0, 0, 80, 0, 0, 0,
/* 0x03c0 */ 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
/* 0x03d0 */ 6, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x03e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x03f0 */ 16, 34, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0400 */ 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 32, 0, 0, 0,
/* 0x0410 */ 12, 0, 0, 0, 47,117,115,114, 47,108,105, 98, 47,100,121,108,
/* 0x0420 */ 100, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 16, 0, 0, 0,
/* 0x0430 */ 0, 11, 10, 0, 0, 11, 10, 0, 42, 0, 0, 0, 16, 0, 0, 0,
/* 0x0440 */ 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,128, 24, 0, 0, 0,
/* 0x0450 */ 253, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0460 */ 12, 0, 0, 0, 56, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0,
/* 0x0470 */ 1, 10,202, 4, 0, 0, 1, 0, 47,117,115,114, 47,108,105, 98,
/* 0x0480 */ 47,108,105, 98, 83,121,115,116,101,109, 46, 66, 46,100,121,108,
/* 0x0490 */ 105, 98, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 16, 0, 0, 0,
/* 0x04a0 */ 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x02b0 */ 64, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 3, 0, 0, 0,
/* 0x02c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 10, 0, 0, 0,
/* 0x02d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 72, 0, 0, 0,
/* 0x02e0 */ 95, 95, 76, 73, 78, 75, 69, 68, 73, 84, 0, 0, 0, 0, 0, 0,
/* 0x02f0 */ 0, 32,255,255, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0300 */ 0, 32, 0, 0, 0, 0, 0, 0,144, 2, 0, 0, 0, 0, 0, 0,
/* 0x0310 */ 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0320 */ 34, 0, 0,128, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0330 */ 0, 32, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0340 */ 24, 32, 0, 0,112, 0, 0, 0,136, 32, 0, 0, 64, 0, 0, 0,
/* 0x0350 */ 2, 0, 0, 0, 24, 0, 0, 0,200, 32, 0, 0, 15, 0, 0, 0,
/* 0x0360 */ 0, 34, 0, 0,144, 0, 0, 0, 11, 0, 0, 0, 80, 0, 0, 0,
/* 0x0370 */ 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
/* 0x0380 */ 6, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0390 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x03a0 */ 184, 33, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x03b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 32, 0, 0, 0,
/* 0x03c0 */ 12, 0, 0, 0, 47,117,115,114, 47,108,105, 98, 47,100,121,108,
/* 0x03d0 */ 100, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 16, 0, 0, 0,
/* 0x03e0 */ 0, 11, 10, 0, 0, 11, 10, 0, 42, 0, 0, 0, 16, 0, 0, 0,
/* 0x03f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,128, 24, 0, 0, 0,
/* 0x0400 */ 20, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0410 */ 12, 0, 0, 0, 56, 0, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0,
/* 0x0420 */ 1, 10,202, 4, 0, 0, 1, 0, 47,117,115,114, 47,108,105, 98,
/* 0x0430 */ 47,108,105, 98, 83,121,115,116,101,109, 46, 66, 46,100,121,108,
/* 0x0440 */ 105, 98, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 16, 0, 0, 0,
/* 0x0450 */ 200, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0460 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0470 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0480 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0490 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x04a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x04b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x04c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x04d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -181,123 +181,123 @@ unsigned char stub_amd64_darwin_macho_upxmain_exe[8988] = {
/* 0x08e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 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, 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, 85, 72,137,229, 65,
/* 0x0940 */ 87, 65, 86, 65, 85, 65, 84, 83, 72,131,236, 72, 77,137,204, 76,
/* 0x0950 */ 137,195, 72,137, 77,152, 73,137,213, 76,139,125, 16, 72,137,117,
/* 0x0960 */ 208, 72,141, 71, 24, 72,137, 69,200, 72,139, 69,208, 72,131,192,
/* 0x0970 */ 232, 72,137, 69,192, 76,137,109,184,139, 71, 24, 72,137, 69,176,
/* 0x0980 */ 72,139, 69,192, 72,139, 77,200, 72,137, 77,168, 72,137, 69,160,
/* 0x0990 */ 69, 49,246, 72,141,125,192, 72,141,117,176, 49,201, 72,137,218,
/* 0x09a0 */ 232, 20, 1, 0, 0, 76,137, 36, 36, 72,141, 85,160,190, 0, 0,
/* 0x09b0 */ 0, 0,185,255,255,255,255, 76,137,239, 77,137,248, 73,137,217,
/* 0x09c0 */ 232, 10, 2, 0, 0, 72,137,195, 65,139, 77, 16,133,201, 15,132,
/* 0x09d0 */ 211, 0, 0, 0, 73,141, 69, 32,131, 56, 14,116, 19, 65,255,198,
/* 0x09e0 */ 139, 80, 4, 72, 1,208, 65, 57,206,114,237,233,183, 0, 0, 0,
/* 0x09f0 */ 139,120, 8, 72, 1,199, 49,246, 49,210,232, 49, 5, 0, 0, 65,
/* 0x0a00 */ 137,199, 69,133,255, 72,139, 93,152,120,105, 49,201, 68,137,255,
/* 0x0a10 */ 76,137,238, 72,137,218,232, 27, 5, 0, 0, 72, 57,216,117, 84,
/* 0x0a20 */ 77,141,117, 16, 69, 49,228, 65,139, 69, 0, 61,190,186,254,202,
/* 0x0a30 */ 116, 7, 61,202,254,186,190,117, 69, 65,139, 69, 4, 49,201,133,
/* 0x0a40 */ 192, 76,137,242,116, 56,129,122,248, 7, 0, 0, 1,116, 12,255,
/* 0x0a50 */ 193, 72,131,194, 20, 57,193,114,237,235, 35, 68,139, 34, 68,137,
/* 0x0a60 */ 255, 76,137,238, 72,137,218, 76,137,225,232,199, 4, 0, 0, 72,
/* 0x0a70 */ 57,216,116,179,191,127, 0, 0, 0,232,154, 4, 0, 0, 72,199,
/* 0x0a80 */ 4, 36, 0, 0, 0, 0, 49,210, 69, 49,192, 69, 49,201, 76,137,
/* 0x0a90 */ 239, 76,137,230, 68,137,249,232, 51, 1, 0, 0, 72,137,195, 68,
/* 0x0aa0 */ 137,255,232,107, 4, 0, 0, 72,137,216, 72,131,196, 72, 91, 65,
/* 0x0ab0 */ 92, 65, 93, 65, 94, 65, 95, 93,195, 85, 72,137,229, 65, 87, 65,
/* 0x0ac0 */ 86, 65, 85, 65, 84, 83, 72,131,236, 56, 72,137, 77,176, 72,137,
/* 0x0ad0 */ 85,168, 73,137,246, 72,137,125,184, 73,131, 62, 0, 15,132,211,
/* 0x0ae0 */ 0, 0, 0, 76,141,101,200,186, 12, 0, 0, 0, 72,139,125,184,
/* 0x0af0 */ 76,137,230,232,196, 3, 0, 0, 68,139,109,200, 68,139,125,204,
/* 0x0b00 */ 77,133,237, 15,132,154, 0, 0, 0, 65,141, 71,255, 68, 57,232,
/* 0x0b10 */ 15,131,175, 0, 0, 0, 77, 59, 46, 15,135,166, 0, 0, 0, 69,
/* 0x0b20 */ 57,239,115, 90, 68,137,109,196, 72,139, 69,184, 72,139,120, 8,
/* 0x0b30 */ 73,139, 86, 8,139, 93,208, 68, 15,182,195, 68,137,254, 72,141,
/* 0x0b40 */ 77,196,255, 85,168,133,192,117,124, 68, 57,109,196,117,118, 72,
/* 0x0b50 */ 131,125,176, 0,116, 27, 15,182,199,102,133,192,116, 19,193,235,
/* 0x0b60 */ 16, 15,183,200, 73,139,126, 8, 15,182,211, 68,137,238,255, 85,
/* 0x0b70 */ 176, 72,139, 69,184, 76, 1,120, 8, 76, 41, 56,235, 16, 73,139,
/* 0x0b80 */ 118, 8, 72,139,125,184, 76,137,250,232, 46, 3, 0, 0, 77, 1,
/* 0x0b90 */ 110, 8, 73,139, 6, 76, 41,232, 73,137, 6, 15,133, 70,255,255,
/* 0x0ba0 */ 255,235, 19, 65,129,255, 85, 80, 88, 33,117, 25, 72,139, 69,184,
/* 0x0bb0 */ 72,131, 56, 0,117, 15, 72,131,196, 56, 91, 65, 92, 65, 93, 65,
/* 0x0bc0 */ 94, 65, 95, 93,195,191,127, 0, 0, 0,232, 73, 3, 0, 0, 85,
/* 0x0bd0 */ 72,137,229, 65, 87, 65, 86, 65, 85, 65, 84, 83, 72,131,236,104,
/* 0x0be0 */ 76,137,141,120,255,255,255, 76,137,133,112,255,255,255,137, 77,
/* 0x0bf0 */ 148, 72,137, 85,192, 72,137,117,136, 72,137,125,152,139,119, 16,
/* 0x0c00 */ 69, 49,255,133,246,184, 0, 0, 0, 0, 15,132,212, 1, 0, 0,
/* 0x0c10 */ 72,139, 77,152, 76,141,105, 32, 72,131,125,192, 0, 15,149,193,
/* 0x0c20 */ 15,182,201, 72,141, 12, 73, 72,137, 77,128, 49,255, 49,192, 73,
/* 0x0c30 */ 139, 85, 0, 72,137,209, 72,193,233, 32,129,250, 40, 0, 0,128,
/* 0x0c40 */ 15,132, 65, 1, 0, 0,131,250, 25, 15,133,132, 1, 0, 0, 73,
/* 0x0c50 */ 139, 85, 32, 72,133,210, 15,132,119, 1, 0, 0, 72,137, 85,168,
/* 0x0c60 */ 72,137,125,184, 72,137, 69,160, 73,139, 69, 48, 72,137, 69,200,
/* 0x0c70 */ 77,139,101, 24, 76,137,101,176, 76,137,101,208, 69,137,230, 65,
/* 0x0c80 */ 129,230,255, 15, 0, 0, 77, 41,244, 73, 1,198,116, 73, 72,139,
/* 0x0c90 */ 77,128, 73,141, 52, 14, 72,133,192,185, 18, 0, 0, 0,186, 18,
/* 0x0ca0 */ 16, 0, 0, 15, 68,202, 72,131,125,192, 0, 15, 69,202, 72,131,
/* 0x0cb0 */ 248, 1, 69, 25,192, 68, 11, 69,148, 77,139, 77, 40, 76, 3, 77,
/* 0x0cc0 */ 136,186, 3, 0, 0, 0, 76,137,231,232, 80, 2, 0, 0, 73, 57,
/* 0x0cd0 */ 196, 15,133, 28, 1, 0, 0, 72,131,125,192, 0,116, 52, 73,131,
/* 0x0ce0 */ 125, 48, 0,116, 45, 73,131,125, 40, 0,117, 14, 72,139,133,112,
/* 0x0cf0 */ 255,255,255, 76,137, 32, 76,137,109,184, 72,139,125,192, 72,141,
/* 0x0d00 */ 117,200, 72,139,149,120,255,255,255, 72,139, 77, 16,232,167,253,
/* 0x0d10 */ 255,255, 68,137,243,247,219, 72,129,227,255, 15, 0, 0,116, 12,
/* 0x0d20 */ 75,141, 60, 52, 72,137,222,232,218, 1, 0, 0, 77,133,246,116,
/* 0x0d30 */ 23, 65,139, 85, 60, 76,137,231, 76,137,246,232,228, 1, 0, 0,
/* 0x0d40 */ 133,192, 15,133,171, 0, 0, 0, 72,139, 69,176, 72, 3, 69,168,
/* 0x0d50 */ 76, 1,243, 73, 1,220, 73, 57,196,115, 66, 77,133,228,116, 96,
/* 0x0d60 */ 72,137,198, 76, 41,230, 65,139, 85, 60,185, 18, 16, 0, 0, 65,
/* 0x0d70 */ 184,255,255,255,255, 69, 49,201, 76,137,231,232,158, 1, 0, 0,
/* 0x0d80 */ 73, 57,196,116, 59,235,108, 73,139, 69, 8, 72, 57, 71, 40,119,
/* 0x0d90 */ 66, 72, 59, 71, 48,115, 60, 72, 3, 71, 24,235, 54, 72,131,125,
/* 0x0da0 */ 192, 0,116, 28, 65,131,198, 3, 65,129,230,255, 15, 0, 0, 73,
/* 0x0db0 */ 131,254, 3,119, 11, 76,137,231, 76,137,246,232,106, 1, 0, 0,
/* 0x0dc0 */ 65,139, 77, 4, 72,139, 69,152,139,112, 16, 72,139, 69,160, 72,
/* 0x0dd0 */ 139,125,184, 65,255,199,137,201, 73, 1,205, 65, 57,247, 15,130,
/* 0x0de0 */ 75,254,255,255, 72,131,196,104, 91, 65, 92, 65, 93, 65, 94, 65,
/* 0x0df0 */ 95, 93,195,191,127, 0, 0, 0,232, 27, 1, 0, 0, 85, 72,137,
/* 0x0e00 */ 229, 65, 87, 65, 86, 83, 72,129,236, 24, 8, 0, 0, 76,139, 53,
/* 0x0e10 */ 252, 1, 0, 0, 77,139, 54, 76,137,117,224, 72,141, 5,219,255,
/* 0x0e20 */ 255,255, 72, 37, 0, 0,255,255, 68,139,120, 16, 69,133,255,116,
/* 0x0e30 */ 84, 72,131,200, 32, 49,210, 73,187, 85, 80, 88, 95, 68, 65, 84,
/* 0x0e40 */ 65, 73,186, 95, 95, 84, 69, 88, 84, 0, 0,131, 56, 25,117, 40,
/* 0x0e50 */ 72,139, 88, 8, 76, 57,219,116, 23, 76, 57,211,117, 26, 72,139,
/* 0x0e60 */ 88,104, 15,183, 11, 76,141, 68, 11, 2, 76,141, 75, 2,235, 8,
/* 0x0e70 */ 72,139,120, 24, 72,139,112, 48,255,194,139, 72, 4, 72, 1,200,
/* 0x0e80 */ 68, 57,250,114,198, 72,141,133,216,247,255,255, 72,137, 4, 36,
/* 0x0e90 */ 72,141,149,224,247,255,255,185, 0, 8, 0, 0,232,154,250,255,
/* 0x0ea0 */ 255, 76, 59,117,224,117, 16, 49,192, 72,129,196, 24, 8, 0, 0,
/* 0x0eb0 */ 91, 65, 94, 65, 95, 93,195,232, 80, 0, 0, 0, 72,139, 15, 72,
/* 0x0ec0 */ 57,209,114, 52, 72,139, 71, 8, 72,133,210,116, 29, 72,137,209,
/* 0x0ed0 */ 72,255,201, 68,138, 0, 72,141, 64, 1, 68,136, 6, 72,141,118,
/* 0x0ee0 */ 1,117,237, 72,139, 15, 72,139, 71, 8, 72, 1,208, 72,137, 71,
/* 0x0ef0 */ 8, 72, 41,209, 72,137, 15,195, 85, 72,137,229,191,127, 0, 0,
/* 0x0f00 */ 0,232, 18, 0, 0, 0,255, 37, 12, 1, 0, 0,255, 37, 14, 1,
/* 0x0f10 */ 0, 0,255, 37, 16, 1, 0, 0,255, 37, 18, 1, 0, 0,255, 37,
/* 0x0f20 */ 20, 1, 0, 0,255, 37, 22, 1, 0, 0,255, 37, 24, 1, 0, 0,
/* 0x0f30 */ 255, 37, 26, 1, 0, 0,255, 37, 28, 1, 0, 0, 76,141, 29,197,
/* 0x0f40 */ 0, 0, 0, 65, 83,255, 37,181, 0, 0, 0,144,104, 0, 0, 0,
/* 0x0f50 */ 0,233,230,255,255,255,104, 15, 0, 0, 0,233,220,255,255,255,
/* 0x0f60 */ 104, 39, 0, 0, 0,233,210,255,255,255,104, 52, 0, 0, 0,233,
/* 0x0f70 */ 200,255,255,255,104, 64, 0, 0, 0,233,190,255,255,255,104, 76,
/* 0x0f80 */ 0, 0, 0,233,180,255,255,255,104, 92, 0, 0, 0,233,170,255,
/* 0x0f90 */ 255,255,104,106, 0, 0, 0,233,160,255,255,255,104,118, 0, 0,
/* 0x0fa0 */ 0,233,150,255,255,255, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0,
/* 0x0910 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,
/* 0x0920 */ 72,137,229, 65, 87, 65, 86, 65, 85, 65, 84, 83, 72,131,236, 72,
/* 0x0930 */ 77,137,204, 76,137,195, 72,137, 77,152, 73,137,213, 76,139,125,
/* 0x0940 */ 16, 72,137,117,208, 72,141, 71, 24, 72,137, 69,200, 72,139, 69,
/* 0x0950 */ 208, 72,131,192,232, 72,137, 69,192, 76,137,109,184,139, 71, 24,
/* 0x0960 */ 72,137, 69,176, 72,139, 69,192, 72,139, 77,200, 72,137, 77,168,
/* 0x0970 */ 72,137, 69,160, 69, 49,246, 72,141,125,192, 72,141,117,176, 49,
/* 0x0980 */ 201, 72,137,218,232, 20, 1, 0, 0, 76,137, 36, 36, 72,141, 85,
/* 0x0990 */ 160,190, 0, 0, 0, 0,185,255,255,255,255, 76,137,239, 77,137,
/* 0x09a0 */ 248, 73,137,217,232, 10, 2, 0, 0, 72,137,195, 65,139, 77, 16,
/* 0x09b0 */ 133,201, 15,132,211, 0, 0, 0, 73,141, 69, 32,131, 56, 14,116,
/* 0x09c0 */ 19, 65,255,198,139, 80, 4, 72, 1,208, 65, 57,206,114,237,233,
/* 0x09d0 */ 183, 0, 0, 0,139,120, 8, 72, 1,199, 49,246, 49,210,232, 89,
/* 0x09e0 */ 5, 0, 0, 65,137,199, 69,133,255, 72,139, 93,152,120,105, 49,
/* 0x09f0 */ 201, 68,137,255, 76,137,238, 72,137,218,232, 67, 5, 0, 0, 72,
/* 0x0a00 */ 57,216,117, 84, 77,141,117, 16, 69, 49,228, 65,139, 69, 0, 61,
/* 0x0a10 */ 190,186,254,202,116, 7, 61,202,254,186,190,117, 69, 65,139, 69,
/* 0x0a20 */ 4, 49,201,133,192, 76,137,242,116, 56,129,122,248, 7, 0, 0,
/* 0x0a30 */ 1,116, 12,255,193, 72,131,194, 20, 57,193,114,237,235, 35, 68,
/* 0x0a40 */ 139, 34, 68,137,255, 76,137,238, 72,137,218, 76,137,225,232,239,
/* 0x0a50 */ 4, 0, 0, 72, 57,216,116,179,191,127, 0, 0, 0,232,194, 4,
/* 0x0a60 */ 0, 0, 72,199, 4, 36, 0, 0, 0, 0, 49,210, 69, 49,192, 69,
/* 0x0a70 */ 49,201, 76,137,239, 76,137,230, 68,137,249,232, 51, 1, 0, 0,
/* 0x0a80 */ 72,137,195, 68,137,255,232,147, 4, 0, 0, 72,137,216, 72,131,
/* 0x0a90 */ 196, 72, 91, 65, 92, 65, 93, 65, 94, 65, 95, 93,195, 85, 72,137,
/* 0x0aa0 */ 229, 65, 87, 65, 86, 65, 85, 65, 84, 83, 72,131,236, 56, 72,137,
/* 0x0ab0 */ 77,176, 72,137, 85,168, 73,137,246, 72,137,125,184, 73,131, 62,
/* 0x0ac0 */ 0, 15,132,211, 0, 0, 0, 76,141,101,200,186, 12, 0, 0, 0,
/* 0x0ad0 */ 72,139,125,184, 76,137,230,232,242, 3, 0, 0, 68,139,109,200,
/* 0x0ae0 */ 68,139,125,204, 77,133,237, 15,132,154, 0, 0, 0, 65,141, 71,
/* 0x0af0 */ 255, 68, 57,232, 15,131,175, 0, 0, 0, 77, 59, 46, 15,135,166,
/* 0x0b00 */ 0, 0, 0, 69, 57,239,115, 90, 68,137,109,196, 72,139, 69,184,
/* 0x0b10 */ 72,139,120, 8, 73,139, 86, 8,139, 93,208, 68, 15,182,195, 68,
/* 0x0b20 */ 137,254, 72,141, 77,196,255, 85,168,133,192,117,124, 68, 57,109,
/* 0x0b30 */ 196,117,118, 72,131,125,176, 0,116, 27, 15,182,199,102,133,192,
/* 0x0b40 */ 116, 19,193,235, 16, 15,183,200, 73,139,126, 8, 15,182,211, 68,
/* 0x0b50 */ 137,238,255, 85,176, 72,139, 69,184, 76, 1,120, 8, 76, 41, 56,
/* 0x0b60 */ 235, 16, 73,139,118, 8, 72,139,125,184, 76,137,250,232, 92, 3,
/* 0x0b70 */ 0, 0, 77, 1,110, 8, 73,139, 6, 76, 41,232, 73,137, 6, 15,
/* 0x0b80 */ 133, 70,255,255,255,235, 19, 65,129,255, 85, 80, 88, 33,117, 25,
/* 0x0b90 */ 72,139, 69,184, 72,131, 56, 0,117, 15, 72,131,196, 56, 91, 65,
/* 0x0ba0 */ 92, 65, 93, 65, 94, 65, 95, 93,195,191,127, 0, 0, 0,232,113,
/* 0x0bb0 */ 3, 0, 0, 85, 72,137,229, 65, 87, 65, 86, 65, 85, 65, 84, 83,
/* 0x0bc0 */ 72,131,236,104, 76,137,141,120,255,255,255, 76,137,133,112,255,
/* 0x0bd0 */ 255,255,137, 77,148, 72,137, 85,192, 72,137,117,136, 72,137,125,
/* 0x0be0 */ 152,139, 95, 16, 69, 49,255,133,219,184, 0, 0, 0, 0, 15,132,
/* 0x0bf0 */ 7, 2, 0, 0, 72,139, 77,152, 76,141,105, 32, 72,131,125,192,
/* 0x0c00 */ 0, 15,149,193, 15,182,201, 72,141, 12, 73, 72,137, 77,128, 72,
/* 0x0c10 */ 191, 4, 0, 0, 0, 42, 0, 0, 0, 69, 49,192, 49,192, 73,139,
/* 0x0c20 */ 85, 0, 72,137,209, 72,193,233, 32,141,114,252,131,254, 2, 15,
/* 0x0c30 */ 130, 80, 1, 0, 0,129,250, 40, 0, 0,128, 15,132, 83, 1, 0,
/* 0x0c40 */ 0,131,250, 25, 15,133,160, 1, 0, 0, 73,139, 85, 32, 72,133,
/* 0x0c50 */ 210, 15,132,147, 1, 0, 0, 72,137, 85,168, 76,137, 69,184, 72,
/* 0x0c60 */ 137, 69,160, 73,139, 69, 48, 72,137, 69,200, 77,139,101, 24, 76,
/* 0x0c70 */ 137,101,176, 76,137,101,208, 69,137,230, 65,129,230,255, 15, 0,
/* 0x0c80 */ 0, 77, 41,244, 73, 1,198,116, 73, 72,139, 77,128, 73,141, 52,
/* 0x0c90 */ 14, 72,133,192,185, 18, 0, 0, 0,186, 18, 16, 0, 0, 15, 68,
/* 0x0ca0 */ 202, 72,131,125,192, 0, 15, 69,202, 72,131,248, 1, 69, 25,192,
/* 0x0cb0 */ 68, 11, 69,148, 77,139, 77, 40, 76, 3, 77,136,186, 3, 0, 0,
/* 0x0cc0 */ 0, 76,137,231,232, 97, 2, 0, 0, 73, 57,196, 15,133, 56, 1,
/* 0x0cd0 */ 0, 0, 72,131,125,192, 0,116, 52, 73,131,125, 48, 0,116, 45,
/* 0x0ce0 */ 73,131,125, 40, 0,117, 14, 72,139,133,112,255,255,255, 76,137,
/* 0x0cf0 */ 32, 76,137,109,184, 72,139,125,192, 72,141,117,200, 72,139,149,
/* 0x0d00 */ 120,255,255,255, 72,139, 77, 16,232,144,253,255,255, 68,137,243,
/* 0x0d10 */ 247,219, 72,129,227,255, 15, 0, 0,116, 12, 75,141, 60, 52, 72,
/* 0x0d20 */ 137,222,232,241, 1, 0, 0, 77,133,246,116, 23, 65,139, 85, 60,
/* 0x0d30 */ 76,137,231, 76,137,246,232,245, 1, 0, 0,133,192, 15,133,199,
/* 0x0d40 */ 0, 0, 0, 72,139, 69,176, 72, 3, 69,168, 76, 1,243, 73, 1,
/* 0x0d50 */ 220, 73, 57,196,115, 84, 77,133,228,116,114, 72,137,198, 76, 41,
/* 0x0d60 */ 230, 65,139, 85, 60,185, 18, 16, 0, 0, 65,184,255,255,255,255,
/* 0x0d70 */ 69, 49,201, 76,137,231,232,175, 1, 0, 0, 73, 57,196,116, 77,
/* 0x0d80 */ 233,133, 0, 0, 0, 73, 57,125, 8,117, 95, 73,139,133,144, 0,
/* 0x0d90 */ 0, 0,235, 86, 73,139, 69, 8, 73, 57, 64, 40,119, 76, 73, 59,
/* 0x0da0 */ 64, 48,115, 70, 73, 3, 64, 24,235, 64, 72,131,125,192, 0,116,
/* 0x0db0 */ 28, 65,131,198, 3, 65,129,230,255, 15, 0, 0, 73,131,254, 3,
/* 0x0dc0 */ 119, 11, 76,137,231, 76,137,246,232,105, 1, 0, 0, 65,139, 77,
/* 0x0dd0 */ 4, 72,139, 69,152,139, 88, 16, 72,191, 4, 0, 0, 0, 42, 0,
/* 0x0de0 */ 0, 0, 72,139, 69,160, 76,139, 69,184, 65,255,199,137,201, 73,
/* 0x0df0 */ 1,205, 65, 57,223, 15,130, 35,254,255,255, 72,131,196,104, 91,
/* 0x0e00 */ 65, 92, 65, 93, 65, 94, 65, 95, 93,195,191,127, 0, 0, 0,232,
/* 0x0e10 */ 16, 1, 0, 0, 85, 72,137,229, 65, 87, 65, 86, 65, 84, 83, 72,
/* 0x0e20 */ 129,236, 16, 8, 0, 0, 73,137,247, 65,137,254, 72,141, 5,225,
/* 0x0e30 */ 255,255,255, 72, 37, 0, 0,255,255, 68,139, 96, 16, 69,133,228,
/* 0x0e40 */ 116, 84, 72,131,200, 32, 49,210, 73,187, 85, 80, 88, 95, 68, 65,
/* 0x0e50 */ 84, 65, 73,186, 95, 95, 84, 69, 88, 84, 0, 0,131, 56, 25,117,
/* 0x0e60 */ 40, 72,139, 88, 8, 76, 57,219,116, 23, 76, 57,211,117, 26, 72,
/* 0x0e70 */ 139, 88,104, 15,183, 11, 76,141, 68, 11, 2, 76,141, 75, 2,235,
/* 0x0e80 */ 8, 72,139,120, 24, 72,139,112, 48,255,194,139, 72, 4, 72, 1,
/* 0x0e90 */ 200, 68, 57,226,114,198, 73,141, 71,240, 72,137, 4, 36, 72,141,
/* 0x0ea0 */ 149,224,247,255,255,185, 0, 8, 0, 0,232,112,250,255,255, 73,
/* 0x0eb0 */ 99,206, 73,137, 79,248, 73,141,103,240,255,224, 49,192, 72,129,
/* 0x0ec0 */ 196, 16, 8, 0, 0, 91, 65, 92, 65, 94, 65, 95, 93,195, 72,139,
/* 0x0ed0 */ 15, 72, 57,209,114, 52, 72,139, 71, 8, 72,133,210,116, 29, 72,
/* 0x0ee0 */ 137,209, 72,255,201, 68,138, 0, 72,141, 64, 1, 68,136, 6, 72,
/* 0x0ef0 */ 141,118, 1,117,237, 72,139, 15, 72,139, 71, 8, 72, 1,208, 72,
/* 0x0f00 */ 137, 71, 8, 72, 41,209, 72,137, 15,195, 85, 72,137,229,191,127,
/* 0x0f10 */ 0, 0, 0,232, 12, 0, 0, 0,255, 37,242, 0, 0, 0,255, 37,
/* 0x0f20 */ 244, 0, 0, 0,255, 37,246, 0, 0, 0,255, 37,248, 0, 0, 0,
/* 0x0f30 */ 255, 37,250, 0, 0, 0,255, 37,252, 0, 0, 0,255, 37,254, 0,
/* 0x0f40 */ 0, 0,255, 37, 0, 1, 0, 0, 76,141, 29,185, 0, 0, 0, 65,
/* 0x0f50 */ 83,255, 37,169, 0, 0, 0,144,104, 0, 0, 0, 0,233,230,255,
/* 0x0f60 */ 255,255,104, 15, 0, 0, 0,233,220,255,255,255,104, 28, 0, 0,
/* 0x0f70 */ 0,233,210,255,255,255,104, 40, 0, 0, 0,233,200,255,255,255,
/* 0x0f80 */ 104, 52, 0, 0, 0,233,190,255,255,255,104, 68, 0, 0, 0,233,
/* 0x0f90 */ 180,255,255,255,104, 82, 0, 0, 0,233,170,255,255,255,104, 94,
/* 0x0fa0 */ 0, 0, 0,233,160,255,255,255, 1, 0, 0, 0, 28, 0, 0, 0,
/* 0x0fb0 */ 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
/* 0x0fc0 */ 2, 0, 0, 0, 59, 9, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0,
/* 0x0fd0 */ 7, 15, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0,
/* 0x0fe0 */ 12, 0, 3, 0, 24, 0, 3, 0, 0, 0, 0, 2,194, 4, 0, 1,
/* 0x0ff0 */ 129, 5, 0, 0, 0, 0, 0, 1, 97, 1, 3, 1,209, 88, 5, 1,
/* 0x0fc0 */ 2, 0, 0, 0, 31, 9, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0,
/* 0x0fd0 */ 25, 15, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0,
/* 0x0fe0 */ 12, 0, 3, 0, 24, 0, 3, 0, 0, 0, 0, 2,245, 4, 0, 1,
/* 0x0ff0 */ 175, 5, 0, 0, 0, 0, 0, 1, 17, 11, 4, 1,209, 88, 5, 1,
/* 0x1000 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1010 */ 0, 0, 0, 0, 0, 0, 0, 0, 76, 15,255,255, 0, 0, 0, 0,
/* 0x1020 */ 86, 15,255,255, 0, 0, 0, 0, 96, 15,255,255, 0, 0, 0, 0,
/* 0x1030 */ 106, 15,255,255, 0, 0, 0, 0,116, 15,255,255, 0, 0, 0, 0,
/* 0x1040 */ 126, 15,255,255, 0, 0, 0, 0,136, 15,255,255, 0, 0, 0, 0,
/* 0x1050 */ 146, 15,255,255, 0, 0, 0, 0,156, 15,255,255, 0, 0, 0, 0,
/* 0x1010 */ 88, 15,255,255, 0, 0, 0, 0, 98, 15,255,255, 0, 0, 0, 0,
/* 0x1020 */ 108, 15,255,255, 0, 0, 0, 0,118, 15,255,255, 0, 0, 0, 0,
/* 0x1030 */ 128, 15,255,255, 0, 0, 0, 0,138, 15,255,255, 0, 0, 0, 0,
/* 0x1040 */ 148, 15,255,255, 0, 0, 0, 0,158, 15,255,255, 0, 0, 0, 0,
/* 0x1050 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1070 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1080 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -548,54 +548,45 @@ unsigned char stub_amd64_darwin_macho_upxmain_exe[8988] = {
/* 0x1fd0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1fe0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1ff0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2000 */ 17, 64, 95, 95, 95,115,116, 97, 99,107, 95, 99,104,107, 95,103,
/* 0x2010 */ 117, 97,114,100, 0, 81,114, 16,144, 64,100,121,108,100, 95,115,
/* 0x2020 */ 116,117, 98, 95, 98,105,110,100,101,114, 0,128,232,255,255,255,
/* 0x2030 */ 255,255,255,255,255, 1,144, 0,114, 24, 17, 64, 95, 95, 95, 98,
/* 0x2040 */ 122,101,114,111, 0,144, 0,114, 32, 17, 64, 95, 95, 95,115,116,
/* 0x2050 */ 97, 99,107, 95, 99,104,107, 95,102, 97,105,108, 0,144, 0,114,
/* 0x2060 */ 40, 17, 64, 95, 99,108,111,115,101, 0,144, 0,114, 48, 17, 64,
/* 0x2070 */ 95,101,120,105,116, 0,144, 0,114, 56, 17, 64, 95,109,109, 97,
/* 0x2080 */ 112, 0,144, 0,114, 64, 17, 64, 95,109,112,114,111,116,101, 99,
/* 0x2090 */ 116, 0,144, 0,114, 72, 17, 64, 95,109,117,110,109, 97,112, 0,
/* 0x20a0 */ 144, 0,114, 80, 17, 64, 95,111,112,101,110, 0,144, 0,114, 88,
/* 0x20b0 */ 17, 64, 95,112,114,101, 97,100, 0,144, 0, 0, 0, 0, 0, 0,
/* 0x20c0 */ 0, 1, 95, 0, 5, 0, 3, 95,109,104, 95,101,120,101, 99,117,
/* 0x20d0 */ 116,101, 95,104,101, 97,100,101,114, 0, 43,117,112,120, 95,109,
/* 0x20e0 */ 97,105,110, 0, 47,109, 97,105,110, 0, 52, 2, 0, 0, 0, 3,
/* 0x20f0 */ 0,187, 18, 0, 3, 0,253, 27, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2100 */ 2, 0, 0, 0, 14, 1, 0, 0,185, 10,255,255, 0, 0, 0, 0,
/* 0x2110 */ 16, 0, 0, 0, 14, 1, 0, 0,207, 11,255,255, 0, 0, 0, 0,
/* 0x2120 */ 25, 0, 0, 0, 14, 1, 0, 0,188, 14,255,255, 0, 0, 0, 0,
/* 0x2130 */ 32, 0, 0, 0, 3, 1, 16, 0, 0, 0,255,255, 0, 0, 0, 0,
/* 0x2140 */ 52, 0, 0, 0, 15, 1, 0, 0,253, 13,255,255, 0, 0, 0, 0,
/* 0x2150 */ 58, 0, 0, 0, 15, 1, 0, 0, 59, 9,255,255, 0, 0, 0, 0,
/* 0x2160 */ 68, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2170 */ 77, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2180 */ 95, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2190 */ 114, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x21a0 */ 121, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x21b0 */ 127, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x21c0 */ 133, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x21d0 */ 143, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x21e0 */ 151, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x21f0 */ 157, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2200 */ 164, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x2210 */ 6, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
/* 0x2220 */ 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
/* 0x2230 */ 15, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0,
/* 0x2240 */ 6, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
/* 0x2250 */ 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0,
/* 0x2260 */ 15, 0, 0, 0, 32, 0, 95,117,110,112, 97, 99,107, 69,120,116,
/* 0x2270 */ 101,110,116, 0, 95,100,111, 95,120,109, 97,112, 0, 95,120,114,
/* 0x2280 */ 101, 97,100, 0, 95, 95,109,104, 95,101,120,101, 99,117,116,101,
/* 0x2290 */ 95,104,101, 97,100,101,114, 0, 95,109, 97,105,110, 0, 95,117,
/* 0x22a0 */ 112,120, 95,109, 97,105,110, 0, 95, 95, 95, 98,122,101,114,111,
/* 0x22b0 */ 0, 95, 95, 95,115,116, 97, 99,107, 95, 99,104,107, 95,102, 97,
/* 0x22c0 */ 105,108, 0, 95, 95, 95,115,116, 97, 99,107, 95, 99,104,107, 95,
/* 0x22d0 */ 103,117, 97,114,100, 0, 95, 99,108,111,115,101, 0, 95,101,120,
/* 0x22e0 */ 105,116, 0, 95,109,109, 97,112, 0, 95,109,112,114,111,116,101,
/* 0x22f0 */ 99,116, 0, 95,109,117,110,109, 97,112, 0, 95,111,112,101,110,
/* 0x2300 */ 0, 95,112,114,101, 97,100, 0,100,121,108,100, 95,115,116,117,
/* 0x2310 */ 98, 95, 98,105,110,100,101,114, 0, 0, 0, 0
/* 0x2000 */ 17, 64,100,121,108,100, 95,115,116,117, 98, 95, 98,105,110,100,
/* 0x2010 */ 101,114, 0, 81,114, 0,144, 0,114, 16, 17, 64, 95, 95, 95, 98,
/* 0x2020 */ 122,101,114,111, 0,144, 0,114, 24, 17, 64, 95, 99,108,111,115,
/* 0x2030 */ 101, 0,144, 0,114, 32, 17, 64, 95,101,120,105,116, 0,144, 0,
/* 0x2040 */ 114, 40, 17, 64, 95,109,109, 97,112, 0,144, 0,114, 48, 17, 64,
/* 0x2050 */ 95,109,112,114,111,116,101, 99,116, 0,144, 0,114, 56, 17, 64,
/* 0x2060 */ 95,109,117,110,109, 97,112, 0,144, 0,114, 64, 17, 64, 95,111,
/* 0x2070 */ 112,101,110, 0,144, 0,114, 72, 17, 64, 95,112,114,101, 97,100,
/* 0x2080 */ 0,144, 0, 0, 0, 0, 0, 0, 0, 1, 95, 0, 5, 0, 3, 95,
/* 0x2090 */ 109,104, 95,101,120,101, 99,117,116,101, 95,104,101, 97,100,101,
/* 0x20a0 */ 114, 0, 43,117,112,120, 95,109, 97,105,110, 0, 47,109, 97,105,
/* 0x20b0 */ 110, 0, 52, 2, 0, 0, 0, 3, 0,159, 18, 0, 3, 0,148, 28,
/* 0x20c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 14, 1, 0, 0,
/* 0x20d0 */ 157, 10,255,255, 0, 0, 0, 0, 16, 0, 0, 0, 14, 1, 0, 0,
/* 0x20e0 */ 179, 11,255,255, 0, 0, 0, 0, 25, 0, 0, 0, 14, 1, 0, 0,
/* 0x20f0 */ 206, 14,255,255, 0, 0, 0, 0, 32, 0, 0, 0, 3, 1, 16, 0,
/* 0x2100 */ 0, 0,255,255, 0, 0, 0, 0, 52, 0, 0, 0, 15, 1, 0, 0,
/* 0x2110 */ 20, 14,255,255, 0, 0, 0, 0, 58, 0, 0, 0, 15, 1, 0, 0,
/* 0x2120 */ 31, 9,255,255, 0, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 1,
/* 0x2130 */ 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 1, 0, 0, 1,
/* 0x2140 */ 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 1, 0, 0, 1,
/* 0x2150 */ 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 1, 0, 0, 1,
/* 0x2160 */ 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 1, 0, 0, 1,
/* 0x2170 */ 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 1, 0, 0, 1,
/* 0x2180 */ 0, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 1, 0, 0, 1,
/* 0x2190 */ 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 1, 0, 0, 1,
/* 0x21a0 */ 0, 0, 0, 0, 0, 0, 0, 0,127, 0, 0, 0, 1, 0, 0, 1,
/* 0x21b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0,
/* 0x21c0 */ 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,
/* 0x21d0 */ 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 64,
/* 0x21e0 */ 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0,
/* 0x21f0 */ 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0,
/* 0x2200 */ 32, 0, 95,117,110,112, 97, 99,107, 69,120,116,101,110,116, 0,
/* 0x2210 */ 95,100,111, 95,120,109, 97,112, 0, 95,120,114,101, 97,100, 0,
/* 0x2220 */ 95, 95,109,104, 95,101,120,101, 99,117,116,101, 95,104,101, 97,
/* 0x2230 */ 100,101,114, 0, 95,109, 97,105,110, 0, 95,117,112,120, 95,109,
/* 0x2240 */ 97,105,110, 0, 95, 95, 95, 98,122,101,114,111, 0, 95, 99,108,
/* 0x2250 */ 111,115,101, 0, 95,101,120,105,116, 0, 95,109,109, 97,112, 0,
/* 0x2260 */ 95,109,112,114,111,116,101, 99,116, 0, 95,109,117,110,109, 97,
/* 0x2270 */ 112, 0, 95,111,112,101,110, 0, 95,112,114,101, 97,100, 0,100,
/* 0x2280 */ 121,108,100, 95,115,116,117, 98, 95, 98,105,110,100,101,114, 0
};
+5 -5
View File
@@ -573,7 +573,8 @@ ERR_LAB
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
if (AMD64_THREAD_STATE ==thrc->flavor
&& AMD64_THREAD_STATE_COUNT==thrc->count ) {
entry = thrc->rip;
entry = thrc->state.rip;
}
}
else if (LC_MAIN==sc->cmd) {
entry = ((Mach_main_command const *)sc)->entryoff;
@@ -681,7 +682,6 @@ typedef struct {
int
main(int argc, char *argv[])
{
Mach_header64 *mhdrp;
Mach_header64 const *mhdr0 = (Mach_header64 const *)((~0ul<<16) & (unsigned long)&main);
Mach_command const *ptr = (Mach_command const *)(1+ mhdr0);
f_unfilter *f_unf;
@@ -711,12 +711,12 @@ main(int argc, char *argv[])
}
char mhdr[2048];
//fprintf(stderr, "call upx_main(payload=%p paysize=%lu mhdr=%p f_exp=%p f_unf=%p mhdrp@%p)\n",
//payload, paysize, mhdr, f_exp, f_unf, &mhdrp);
//payload, paysize, mhdr, f_exp, f_unf, &argv[-2]);
uint64_t entry = upx_main((struct l_info const *)payload, paysize,
(Mach_header64 *)mhdr, sizeof(mhdr),
f_exp, f_unf, &mhdrp);
f_exp, f_unf, (Mach_header64 **)&argv[-2]);
//fprintf(stderr, "return to launch\n");
//launch(entry, &mhdrp);
asm("movq %2,-1*8(%1); lea -2*8(%1),%rsp; jmp *%0" : : "r" (entry), "r" (argv), "r" ((long)argc));
return 0;
}