dos/exe: nrv2b compressed lzma decompressor added

This commit is contained in:
László Molnár
2007-02-23 13:34:12 +01:00
parent 12bcb09051
commit 816d882611
6 changed files with 2180 additions and 1656 deletions
+109 -45
View File
@@ -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
*/ */
+1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+5 -2
View File
@@ -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:
+31 -5
View File
@@ -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
+177 -67
View File
@@ -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