dos/exe: nrv2b compressed lzma decompressor added
This commit is contained in:
+109
-45
@@ -96,7 +96,7 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
|
|||||||
#define oh (*eh)
|
#define oh (*eh)
|
||||||
// fill new exe header
|
// fill new exe header
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
if (!opt->dos_exe.no_reloc)
|
if (!opt->dos_exe.no_reloc && ph.method != M_LZMA)
|
||||||
flag |= USEJUMP;
|
flag |= USEJUMP;
|
||||||
if (ih.relocs == 0)
|
if (ih.relocs == 0)
|
||||||
flag |= NORELOC;
|
flag |= NORELOC;
|
||||||
@@ -128,21 +128,87 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
|
|||||||
#undef oh
|
#undef oh
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackExe::addLoaderEpilogue(int flag)
|
||||||
|
{
|
||||||
|
addLoader("EXEMAIN5", NULL);
|
||||||
|
if (relocsize)
|
||||||
|
addLoader(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff) >= relocsize ? "EXENOADJ" : "EXEADJUS",
|
||||||
|
"EXERELO1",
|
||||||
|
has_9a ? "EXEREL9A" : "",
|
||||||
|
"EXERELO2",
|
||||||
|
ih_exesize > 0xFE00 ? "EXEREBIG" : "",
|
||||||
|
"EXERELO3",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
addLoader("EXEMAIN8",
|
||||||
|
device_driver ? "DEVICEEND" : "",
|
||||||
|
(flag & SS) ? "EXESTACK" : "",
|
||||||
|
(flag & SP) ? "EXESTASP" : "",
|
||||||
|
(flag & USEJUMP) ? "EXEJUMPF" : "",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (!(flag & USEJUMP))
|
||||||
|
addLoader(ih.cs ? "EXERCSPO" : "",
|
||||||
|
"EXERETIP",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
linker->defineSymbol("original_cs", ih.cs);
|
||||||
|
linker->defineSymbol("original_ip", ih.ip);
|
||||||
|
linker->defineSymbol("original_sp", ih.sp);
|
||||||
|
linker->defineSymbol("original_ss", ih.ss);
|
||||||
|
linker->defineSymbol("reloc_size",
|
||||||
|
(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff)
|
||||||
|
>= relocsize ? 0 : MAXRELOCS) - relocsize);
|
||||||
|
}
|
||||||
|
|
||||||
void PackExe::buildLoader(const Filter *)
|
void PackExe::buildLoader(const Filter *)
|
||||||
{
|
{
|
||||||
struct exe_header_t tmp_oh;
|
exe_header_t tmp_oh;
|
||||||
int flag = fillExeHeader(&tmp_oh);
|
int flag = fillExeHeader(&tmp_oh);
|
||||||
|
|
||||||
// prepare loader
|
|
||||||
initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe));
|
initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe));
|
||||||
if (device_driver)
|
|
||||||
addLoader("DEVICEENTRY", NULL);
|
if (ph.method == M_LZMA)
|
||||||
|
{
|
||||||
|
addLoader("LZMA_DEC00,LZMA_DEC10,LZMA_DEC99,LZMA_DEC30",
|
||||||
|
ph.u_len > 0xffff ? "LZMA_DEC31" : "",
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
addLoaderEpilogue(flag);
|
||||||
|
defineDecompressorSymbols();
|
||||||
|
relocateLoader();
|
||||||
|
const unsigned lsize = getLoaderSize();
|
||||||
|
MemBuffer loader(lsize);
|
||||||
|
memcpy(loader, getLoader(), lsize);
|
||||||
|
|
||||||
|
MemBuffer compressed_lzma;
|
||||||
|
compressed_lzma.allocForCompression(lsize);
|
||||||
|
unsigned c_len_lzma = MemBuffer::getSizeForCompression(lsize);
|
||||||
|
upx_compress(loader, lsize, compressed_lzma, &c_len_lzma,
|
||||||
|
NULL, M_NRV2B_LE16, 9, NULL, NULL);
|
||||||
|
|
||||||
|
info("lzma+relocator code compressed: %u -> %u", lsize, c_len_lzma);
|
||||||
|
// reinit the loader
|
||||||
|
initLoader(stub_i086_dos16_exe, sizeof(stub_i086_dos16_exe));
|
||||||
|
// prepare loader
|
||||||
|
if (device_driver)
|
||||||
|
addLoader("DEVICEENTRY,LZMADEVICE,DEVICEENTRY2", NULL);
|
||||||
|
|
||||||
|
linker->addSection("COMPRESSED_LZMA", compressed_lzma, c_len_lzma, 0);
|
||||||
|
addLoader("LZMAENTRY,NRV2B160,NRVDDONE,NRVDECO1,NRVGTD00,NRVDECO2",
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
else if (device_driver)
|
||||||
|
addLoader("DEVICEENTRY,DEVICEENTRY2", NULL);
|
||||||
|
|
||||||
addLoader("EXEENTRY",
|
addLoader("EXEENTRY",
|
||||||
device_driver ? "DEVICESUB" : "EXESUB",
|
ph.method == M_LZMA && device_driver ? "LONGSUB" : "SHORTSUB",
|
||||||
"JNCDOCOPY",
|
"JNCDOCOPY",
|
||||||
relocsize ? "EXERELPU" : "",
|
relocsize ? "EXERELPU" : "",
|
||||||
"EXEMAIN4,+G5DXXXX,UPX1HEAD,EXECUTPO",
|
"EXEMAIN4",
|
||||||
|
ph.method == M_LZMA ? "COMPRESSED_LZMA_START,COMPRESSED_LZMA" : "",
|
||||||
|
"+G5DXXXX,UPX1HEAD,EXECUTPO",
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
if (ph.method == M_NRV2B_8)
|
if (ph.method == M_NRV2B_8)
|
||||||
@@ -182,34 +248,11 @@ void PackExe::buildLoader(const Filter *)
|
|||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
else if M_IS_LZMA(ph.method)
|
else if M_IS_LZMA(ph.method)
|
||||||
addLoader("LZMA_DEC00,LZMA_DEC10,LZMA_DEC99,LZMA_DEC30",
|
return;
|
||||||
ph.u_len > 0xffff ? "LZMA_DEC31" : "",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
else
|
else
|
||||||
throwInternalError("unknown compression method");
|
throwInternalError("unknown compression method");
|
||||||
addLoader("EXEMAIN5", NULL);
|
|
||||||
if (relocsize)
|
addLoaderEpilogue(flag);
|
||||||
addLoader(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff) >= relocsize ? "EXENOADJ" : "EXEADJUS",
|
|
||||||
"EXERELO1",
|
|
||||||
has_9a ? "EXEREL9A" : "",
|
|
||||||
"EXERELO2",
|
|
||||||
ih_exesize > 0xFE00 ? "EXEREBIG" : "",
|
|
||||||
"EXERELO3",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
addLoader("EXEMAIN8",
|
|
||||||
device_driver ? "DEVICEEND" : "",
|
|
||||||
(flag & SS) ? "EXESTACK" : "",
|
|
||||||
(flag & SP) ? "EXESTASP" : "",
|
|
||||||
(flag & USEJUMP) ? "EXEJUMPF" : "",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
if (!(flag & USEJUMP))
|
|
||||||
addLoader(ih.cs ? "EXERCSPO" : "",
|
|
||||||
"EXERETIP",
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -521,18 +564,11 @@ void PackExe::pack(OutputFile *fo)
|
|||||||
}
|
}
|
||||||
extra_info[eisize++] = (unsigned char) flag;
|
extra_info[eisize++] = (unsigned char) flag;
|
||||||
|
|
||||||
linker->defineSymbol("original_cs", ih.cs);
|
|
||||||
linker->defineSymbol("original_ip", ih.ip);
|
|
||||||
linker->defineSymbol("original_sp", ih.sp);
|
|
||||||
linker->defineSymbol("original_ss", ih.ss);
|
|
||||||
linker->defineSymbol("reloc_size",
|
|
||||||
(ph.u_len <= DI_LIMIT || (ph.u_len & 0x7fff)
|
|
||||||
>= relocsize ? 0 : MAXRELOCS) - relocsize);
|
|
||||||
linker->defineSymbol("bx_magic", 0x7FFF + 0x10 * ((packedsize & 15) + 1));
|
linker->defineSymbol("bx_magic", 0x7FFF + 0x10 * ((packedsize & 15) + 1));
|
||||||
|
|
||||||
unsigned decompressor_entry = packedsize & 15;
|
unsigned decompressor_entry = 1 + (packedsize & 15);
|
||||||
if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
|
if (M_IS_LZMA(ph.method))
|
||||||
decompressor_entry++;
|
decompressor_entry = 0x10;
|
||||||
linker->defineSymbol("decompressor_entry", decompressor_entry);
|
linker->defineSymbol("decompressor_entry", decompressor_entry);
|
||||||
|
|
||||||
// patch loader
|
// patch loader
|
||||||
@@ -569,7 +605,8 @@ void PackExe::pack(OutputFile *fo)
|
|||||||
oh.m512 = outputlen & 511;
|
oh.m512 = outputlen & 511;
|
||||||
oh.p512 = (outputlen + 511) >> 9;
|
oh.p512 = (outputlen + 511) >> 9;
|
||||||
|
|
||||||
oh.ip = device_driver ? getLoaderSection("EXEENTRY") - 2 : 0;
|
const char *exeentry = ph.method == M_LZMA ? "LZMAENTRY" : "EXEENTRY";
|
||||||
|
oh.ip = device_driver ? getLoaderSection(exeentry) - 2 : 0;
|
||||||
|
|
||||||
defineDecompressorSymbols();
|
defineDecompressorSymbols();
|
||||||
relocateLoader();
|
relocateLoader();
|
||||||
@@ -620,7 +657,7 @@ int PackExe::canUnpack()
|
|||||||
return false;
|
return false;
|
||||||
const off_t off = ih.headsize16 * 16;
|
const off_t off = ih.headsize16 * 16;
|
||||||
fi->seek(off, SEEK_SET);
|
fi->seek(off, SEEK_SET);
|
||||||
bool b = readPackHeader(256);
|
bool b = readPackHeader(4096);
|
||||||
return b && (off + (off_t) ph.c_len <= file_size);
|
return b && (off + (off_t) ph.c_len <= file_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -789,6 +826,33 @@ CS:exe_as_device_entry in normal mode. the code in section DEVICEENTRY
|
|||||||
sets up the same environment for section EXEENTRY, as it would see in normal
|
sets up the same environment for section EXEENTRY, as it would see in normal
|
||||||
execution mode.
|
execution mode.
|
||||||
|
|
||||||
|
lzma uncompression for normal exes
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
(n - nrv2b uncompressor, l - nrv2b compressed lzma + relocator code)
|
||||||
|
|
||||||
|
a, at load time
|
||||||
|
|
||||||
|
nneelllCCCCCCCCCCCCCCCCCCCCCCCCC
|
||||||
|
|
||||||
|
^ CS:0 ^ SS:0
|
||||||
|
|
||||||
|
b, after nrv2b
|
||||||
|
|
||||||
|
nneelllCCCCCCCCCCCCCCCCCCCCCCCCC dddd
|
||||||
|
^ CS:0 ^ SS:0x10
|
||||||
|
|
||||||
|
after this, normal ee code runs
|
||||||
|
|
||||||
|
lzma + device driver
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
(D - device driver adapter)
|
||||||
|
|
||||||
|
a, at load time
|
||||||
|
|
||||||
|
DDnneelllCCCCCCCCCCCCCCCCCCCCCCCCC
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ protected:
|
|||||||
virtual int fillExeHeader(struct exe_header_t *) const;
|
virtual int fillExeHeader(struct exe_header_t *) const;
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft);
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const;
|
||||||
|
void addLoaderEpilogue(int flag);
|
||||||
|
|
||||||
struct exe_header_t
|
struct exe_header_t
|
||||||
{
|
{
|
||||||
|
|||||||
+1857
-1537
File diff suppressed because it is too large
Load Diff
@@ -37,6 +37,10 @@
|
|||||||
; bp - -1
|
; bp - -1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef COPY_MATCH
|
||||||
|
# define COPY_MATCH rep movsb
|
||||||
|
#endif
|
||||||
|
|
||||||
section NRV2B160
|
section NRV2B160
|
||||||
literal_n2b:
|
literal_n2b:
|
||||||
movsb
|
movsb
|
||||||
@@ -79,8 +83,7 @@ section NRVGTD00
|
|||||||
section NRVDECO2
|
section NRVDECO2
|
||||||
lea ax, [bp+di]
|
lea ax, [bp+di]
|
||||||
xchg ax, si
|
xchg ax, si
|
||||||
rep
|
COPY_MATCH
|
||||||
movsb
|
|
||||||
xchg ax, si
|
xchg ax, si
|
||||||
jmps decomp_start_n2b
|
jmps decomp_start_n2b
|
||||||
getbit_cx_n2b:
|
getbit_cx_n2b:
|
||||||
|
|||||||
@@ -59,15 +59,40 @@ strategy:
|
|||||||
push bp
|
push bp
|
||||||
push ds
|
push ds
|
||||||
push es
|
push es
|
||||||
|
|
||||||
|
section LZMADEVICE
|
||||||
|
sub ax, offset exe_stack_ss + 0x10
|
||||||
|
mov ds, ax /* ds = cs - 0x10 */
|
||||||
|
|
||||||
|
section DEVICEENTRY2
|
||||||
.byte 0x72 /* "jc 0xf9" but flag C is 0 => nop */
|
.byte 0x72 /* "jc 0xf9" but flag C is 0 => nop */
|
||||||
exe_as_device_entry:
|
exe_as_device_entry:
|
||||||
stc /* flag C is 1 */
|
stc /* flag C is 1 */
|
||||||
pushf
|
pushf
|
||||||
|
|
||||||
|
/* ============= */
|
||||||
|
section LZMAENTRY
|
||||||
|
push ss
|
||||||
|
pop es
|
||||||
|
mov bx, 0x8000
|
||||||
|
xor cx, cx
|
||||||
|
mov si, offset COMPRESSED_LZMA_START + 0x100 /* ds = cs - 0x10 */
|
||||||
|
mov di, 0x10
|
||||||
|
mov bp, -1
|
||||||
|
.byte 0xa8 /* skips the following "movsb" */
|
||||||
|
|
||||||
|
#define COPY_MATCH .byte 0x26; rep movsb
|
||||||
|
#include "arch/i086/nrv2b_d16.S" /* for uncompressing lzma */
|
||||||
|
|
||||||
|
#define literal_n2b literal_n2b_
|
||||||
|
#define copy_match_n2b copy_match_n2b_
|
||||||
|
#define getbit_cx_n2b getbit_cx_n2b_
|
||||||
|
#define getbit_n2b getbit_n2b_
|
||||||
|
#define decomp_done_n2b decomp_done_n2b_
|
||||||
|
|
||||||
/* ============= */
|
/* ============= */
|
||||||
|
|
||||||
section EXEENTRY
|
section EXEENTRY
|
||||||
exe_entry:
|
|
||||||
mov cx, offset words_to_copy
|
mov cx, offset words_to_copy
|
||||||
mov si, offset copy_offset
|
mov si, offset copy_offset
|
||||||
mov di, si
|
mov di, si
|
||||||
@@ -86,11 +111,10 @@ addaxds:
|
|||||||
rep
|
rep
|
||||||
movsw
|
movsw
|
||||||
cld
|
cld
|
||||||
section DEVICESUB
|
section LONGSUB
|
||||||
/* subb [cs:si + addaxds + 4], 0x10 */
|
subb [cs:si + addaxds + 4], 0x10
|
||||||
|
section SHORTSUB
|
||||||
.byte 0x2e, 0x80, 0x6c, addaxds + 4, 0x10
|
.byte 0x2e, 0x80, 0x6c, addaxds + 4, 0x10
|
||||||
section EXESUB
|
|
||||||
subb [cs:si + addaxds - exe_entry + 4], 0x10
|
|
||||||
section JNCDOCOPY
|
section JNCDOCOPY
|
||||||
jncs do_copy
|
jncs do_copy
|
||||||
xchg ax, dx
|
xchg ax, dx
|
||||||
@@ -110,6 +134,8 @@ section EXEMAIN4
|
|||||||
push bp
|
push bp
|
||||||
lret
|
lret
|
||||||
|
|
||||||
|
section COMPRESSED_LZMA_START
|
||||||
|
|
||||||
#include "include/header.S"
|
#include "include/header.S"
|
||||||
|
|
||||||
section EXECUTPO
|
section EXECUTPO
|
||||||
|
|||||||
@@ -2,72 +2,103 @@ tmp/i086-dos16.exe.bin: file format elf32-i386
|
|||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn Flags
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
0 DEVICEENTRY 00000030 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
0 DEVICEENTRY 0000002d 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||||
1 EXEENTRY 0000001c 00000000 00000000 00000064 2**0 CONTENTS, RELOC, READONLY
|
1 LZMADEVICE 00000005 00000000 00000000 00000061 2**0 CONTENTS, RELOC, READONLY
|
||||||
2 DEVICESUB 00000005 00000000 00000000 00000080 2**0 CONTENTS, RELOC, READONLY
|
2 DEVICEENTRY2 00000003 00000000 00000000 00000066 2**0 CONTENTS, READONLY
|
||||||
3 EXESUB 00000005 00000000 00000000 00000085 2**0 CONTENTS, READONLY
|
3 LZMAENTRY 00000011 00000000 00000000 00000069 2**0 CONTENTS, RELOC, READONLY
|
||||||
4 JNCDOCOPY 00000005 00000000 00000000 0000008a 2**0 CONTENTS, RELOC, READONLY
|
4 NRV2B160 0000000a 00000000 00000000 0000007a 2**0 CONTENTS, RELOC, READONLY
|
||||||
5 EXERELPU 00000001 00000000 00000000 0000008f 2**0 CONTENTS, READONLY
|
5 NRVDDONE 00000002 00000000 00000000 00000084 2**0 CONTENTS, RELOC, READONLY
|
||||||
6 EXEMAIN4 0000000e 00000000 00000000 00000090 2**0 CONTENTS, RELOC, READONLY
|
6 NRVDRETU 00000002 00000000 00000000 00000086 2**0 CONTENTS, RELOC, READONLY
|
||||||
7 UPX1HEAD 0000001b 00000000 00000000 0000009e 2**0 CONTENTS, READONLY
|
7 NRVDECO1 0000001e 00000000 00000000 00000088 2**0 CONTENTS, RELOC, READONLY
|
||||||
8 EXECUTPO 00000000 00000000 00000000 000000b9 2**0 CONTENTS, READONLY
|
8 NRVLED00 00000001 00000000 00000000 000000a6 2**0 CONTENTS, READONLY
|
||||||
9 NRV2B16S 0000000d 00000000 00000000 000000b9 2**0 CONTENTS, RELOC, READONLY
|
9 NRVGTD00 00000007 00000000 00000000 000000a7 2**0 CONTENTS, READONLY
|
||||||
10 N2B64K01 0000000b 00000000 00000000 000000c6 2**0 CONTENTS, READONLY
|
10 NRVDECO2 00000017 00000000 00000000 000000ae 2**0 CONTENTS, RELOC, READONLY
|
||||||
11 NRV2BEX1 0000000b 00000000 00000000 000000d1 2**0 CONTENTS, RELOC, READONLY
|
11 CALLTR16 0000000b 00000000 00000000 000000c5 2**0 CONTENTS, RELOC, READONLY
|
||||||
12 N2BX8601 00000008 00000000 00000000 000000dc 2**0 CONTENTS, READONLY
|
12 CT16I286 00000003 00000000 00000000 000000d0 2**0 CONTENTS, READONLY
|
||||||
13 N2B28601 00000003 00000000 00000000 000000e4 2**0 CONTENTS, READONLY
|
13 CT16SUB0 00000002 00000000 00000000 000000d3 2**0 CONTENTS, READONLY
|
||||||
14 NRV2BEX2 00000031 00000000 00000000 000000e7 2**0 CONTENTS, RELOC, READONLY
|
14 CT16I086 00000008 00000000 00000000 000000d5 2**0 CONTENTS, READONLY
|
||||||
15 N2BX8602 0000000e 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
15 CALLTRI2 00000003 00000000 00000000 000000dd 2**0 CONTENTS, RELOC, READONLY
|
||||||
16 N2B28602 00000006 00000000 00000000 00000126 2**0 CONTENTS, READONLY
|
16 CT16E800 00000002 00000000 00000000 000000e0 2**0 CONTENTS, READONLY
|
||||||
17 NRV2BEX3 00000015 00000000 00000000 0000012c 2**0 CONTENTS, RELOC, READONLY
|
17 CT16E900 00000002 00000000 00000000 000000e2 2**0 CONTENTS, READONLY
|
||||||
18 N2B64K02 0000000b 00000000 00000000 00000141 2**0 CONTENTS, READONLY
|
18 CALLTRI5 00000006 00000000 00000000 000000e4 2**0 CONTENTS, RELOC, READONLY
|
||||||
19 NRV2BEX9 00000004 00000000 00000000 0000014c 2**0 CONTENTS, READONLY
|
19 CT16JEND 00000002 00000000 00000000 000000ea 2**0 CONTENTS, RELOC, READONLY
|
||||||
20 NRV2D16S 0000000d 00000000 00000000 00000150 2**0 CONTENTS, RELOC, READONLY
|
20 CT16JUL2 00000002 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
|
||||||
21 N2D64K01 0000000b 00000000 00000000 0000015d 2**0 CONTENTS, READONLY
|
21 CT16I287 00000003 00000000 00000000 000000ee 2**0 CONTENTS, READONLY
|
||||||
22 NRV2DEX1 00000013 00000000 00000000 00000168 2**0 CONTENTS, RELOC, READONLY
|
22 CT16SUB1 00000002 00000000 00000000 000000f1 2**0 CONTENTS, READONLY
|
||||||
23 N2DX8601 00000006 00000000 00000000 0000017b 2**0 CONTENTS, READONLY
|
23 CT16I087 00000008 00000000 00000000 000000f3 2**0 CONTENTS, READONLY
|
||||||
24 N2D28601 00000003 00000000 00000000 00000181 2**0 CONTENTS, READONLY
|
24 CALLTRI6 00000003 00000000 00000000 000000fb 2**0 CONTENTS, RELOC, READONLY
|
||||||
25 NRV2DEX2 00000039 00000000 00000000 00000184 2**0 CONTENTS, RELOC, READONLY
|
25 EXEENTRY 0000001c 00000000 00000000 000000fe 2**0 CONTENTS, RELOC, READONLY
|
||||||
26 N2DX8602 0000000e 00000000 00000000 000001bd 2**0 CONTENTS, READONLY
|
26 LONGSUB 00000006 00000000 00000000 0000011a 2**0 CONTENTS, RELOC, READONLY
|
||||||
27 N2D28602 00000006 00000000 00000000 000001cb 2**0 CONTENTS, READONLY
|
27 SHORTSUB 00000005 00000000 00000000 00000120 2**0 CONTENTS, RELOC, READONLY
|
||||||
28 NRV2DEX3 00000015 00000000 00000000 000001d1 2**0 CONTENTS, RELOC, READONLY
|
28 JNCDOCOPY 00000005 00000000 00000000 00000125 2**0 CONTENTS, RELOC, READONLY
|
||||||
29 N2D64K02 0000000b 00000000 00000000 000001e6 2**0 CONTENTS, READONLY
|
29 EXERELPU 00000001 00000000 00000000 0000012a 2**0 CONTENTS, READONLY
|
||||||
30 NRV2DEX9 00000004 00000000 00000000 000001f1 2**0 CONTENTS, READONLY
|
30 EXEMAIN4 0000000e 00000000 00000000 0000012b 2**0 CONTENTS, RELOC, READONLY
|
||||||
31 NRV2E16S 0000000d 00000000 00000000 000001f5 2**0 CONTENTS, RELOC, READONLY
|
31 COMPRESSED_LZMA_START 00000000 00000000 00000000 00000139 2**0 CONTENTS, READONLY
|
||||||
32 N2E64K01 0000000b 00000000 00000000 00000202 2**0 CONTENTS, READONLY
|
32 UPX1HEAD 0000001b 00000000 00000000 00000139 2**0 CONTENTS, READONLY
|
||||||
33 NRV2EEX1 00000013 00000000 00000000 0000020d 2**0 CONTENTS, RELOC, READONLY
|
33 EXECUTPO 00000000 00000000 00000000 00000154 2**0 CONTENTS, READONLY
|
||||||
34 N2EX8601 00000006 00000000 00000000 00000220 2**0 CONTENTS, READONLY
|
34 NRV2B16S 0000000d 00000000 00000000 00000154 2**0 CONTENTS, RELOC, READONLY
|
||||||
35 N2E28601 00000003 00000000 00000000 00000226 2**0 CONTENTS, READONLY
|
35 N2B64K01 0000000b 00000000 00000000 00000161 2**0 CONTENTS, READONLY
|
||||||
36 NRV2EEX2 0000003e 00000000 00000000 00000229 2**0 CONTENTS, RELOC, READONLY
|
36 NRV2BEX1 0000000b 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
|
||||||
37 N2EX8602 0000000e 00000000 00000000 00000267 2**0 CONTENTS, READONLY
|
37 N2BX8601 00000008 00000000 00000000 00000177 2**0 CONTENTS, READONLY
|
||||||
38 N2E28602 00000006 00000000 00000000 00000275 2**0 CONTENTS, READONLY
|
38 N2B28601 00000003 00000000 00000000 0000017f 2**0 CONTENTS, READONLY
|
||||||
39 NRV2EEX3 00000015 00000000 00000000 0000027b 2**0 CONTENTS, RELOC, READONLY
|
39 NRV2BEX2 00000031 00000000 00000000 00000182 2**0 CONTENTS, RELOC, READONLY
|
||||||
40 N2E64K02 0000000b 00000000 00000000 00000290 2**0 CONTENTS, READONLY
|
40 N2BX8602 0000000e 00000000 00000000 000001b3 2**0 CONTENTS, READONLY
|
||||||
41 NRV2EEX9 00000004 00000000 00000000 0000029b 2**0 CONTENTS, READONLY
|
41 N2B28602 00000006 00000000 00000000 000001c1 2**0 CONTENTS, READONLY
|
||||||
42 LZMA_DEC99 00000000 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
|
42 NRV2BEX3 00000015 00000000 00000000 000001c7 2**0 CONTENTS, RELOC, READONLY
|
||||||
43 LZMA_DEC00 0000003b 00000000 00000000 0000029f 2**0 CONTENTS, RELOC, READONLY
|
43 N2B64K02 0000000b 00000000 00000000 000001dc 2**0 CONTENTS, READONLY
|
||||||
44 ignore_reloc_overflow 00000008 00000000 00000000 000002da 2**0 CONTENTS, RELOC, READONLY
|
44 NRV2BEX9 00000004 00000000 00000000 000001e7 2**0 CONTENTS, READONLY
|
||||||
45 LZMA_DEC10 000011a4 00000000 00000000 000002e2 2**0 CONTENTS, READONLY
|
45 NRV2D16S 0000000d 00000000 00000000 000001eb 2**0 CONTENTS, RELOC, READONLY
|
||||||
46 LZMA_DEC20 000011a4 00000000 00000000 00001486 2**0 CONTENTS, READONLY
|
46 N2D64K01 0000000b 00000000 00000000 000001f8 2**0 CONTENTS, READONLY
|
||||||
47 LZMA_DEC30 00000006 00000000 00000000 0000262a 2**0 CONTENTS, RELOC, READONLY
|
47 NRV2DEX1 00000013 00000000 00000000 00000203 2**0 CONTENTS, RELOC, READONLY
|
||||||
48 LZMA_DEC31 00000007 00000000 00000000 00002630 2**0 CONTENTS, RELOC, READONLY
|
48 N2DX8601 00000006 00000000 00000000 00000216 2**0 CONTENTS, READONLY
|
||||||
49 EXEMAIN5 00000001 00000000 00000000 00002637 2**0 CONTENTS, READONLY
|
49 N2D28601 00000003 00000000 00000000 0000021c 2**0 CONTENTS, READONLY
|
||||||
50 EXEADJUS 00000007 00000000 00000000 00002638 2**0 CONTENTS, READONLY
|
50 NRV2DEX2 00000039 00000000 00000000 0000021f 2**0 CONTENTS, RELOC, READONLY
|
||||||
51 EXENOADJ 00000002 00000000 00000000 0000263f 2**0 CONTENTS, READONLY
|
51 N2DX8602 0000000e 00000000 00000000 00000258 2**0 CONTENTS, READONLY
|
||||||
52 EXERELO1 0000001e 00000000 00000000 00002641 2**0 CONTENTS, RELOC, READONLY
|
52 N2D28602 00000006 00000000 00000000 00000266 2**0 CONTENTS, READONLY
|
||||||
53 EXEREL9A 00000012 00000000 00000000 0000265f 2**0 CONTENTS, RELOC, READONLY
|
53 NRV2DEX3 00000015 00000000 00000000 0000026c 2**0 CONTENTS, RELOC, READONLY
|
||||||
54 EXERELO2 00000004 00000000 00000000 00002671 2**0 CONTENTS, READONLY
|
54 N2D64K02 0000000b 00000000 00000000 00000281 2**0 CONTENTS, READONLY
|
||||||
55 EXEREBIG 00000002 00000000 00000000 00002675 2**0 CONTENTS, RELOC, READONLY
|
55 NRV2DEX9 00000004 00000000 00000000 0000028c 2**0 CONTENTS, READONLY
|
||||||
56 EXERELO3 00000002 00000000 00000000 00002677 2**0 CONTENTS, RELOC, READONLY
|
56 NRV2E16S 0000000d 00000000 00000000 00000290 2**0 CONTENTS, RELOC, READONLY
|
||||||
57 EXEMAIN8 00000003 00000000 00000000 00002679 2**0 CONTENTS, READONLY
|
57 N2E64K01 0000000b 00000000 00000000 0000029d 2**0 CONTENTS, READONLY
|
||||||
58 DEVICEEND 00000013 00000000 00000000 0000267c 2**0 CONTENTS, READONLY
|
58 NRV2EEX1 00000013 00000000 00000000 000002a8 2**0 CONTENTS, RELOC, READONLY
|
||||||
59 EXESTACK 00000006 00000000 00000000 0000268f 2**0 CONTENTS, RELOC, READONLY
|
59 N2EX8601 00000006 00000000 00000000 000002bb 2**0 CONTENTS, READONLY
|
||||||
60 EXESTASP 00000003 00000000 00000000 00002695 2**0 CONTENTS, RELOC, READONLY
|
60 N2E28601 00000003 00000000 00000000 000002c1 2**0 CONTENTS, READONLY
|
||||||
61 EXEJUMPF 00000005 00000000 00000000 00002698 2**0 CONTENTS, RELOC, READONLY
|
61 NRV2EEX2 0000003e 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY
|
||||||
62 EXERCSPO 00000004 00000000 00000000 0000269d 2**0 CONTENTS, RELOC, READONLY
|
62 N2EX8602 0000000e 00000000 00000000 00000302 2**0 CONTENTS, READONLY
|
||||||
63 EXERETIP 00000006 00000000 00000000 000026a1 2**0 CONTENTS, RELOC, READONLY
|
63 N2E28602 00000006 00000000 00000000 00000310 2**0 CONTENTS, READONLY
|
||||||
|
64 NRV2EEX3 00000015 00000000 00000000 00000316 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
65 N2E64K02 0000000b 00000000 00000000 0000032b 2**0 CONTENTS, READONLY
|
||||||
|
66 NRV2EEX9 00000004 00000000 00000000 00000336 2**0 CONTENTS, READONLY
|
||||||
|
67 LZMA_DEC99 00000000 00000000 00000000 0000033a 2**0 CONTENTS, READONLY
|
||||||
|
68 LZMA_DEC00 0000003b 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
69 ignore_reloc_overflow 00000008 00000000 00000000 00000375 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
70 LZMA_DEC10 000011a4 00000000 00000000 0000037d 2**0 CONTENTS, READONLY
|
||||||
|
71 LZMA_DEC20 000011a4 00000000 00000000 00001521 2**0 CONTENTS, READONLY
|
||||||
|
72 LZMA_DEC30 00000006 00000000 00000000 000026c5 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
73 LZMA_DEC31 00000007 00000000 00000000 000026cb 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
74 EXEMAIN5 00000001 00000000 00000000 000026d2 2**0 CONTENTS, READONLY
|
||||||
|
75 EXEADJUS 00000007 00000000 00000000 000026d3 2**0 CONTENTS, READONLY
|
||||||
|
76 EXENOADJ 00000002 00000000 00000000 000026da 2**0 CONTENTS, READONLY
|
||||||
|
77 EXERELO1 0000001e 00000000 00000000 000026dc 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
78 EXEREL9A 00000012 00000000 00000000 000026fa 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
79 EXERELO2 00000004 00000000 00000000 0000270c 2**0 CONTENTS, READONLY
|
||||||
|
80 EXEREBIG 00000002 00000000 00000000 00002710 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
81 EXERELO3 00000002 00000000 00000000 00002712 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
82 EXEMAIN8 00000003 00000000 00000000 00002714 2**0 CONTENTS, READONLY
|
||||||
|
83 DEVICEEND 00000013 00000000 00000000 00002717 2**0 CONTENTS, READONLY
|
||||||
|
84 EXESTACK 00000006 00000000 00000000 0000272a 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
85 EXESTASP 00000003 00000000 00000000 00002730 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
86 EXEJUMPF 00000005 00000000 00000000 00002733 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
87 EXERCSPO 00000004 00000000 00000000 00002738 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
88 EXERETIP 00000006 00000000 00000000 0000273c 2**0 CONTENTS, RELOC, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
||||||
|
00000000 l d COMPRESSED_LZMA_START 00000000 COMPRESSED_LZMA_START
|
||||||
|
00000000 l d NRV2B160 00000000 NRV2B160
|
||||||
|
00000000 l d NRVDECO2 00000000 NRVDECO2
|
||||||
|
00000000 l d CALLTR16 00000000 CALLTR16
|
||||||
|
00000000 l d CALLTRI5 00000000 CALLTRI5
|
||||||
|
00000000 l d CALLTRI6 00000000 CALLTRI6
|
||||||
00000000 l d EXEENTRY 00000000 EXEENTRY
|
00000000 l d EXEENTRY 00000000 EXEENTRY
|
||||||
00000000 l d NRV2B16S 00000000 NRV2B16S
|
00000000 l d NRV2B16S 00000000 NRV2B16S
|
||||||
00000000 l d NRV2BEX2 00000000 NRV2BEX2
|
00000000 l d NRV2BEX2 00000000 NRV2BEX2
|
||||||
@@ -86,8 +117,27 @@ SYMBOL TABLE:
|
|||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d EXERELO1 00000000 EXERELO1
|
00000000 l d EXERELO1 00000000 EXERELO1
|
||||||
00000000 l d EXERELO2 00000000 EXERELO2
|
00000000 l d EXERELO2 00000000 EXERELO2
|
||||||
00000000 l d DEVICESUB 00000000 DEVICESUB
|
00000000 l d LZMADEVICE 00000000 LZMADEVICE
|
||||||
00000000 l d EXESUB 00000000 EXESUB
|
00000000 l d DEVICEENTRY2 00000000 DEVICEENTRY2
|
||||||
|
00000000 l d LZMAENTRY 00000000 LZMAENTRY
|
||||||
|
00000000 l d NRVDDONE 00000000 NRVDDONE
|
||||||
|
00000000 l d NRVDRETU 00000000 NRVDRETU
|
||||||
|
00000000 l d NRVDECO1 00000000 NRVDECO1
|
||||||
|
00000000 l d NRVLED00 00000000 NRVLED00
|
||||||
|
00000000 l d NRVGTD00 00000000 NRVGTD00
|
||||||
|
00000000 l d CT16I286 00000000 CT16I286
|
||||||
|
00000000 l d CT16SUB0 00000000 CT16SUB0
|
||||||
|
00000000 l d CT16I086 00000000 CT16I086
|
||||||
|
00000000 l d CALLTRI2 00000000 CALLTRI2
|
||||||
|
00000000 l d CT16E800 00000000 CT16E800
|
||||||
|
00000000 l d CT16E900 00000000 CT16E900
|
||||||
|
00000000 l d CT16JEND 00000000 CT16JEND
|
||||||
|
00000000 l d CT16JUL2 00000000 CT16JUL2
|
||||||
|
00000000 l d CT16I287 00000000 CT16I287
|
||||||
|
00000000 l d CT16SUB1 00000000 CT16SUB1
|
||||||
|
00000000 l d CT16I087 00000000 CT16I087
|
||||||
|
00000000 l d LONGSUB 00000000 LONGSUB
|
||||||
|
00000000 l d SHORTSUB 00000000 SHORTSUB
|
||||||
00000000 l d JNCDOCOPY 00000000 JNCDOCOPY
|
00000000 l d JNCDOCOPY 00000000 JNCDOCOPY
|
||||||
00000000 l d EXERELPU 00000000 EXERELPU
|
00000000 l d EXERELPU 00000000 EXERELPU
|
||||||
00000000 l d EXEMAIN4 00000000 EXEMAIN4
|
00000000 l d EXEMAIN4 00000000 EXEMAIN4
|
||||||
@@ -136,6 +186,7 @@ SYMBOL TABLE:
|
|||||||
00000000 *UND* 00000000 orig_strategy
|
00000000 *UND* 00000000 orig_strategy
|
||||||
00000000 *UND* 00000000 exe_stack_ss
|
00000000 *UND* 00000000 exe_stack_ss
|
||||||
00000000 *UND* 00000000 exe_stack_sp
|
00000000 *UND* 00000000 exe_stack_sp
|
||||||
|
00000000 *UND* 00000000 calltrick_calls
|
||||||
00000000 *UND* 00000000 words_to_copy
|
00000000 *UND* 00000000 words_to_copy
|
||||||
00000000 *UND* 00000000 copy_offset
|
00000000 *UND* 00000000 copy_offset
|
||||||
00000000 *UND* 00000000 source_segment
|
00000000 *UND* 00000000 source_segment
|
||||||
@@ -166,6 +217,61 @@ OFFSET TYPE VALUE
|
|||||||
00000019 R_386_16 exe_stack_ss
|
00000019 R_386_16 exe_stack_ss
|
||||||
0000001c R_386_16 exe_stack_sp
|
0000001c R_386_16 exe_stack_sp
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [LZMADEVICE]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_16 exe_stack_ss
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [LZMAENTRY]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000008 R_386_16 COMPRESSED_LZMA_START
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRV2B160]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000002 R_386_PC16 NRVDECO2
|
||||||
|
00000008 R_386_PC16 NRVDECO2
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRVDDONE]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_PC8 NRVDECO2
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRVDRETU]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_PC8 NRVDECO2
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRVDECO1]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_PC8 NRV2B160
|
||||||
|
00000010 R_386_PC16 NRVDECO2
|
||||||
|
00000018 R_386_PC16 NRVDECO2
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRVDECO2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000008 R_386_PC8 NRV2B160
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [CALLTR16]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000002 R_386_16 calltrick_calls
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [CALLTRI2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000002 R_386_PC8 CALLTR16
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [CALLTRI5]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000002 R_386_16 calltrick_calls
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [CT16JEND]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_PC8 NRVDECO2
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [CT16JUL2]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_PC8 CALLTRI6
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [CALLTRI6]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000002 R_386_PC8 CALLTRI5
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [EXEENTRY]:
|
RELOCATION RECORDS FOR [EXEENTRY]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000001 R_386_16 words_to_copy
|
00000001 R_386_16 words_to_copy
|
||||||
@@ -173,7 +279,11 @@ OFFSET TYPE VALUE
|
|||||||
0000000f R_386_16 source_segment
|
0000000f R_386_16 source_segment
|
||||||
00000014 R_386_16 destination_segment
|
00000014 R_386_16 destination_segment
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [DEVICESUB]:
|
RELOCATION RECORDS FOR [LONGSUB]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000003 R_386_16 EXEENTRY
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [SHORTSUB]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000003 R_386_8 EXEENTRY
|
00000003 R_386_8 EXEENTRY
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user