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

View File

@ -96,7 +96,7 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
#define oh (*eh)
// fill new exe header
int flag = 0;
if (!opt->dos_exe.no_reloc)
if (!opt->dos_exe.no_reloc && ph.method != M_LZMA)
flag |= USEJUMP;
if (ih.relocs == 0)
flag |= NORELOC;
@ -128,21 +128,87 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
#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 *)
{
struct exe_header_t tmp_oh;
exe_header_t tmp_oh;
int flag = fillExeHeader(&tmp_oh);
// prepare loader
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",
device_driver ? "DEVICESUB" : "EXESUB",
ph.method == M_LZMA && device_driver ? "LONGSUB" : "SHORTSUB",
"JNCDOCOPY",
relocsize ? "EXERELPU" : "",
"EXEMAIN4,+G5DXXXX,UPX1HEAD,EXECUTPO",
"EXEMAIN4",
ph.method == M_LZMA ? "COMPRESSED_LZMA_START,COMPRESSED_LZMA" : "",
"+G5DXXXX,UPX1HEAD,EXECUTPO",
NULL
);
if (ph.method == M_NRV2B_8)
@ -182,34 +248,11 @@ void PackExe::buildLoader(const Filter *)
NULL
);
else if M_IS_LZMA(ph.method)
addLoader("LZMA_DEC00,LZMA_DEC10,LZMA_DEC99,LZMA_DEC30",
ph.u_len > 0xffff ? "LZMA_DEC31" : "",
NULL
);
return;
else
throwInternalError("unknown compression method");
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
);
addLoaderEpilogue(flag);
}
@ -521,18 +564,11 @@ void PackExe::pack(OutputFile *fo)
}
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));
unsigned decompressor_entry = packedsize & 15;
if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
decompressor_entry++;
unsigned decompressor_entry = 1 + (packedsize & 15);
if (M_IS_LZMA(ph.method))
decompressor_entry = 0x10;
linker->defineSymbol("decompressor_entry", decompressor_entry);
// patch loader
@ -569,7 +605,8 @@ void PackExe::pack(OutputFile *fo)
oh.m512 = outputlen & 511;
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();
relocateLoader();
@ -620,7 +657,7 @@ int PackExe::canUnpack()
return false;
const off_t off = ih.headsize16 * 16;
fi->seek(off, SEEK_SET);
bool b = readPackHeader(256);
bool b = readPackHeader(4096);
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
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
*/

View File

@ -71,6 +71,7 @@ protected:
virtual int fillExeHeader(struct exe_header_t *) const;
virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const;
void addLoaderEpilogue(int flag);
struct exe_header_t
{

File diff suppressed because it is too large Load Diff

View File

@ -37,6 +37,10 @@
; bp - -1
*/
#ifndef COPY_MATCH
# define COPY_MATCH rep movsb
#endif
section NRV2B160
literal_n2b:
movsb
@ -79,8 +83,7 @@ section NRVGTD00
section NRVDECO2
lea ax, [bp+di]
xchg ax, si
rep
movsb
COPY_MATCH
xchg ax, si
jmps decomp_start_n2b
getbit_cx_n2b:

View File

@ -59,15 +59,40 @@ strategy:
push bp
push ds
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 */
exe_as_device_entry:
stc /* flag C is 1 */
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
exe_entry:
mov cx, offset words_to_copy
mov si, offset copy_offset
mov di, si
@ -86,11 +111,10 @@ addaxds:
rep
movsw
cld
section DEVICESUB
/* subb [cs:si + addaxds + 4], 0x10 */
section LONGSUB
subb [cs:si + addaxds + 4], 0x10
section SHORTSUB
.byte 0x2e, 0x80, 0x6c, addaxds + 4, 0x10
section EXESUB
subb [cs:si + addaxds - exe_entry + 4], 0x10
section JNCDOCOPY
jncs do_copy
xchg ax, dx
@ -110,6 +134,8 @@ section EXEMAIN4
push bp
lret
section COMPRESSED_LZMA_START
#include "include/header.S"
section EXECUTPO

View File

@ -2,72 +2,103 @@ tmp/i086-dos16.exe.bin: file format elf32-i386
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 DEVICEENTRY 00000030 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 EXEENTRY 0000001c 00000000 00000000 00000064 2**0 CONTENTS, RELOC, READONLY
2 DEVICESUB 00000005 00000000 00000000 00000080 2**0 CONTENTS, RELOC, READONLY
3 EXESUB 00000005 00000000 00000000 00000085 2**0 CONTENTS, READONLY
4 JNCDOCOPY 00000005 00000000 00000000 0000008a 2**0 CONTENTS, RELOC, READONLY
5 EXERELPU 00000001 00000000 00000000 0000008f 2**0 CONTENTS, READONLY
6 EXEMAIN4 0000000e 00000000 00000000 00000090 2**0 CONTENTS, RELOC, READONLY
7 UPX1HEAD 0000001b 00000000 00000000 0000009e 2**0 CONTENTS, READONLY
8 EXECUTPO 00000000 00000000 00000000 000000b9 2**0 CONTENTS, READONLY
9 NRV2B16S 0000000d 00000000 00000000 000000b9 2**0 CONTENTS, RELOC, READONLY
10 N2B64K01 0000000b 00000000 00000000 000000c6 2**0 CONTENTS, READONLY
11 NRV2BEX1 0000000b 00000000 00000000 000000d1 2**0 CONTENTS, RELOC, READONLY
12 N2BX8601 00000008 00000000 00000000 000000dc 2**0 CONTENTS, READONLY
13 N2B28601 00000003 00000000 00000000 000000e4 2**0 CONTENTS, READONLY
14 NRV2BEX2 00000031 00000000 00000000 000000e7 2**0 CONTENTS, RELOC, READONLY
15 N2BX8602 0000000e 00000000 00000000 00000118 2**0 CONTENTS, READONLY
16 N2B28602 00000006 00000000 00000000 00000126 2**0 CONTENTS, READONLY
17 NRV2BEX3 00000015 00000000 00000000 0000012c 2**0 CONTENTS, RELOC, READONLY
18 N2B64K02 0000000b 00000000 00000000 00000141 2**0 CONTENTS, READONLY
19 NRV2BEX9 00000004 00000000 00000000 0000014c 2**0 CONTENTS, READONLY
20 NRV2D16S 0000000d 00000000 00000000 00000150 2**0 CONTENTS, RELOC, READONLY
21 N2D64K01 0000000b 00000000 00000000 0000015d 2**0 CONTENTS, READONLY
22 NRV2DEX1 00000013 00000000 00000000 00000168 2**0 CONTENTS, RELOC, READONLY
23 N2DX8601 00000006 00000000 00000000 0000017b 2**0 CONTENTS, READONLY
24 N2D28601 00000003 00000000 00000000 00000181 2**0 CONTENTS, READONLY
25 NRV2DEX2 00000039 00000000 00000000 00000184 2**0 CONTENTS, RELOC, READONLY
26 N2DX8602 0000000e 00000000 00000000 000001bd 2**0 CONTENTS, READONLY
27 N2D28602 00000006 00000000 00000000 000001cb 2**0 CONTENTS, READONLY
28 NRV2DEX3 00000015 00000000 00000000 000001d1 2**0 CONTENTS, RELOC, READONLY
29 N2D64K02 0000000b 00000000 00000000 000001e6 2**0 CONTENTS, READONLY
30 NRV2DEX9 00000004 00000000 00000000 000001f1 2**0 CONTENTS, READONLY
31 NRV2E16S 0000000d 00000000 00000000 000001f5 2**0 CONTENTS, RELOC, READONLY
32 N2E64K01 0000000b 00000000 00000000 00000202 2**0 CONTENTS, READONLY
33 NRV2EEX1 00000013 00000000 00000000 0000020d 2**0 CONTENTS, RELOC, READONLY
34 N2EX8601 00000006 00000000 00000000 00000220 2**0 CONTENTS, READONLY
35 N2E28601 00000003 00000000 00000000 00000226 2**0 CONTENTS, READONLY
36 NRV2EEX2 0000003e 00000000 00000000 00000229 2**0 CONTENTS, RELOC, READONLY
37 N2EX8602 0000000e 00000000 00000000 00000267 2**0 CONTENTS, READONLY
38 N2E28602 00000006 00000000 00000000 00000275 2**0 CONTENTS, READONLY
39 NRV2EEX3 00000015 00000000 00000000 0000027b 2**0 CONTENTS, RELOC, READONLY
40 N2E64K02 0000000b 00000000 00000000 00000290 2**0 CONTENTS, READONLY
41 NRV2EEX9 00000004 00000000 00000000 0000029b 2**0 CONTENTS, READONLY
42 LZMA_DEC99 00000000 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
43 LZMA_DEC00 0000003b 00000000 00000000 0000029f 2**0 CONTENTS, RELOC, READONLY
44 ignore_reloc_overflow 00000008 00000000 00000000 000002da 2**0 CONTENTS, RELOC, READONLY
45 LZMA_DEC10 000011a4 00000000 00000000 000002e2 2**0 CONTENTS, READONLY
46 LZMA_DEC20 000011a4 00000000 00000000 00001486 2**0 CONTENTS, READONLY
47 LZMA_DEC30 00000006 00000000 00000000 0000262a 2**0 CONTENTS, RELOC, READONLY
48 LZMA_DEC31 00000007 00000000 00000000 00002630 2**0 CONTENTS, RELOC, READONLY
49 EXEMAIN5 00000001 00000000 00000000 00002637 2**0 CONTENTS, READONLY
50 EXEADJUS 00000007 00000000 00000000 00002638 2**0 CONTENTS, READONLY
51 EXENOADJ 00000002 00000000 00000000 0000263f 2**0 CONTENTS, READONLY
52 EXERELO1 0000001e 00000000 00000000 00002641 2**0 CONTENTS, RELOC, READONLY
53 EXEREL9A 00000012 00000000 00000000 0000265f 2**0 CONTENTS, RELOC, READONLY
54 EXERELO2 00000004 00000000 00000000 00002671 2**0 CONTENTS, READONLY
55 EXEREBIG 00000002 00000000 00000000 00002675 2**0 CONTENTS, RELOC, READONLY
56 EXERELO3 00000002 00000000 00000000 00002677 2**0 CONTENTS, RELOC, READONLY
57 EXEMAIN8 00000003 00000000 00000000 00002679 2**0 CONTENTS, READONLY
58 DEVICEEND 00000013 00000000 00000000 0000267c 2**0 CONTENTS, READONLY
59 EXESTACK 00000006 00000000 00000000 0000268f 2**0 CONTENTS, RELOC, READONLY
60 EXESTASP 00000003 00000000 00000000 00002695 2**0 CONTENTS, RELOC, READONLY
61 EXEJUMPF 00000005 00000000 00000000 00002698 2**0 CONTENTS, RELOC, READONLY
62 EXERCSPO 00000004 00000000 00000000 0000269d 2**0 CONTENTS, RELOC, READONLY
63 EXERETIP 00000006 00000000 00000000 000026a1 2**0 CONTENTS, RELOC, READONLY
0 DEVICEENTRY 0000002d 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 LZMADEVICE 00000005 00000000 00000000 00000061 2**0 CONTENTS, RELOC, READONLY
2 DEVICEENTRY2 00000003 00000000 00000000 00000066 2**0 CONTENTS, READONLY
3 LZMAENTRY 00000011 00000000 00000000 00000069 2**0 CONTENTS, RELOC, READONLY
4 NRV2B160 0000000a 00000000 00000000 0000007a 2**0 CONTENTS, RELOC, READONLY
5 NRVDDONE 00000002 00000000 00000000 00000084 2**0 CONTENTS, RELOC, READONLY
6 NRVDRETU 00000002 00000000 00000000 00000086 2**0 CONTENTS, RELOC, READONLY
7 NRVDECO1 0000001e 00000000 00000000 00000088 2**0 CONTENTS, RELOC, READONLY
8 NRVLED00 00000001 00000000 00000000 000000a6 2**0 CONTENTS, READONLY
9 NRVGTD00 00000007 00000000 00000000 000000a7 2**0 CONTENTS, READONLY
10 NRVDECO2 00000017 00000000 00000000 000000ae 2**0 CONTENTS, RELOC, READONLY
11 CALLTR16 0000000b 00000000 00000000 000000c5 2**0 CONTENTS, RELOC, READONLY
12 CT16I286 00000003 00000000 00000000 000000d0 2**0 CONTENTS, READONLY
13 CT16SUB0 00000002 00000000 00000000 000000d3 2**0 CONTENTS, READONLY
14 CT16I086 00000008 00000000 00000000 000000d5 2**0 CONTENTS, READONLY
15 CALLTRI2 00000003 00000000 00000000 000000dd 2**0 CONTENTS, RELOC, READONLY
16 CT16E800 00000002 00000000 00000000 000000e0 2**0 CONTENTS, READONLY
17 CT16E900 00000002 00000000 00000000 000000e2 2**0 CONTENTS, READONLY
18 CALLTRI5 00000006 00000000 00000000 000000e4 2**0 CONTENTS, RELOC, READONLY
19 CT16JEND 00000002 00000000 00000000 000000ea 2**0 CONTENTS, RELOC, READONLY
20 CT16JUL2 00000002 00000000 00000000 000000ec 2**0 CONTENTS, RELOC, READONLY
21 CT16I287 00000003 00000000 00000000 000000ee 2**0 CONTENTS, READONLY
22 CT16SUB1 00000002 00000000 00000000 000000f1 2**0 CONTENTS, READONLY
23 CT16I087 00000008 00000000 00000000 000000f3 2**0 CONTENTS, READONLY
24 CALLTRI6 00000003 00000000 00000000 000000fb 2**0 CONTENTS, RELOC, READONLY
25 EXEENTRY 0000001c 00000000 00000000 000000fe 2**0 CONTENTS, RELOC, READONLY
26 LONGSUB 00000006 00000000 00000000 0000011a 2**0 CONTENTS, RELOC, READONLY
27 SHORTSUB 00000005 00000000 00000000 00000120 2**0 CONTENTS, RELOC, READONLY
28 JNCDOCOPY 00000005 00000000 00000000 00000125 2**0 CONTENTS, RELOC, READONLY
29 EXERELPU 00000001 00000000 00000000 0000012a 2**0 CONTENTS, READONLY
30 EXEMAIN4 0000000e 00000000 00000000 0000012b 2**0 CONTENTS, RELOC, READONLY
31 COMPRESSED_LZMA_START 00000000 00000000 00000000 00000139 2**0 CONTENTS, READONLY
32 UPX1HEAD 0000001b 00000000 00000000 00000139 2**0 CONTENTS, READONLY
33 EXECUTPO 00000000 00000000 00000000 00000154 2**0 CONTENTS, READONLY
34 NRV2B16S 0000000d 00000000 00000000 00000154 2**0 CONTENTS, RELOC, READONLY
35 N2B64K01 0000000b 00000000 00000000 00000161 2**0 CONTENTS, READONLY
36 NRV2BEX1 0000000b 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
37 N2BX8601 00000008 00000000 00000000 00000177 2**0 CONTENTS, READONLY
38 N2B28601 00000003 00000000 00000000 0000017f 2**0 CONTENTS, READONLY
39 NRV2BEX2 00000031 00000000 00000000 00000182 2**0 CONTENTS, RELOC, READONLY
40 N2BX8602 0000000e 00000000 00000000 000001b3 2**0 CONTENTS, READONLY
41 N2B28602 00000006 00000000 00000000 000001c1 2**0 CONTENTS, READONLY
42 NRV2BEX3 00000015 00000000 00000000 000001c7 2**0 CONTENTS, RELOC, READONLY
43 N2B64K02 0000000b 00000000 00000000 000001dc 2**0 CONTENTS, READONLY
44 NRV2BEX9 00000004 00000000 00000000 000001e7 2**0 CONTENTS, READONLY
45 NRV2D16S 0000000d 00000000 00000000 000001eb 2**0 CONTENTS, RELOC, READONLY
46 N2D64K01 0000000b 00000000 00000000 000001f8 2**0 CONTENTS, READONLY
47 NRV2DEX1 00000013 00000000 00000000 00000203 2**0 CONTENTS, RELOC, READONLY
48 N2DX8601 00000006 00000000 00000000 00000216 2**0 CONTENTS, READONLY
49 N2D28601 00000003 00000000 00000000 0000021c 2**0 CONTENTS, READONLY
50 NRV2DEX2 00000039 00000000 00000000 0000021f 2**0 CONTENTS, RELOC, READONLY
51 N2DX8602 0000000e 00000000 00000000 00000258 2**0 CONTENTS, READONLY
52 N2D28602 00000006 00000000 00000000 00000266 2**0 CONTENTS, READONLY
53 NRV2DEX3 00000015 00000000 00000000 0000026c 2**0 CONTENTS, RELOC, READONLY
54 N2D64K02 0000000b 00000000 00000000 00000281 2**0 CONTENTS, READONLY
55 NRV2DEX9 00000004 00000000 00000000 0000028c 2**0 CONTENTS, READONLY
56 NRV2E16S 0000000d 00000000 00000000 00000290 2**0 CONTENTS, RELOC, READONLY
57 N2E64K01 0000000b 00000000 00000000 0000029d 2**0 CONTENTS, READONLY
58 NRV2EEX1 00000013 00000000 00000000 000002a8 2**0 CONTENTS, RELOC, READONLY
59 N2EX8601 00000006 00000000 00000000 000002bb 2**0 CONTENTS, READONLY
60 N2E28601 00000003 00000000 00000000 000002c1 2**0 CONTENTS, READONLY
61 NRV2EEX2 0000003e 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY
62 N2EX8602 0000000e 00000000 00000000 00000302 2**0 CONTENTS, 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:
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 NRV2B16S 00000000 NRV2B16S
00000000 l d NRV2BEX2 00000000 NRV2BEX2
@ -86,8 +117,27 @@ SYMBOL TABLE:
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
00000000 l d EXERELO1 00000000 EXERELO1
00000000 l d EXERELO2 00000000 EXERELO2
00000000 l d DEVICESUB 00000000 DEVICESUB
00000000 l d EXESUB 00000000 EXESUB
00000000 l d LZMADEVICE 00000000 LZMADEVICE
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 EXERELPU 00000000 EXERELPU
00000000 l d EXEMAIN4 00000000 EXEMAIN4
@ -136,6 +186,7 @@ SYMBOL TABLE:
00000000 *UND* 00000000 orig_strategy
00000000 *UND* 00000000 exe_stack_ss
00000000 *UND* 00000000 exe_stack_sp
00000000 *UND* 00000000 calltrick_calls
00000000 *UND* 00000000 words_to_copy
00000000 *UND* 00000000 copy_offset
00000000 *UND* 00000000 source_segment
@ -166,6 +217,61 @@ OFFSET TYPE VALUE
00000019 R_386_16 exe_stack_ss
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]:
OFFSET TYPE VALUE
00000001 R_386_16 words_to_copy
@ -173,7 +279,11 @@ OFFSET TYPE VALUE
0000000f R_386_16 source_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
00000003 R_386_8 EXEENTRY