1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

dos/exe: only use bx_magic when needed.

This commit is contained in:
Markus F.X.J. Oberhumer 2007-03-04 17:01:32 +01:00
parent ac457792b4
commit 3bdc805a22
4 changed files with 1092 additions and 1059 deletions

View File

@ -209,6 +209,8 @@ void PackExe::buildLoader(const Filter *)
"JNCDOCOPY", "JNCDOCOPY",
relocsize ? "EXERELPU" : "", relocsize ? "EXERELPU" : "",
"EXEMAIN4", "EXEMAIN4",
M_IS_LZMA(ph.method) ? "" : "EXEMAIN4B",
"EXEMAIN4C",
M_IS_LZMA(ph.method) ? "COMPRESSED_LZMA_START,COMPRESSED_LZMA" : "", M_IS_LZMA(ph.method) ? "COMPRESSED_LZMA_START,COMPRESSED_LZMA" : "",
"+G5DXXXX,UPX1HEAD,EXECUTPO", "+G5DXXXX,UPX1HEAD,EXECUTPO",
NULL NULL
@ -566,6 +568,7 @@ void PackExe::pack(OutputFile *fo)
} }
extra_info[eisize++] = (unsigned char) flag; extra_info[eisize++] = (unsigned char) flag;
if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
linker->defineSymbol("bx_magic", 0x7FFF + 0x10 * ((packedsize & 15) + 1)); linker->defineSymbol("bx_magic", 0x7FFF + 0x10 * ((packedsize & 15) + 1));
unsigned decompressor_entry = 1 + (packedsize & 15); unsigned decompressor_entry = 1 + (packedsize & 15);

File diff suppressed because it is too large Load Diff

View File

@ -130,7 +130,9 @@ section EXEMAIN4
pop es pop es
push ss push ss
mov bp, offset decompressor_entry mov bp, offset decompressor_entry
section EXEMAIN4B
mov bx, offset bx_magic /* 0x800F + 0x10*bp - 0x10 */ mov bx, offset bx_magic /* 0x800F + 0x10*bp - 0x10 */
section EXEMAIN4C
push bp push bp
lret lret

View File

@ -32,64 +32,66 @@ Idx Name Size VMA LMA File off Algn Flags
27 SHORTSUB 00000005 00000000 00000000 00000120 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 28 JNCDOCOPY 00000005 00000000 00000000 00000125 2**0 CONTENTS, RELOC, READONLY
29 EXERELPU 00000001 00000000 00000000 0000012a 2**0 CONTENTS, READONLY 29 EXERELPU 00000001 00000000 00000000 0000012a 2**0 CONTENTS, READONLY
30 EXEMAIN4 0000000e 00000000 00000000 0000012b 2**0 CONTENTS, RELOC, READONLY 30 EXEMAIN4 00000009 00000000 00000000 0000012b 2**0 CONTENTS, RELOC, READONLY
31 COMPRESSED_LZMA_START 00000000 00000000 00000000 00000139 2**0 CONTENTS, READONLY 31 EXEMAIN4B 00000003 00000000 00000000 00000134 2**0 CONTENTS, RELOC, READONLY
32 UPX1HEAD 0000001b 00000000 00000000 00000139 2**0 CONTENTS, READONLY 32 EXEMAIN4C 00000002 00000000 00000000 00000137 2**0 CONTENTS, READONLY
33 EXECUTPO 00000000 00000000 00000000 00000154 2**0 CONTENTS, READONLY 33 COMPRESSED_LZMA_START 00000000 00000000 00000000 00000139 2**0 CONTENTS, READONLY
34 NRV2B16S 0000000d 00000000 00000000 00000154 2**0 CONTENTS, RELOC, READONLY 34 UPX1HEAD 0000001b 00000000 00000000 00000139 2**0 CONTENTS, READONLY
35 N2B64K01 0000000b 00000000 00000000 00000161 2**0 CONTENTS, READONLY 35 EXECUTPO 00000000 00000000 00000000 00000154 2**0 CONTENTS, READONLY
36 NRV2BEX1 0000000b 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY 36 NRV2B16S 0000000d 00000000 00000000 00000154 2**0 CONTENTS, RELOC, READONLY
37 N2BX8601 00000008 00000000 00000000 00000177 2**0 CONTENTS, READONLY 37 N2B64K01 0000000b 00000000 00000000 00000161 2**0 CONTENTS, READONLY
38 N2B28601 00000003 00000000 00000000 0000017f 2**0 CONTENTS, READONLY 38 NRV2BEX1 0000000b 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
39 NRV2BEX2 00000031 00000000 00000000 00000182 2**0 CONTENTS, RELOC, READONLY 39 N2BX8601 00000008 00000000 00000000 00000177 2**0 CONTENTS, READONLY
40 N2BX8602 0000000e 00000000 00000000 000001b3 2**0 CONTENTS, READONLY 40 N2B28601 00000003 00000000 00000000 0000017f 2**0 CONTENTS, READONLY
41 N2B28602 00000006 00000000 00000000 000001c1 2**0 CONTENTS, READONLY 41 NRV2BEX2 00000031 00000000 00000000 00000182 2**0 CONTENTS, RELOC, READONLY
42 NRV2BEX3 00000015 00000000 00000000 000001c7 2**0 CONTENTS, RELOC, READONLY 42 N2BX8602 0000000e 00000000 00000000 000001b3 2**0 CONTENTS, READONLY
43 N2B64K02 0000000b 00000000 00000000 000001dc 2**0 CONTENTS, READONLY 43 N2B28602 00000006 00000000 00000000 000001c1 2**0 CONTENTS, READONLY
44 NRV2BEX9 00000004 00000000 00000000 000001e7 2**0 CONTENTS, READONLY 44 NRV2BEX3 00000015 00000000 00000000 000001c7 2**0 CONTENTS, RELOC, READONLY
45 NRV2D16S 0000000d 00000000 00000000 000001eb 2**0 CONTENTS, RELOC, READONLY 45 N2B64K02 0000000b 00000000 00000000 000001dc 2**0 CONTENTS, READONLY
46 N2D64K01 0000000b 00000000 00000000 000001f8 2**0 CONTENTS, READONLY 46 NRV2BEX9 00000004 00000000 00000000 000001e7 2**0 CONTENTS, READONLY
47 NRV2DEX1 00000013 00000000 00000000 00000203 2**0 CONTENTS, RELOC, READONLY 47 NRV2D16S 0000000d 00000000 00000000 000001eb 2**0 CONTENTS, RELOC, READONLY
48 N2DX8601 00000006 00000000 00000000 00000216 2**0 CONTENTS, READONLY 48 N2D64K01 0000000b 00000000 00000000 000001f8 2**0 CONTENTS, READONLY
49 N2D28601 00000003 00000000 00000000 0000021c 2**0 CONTENTS, READONLY 49 NRV2DEX1 00000013 00000000 00000000 00000203 2**0 CONTENTS, RELOC, READONLY
50 NRV2DEX2 00000039 00000000 00000000 0000021f 2**0 CONTENTS, RELOC, READONLY 50 N2DX8601 00000006 00000000 00000000 00000216 2**0 CONTENTS, READONLY
51 N2DX8602 0000000e 00000000 00000000 00000258 2**0 CONTENTS, READONLY 51 N2D28601 00000003 00000000 00000000 0000021c 2**0 CONTENTS, READONLY
52 N2D28602 00000006 00000000 00000000 00000266 2**0 CONTENTS, READONLY 52 NRV2DEX2 00000039 00000000 00000000 0000021f 2**0 CONTENTS, RELOC, READONLY
53 NRV2DEX3 00000015 00000000 00000000 0000026c 2**0 CONTENTS, RELOC, READONLY 53 N2DX8602 0000000e 00000000 00000000 00000258 2**0 CONTENTS, READONLY
54 N2D64K02 0000000b 00000000 00000000 00000281 2**0 CONTENTS, READONLY 54 N2D28602 00000006 00000000 00000000 00000266 2**0 CONTENTS, READONLY
55 NRV2DEX9 00000004 00000000 00000000 0000028c 2**0 CONTENTS, READONLY 55 NRV2DEX3 00000015 00000000 00000000 0000026c 2**0 CONTENTS, RELOC, READONLY
56 NRV2E16S 0000000d 00000000 00000000 00000290 2**0 CONTENTS, RELOC, READONLY 56 N2D64K02 0000000b 00000000 00000000 00000281 2**0 CONTENTS, READONLY
57 N2E64K01 0000000b 00000000 00000000 0000029d 2**0 CONTENTS, READONLY 57 NRV2DEX9 00000004 00000000 00000000 0000028c 2**0 CONTENTS, READONLY
58 NRV2EEX1 00000013 00000000 00000000 000002a8 2**0 CONTENTS, RELOC, READONLY 58 NRV2E16S 0000000d 00000000 00000000 00000290 2**0 CONTENTS, RELOC, READONLY
59 N2EX8601 00000006 00000000 00000000 000002bb 2**0 CONTENTS, READONLY 59 N2E64K01 0000000b 00000000 00000000 0000029d 2**0 CONTENTS, READONLY
60 N2E28601 00000003 00000000 00000000 000002c1 2**0 CONTENTS, READONLY 60 NRV2EEX1 00000013 00000000 00000000 000002a8 2**0 CONTENTS, RELOC, READONLY
61 NRV2EEX2 0000003e 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY 61 N2EX8601 00000006 00000000 00000000 000002bb 2**0 CONTENTS, READONLY
62 N2EX8602 0000000e 00000000 00000000 00000302 2**0 CONTENTS, READONLY 62 N2E28601 00000003 00000000 00000000 000002c1 2**0 CONTENTS, READONLY
63 N2E28602 00000006 00000000 00000000 00000310 2**0 CONTENTS, READONLY 63 NRV2EEX2 0000003e 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY
64 NRV2EEX3 00000015 00000000 00000000 00000316 2**0 CONTENTS, RELOC, READONLY 64 N2EX8602 0000000e 00000000 00000000 00000302 2**0 CONTENTS, READONLY
65 N2E64K02 0000000b 00000000 00000000 0000032b 2**0 CONTENTS, READONLY 65 N2E28602 00000006 00000000 00000000 00000310 2**0 CONTENTS, READONLY
66 NRV2EEX9 00000004 00000000 00000000 00000336 2**0 CONTENTS, READONLY 66 NRV2EEX3 00000015 00000000 00000000 00000316 2**0 CONTENTS, RELOC, READONLY
67 LZMA_DEC00 00000033 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY 67 N2E64K02 0000000b 00000000 00000000 0000032b 2**0 CONTENTS, READONLY
68 ignore_reloc_overflow 00000008 00000000 00000000 0000036d 2**0 CONTENTS, RELOC, READONLY 68 NRV2EEX9 00000004 00000000 00000000 00000336 2**0 CONTENTS, READONLY
69 LZMA_DEC10 000011a3 00000000 00000000 00000375 2**0 CONTENTS, READONLY 69 LZMA_DEC00 00000033 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY
70 LZMA_DEC20 0000123b 00000000 00000000 00001518 2**0 CONTENTS, READONLY 70 ignore_reloc_overflow 00000008 00000000 00000000 0000036d 2**0 CONTENTS, RELOC, READONLY
71 LZMA_DEC30 00000012 00000000 00000000 00002753 2**0 CONTENTS, RELOC, READONLY 71 LZMA_DEC10 000011a3 00000000 00000000 00000375 2**0 CONTENTS, READONLY
72 LZMA_DEC31 00000007 00000000 00000000 00002765 2**0 CONTENTS, RELOC, READONLY 72 LZMA_DEC20 0000123b 00000000 00000000 00001518 2**0 CONTENTS, READONLY
73 EXEMAIN5 00000001 00000000 00000000 0000276c 2**0 CONTENTS, READONLY 73 LZMA_DEC30 00000012 00000000 00000000 00002753 2**0 CONTENTS, RELOC, READONLY
74 EXEADJUS 00000007 00000000 00000000 0000276d 2**0 CONTENTS, READONLY 74 LZMA_DEC31 00000007 00000000 00000000 00002765 2**0 CONTENTS, RELOC, READONLY
75 EXENOADJ 00000002 00000000 00000000 00002774 2**0 CONTENTS, READONLY 75 EXEMAIN5 00000001 00000000 00000000 0000276c 2**0 CONTENTS, READONLY
76 EXERELO1 0000001e 00000000 00000000 00002776 2**0 CONTENTS, RELOC, READONLY 76 EXEADJUS 00000007 00000000 00000000 0000276d 2**0 CONTENTS, READONLY
77 EXEREL9A 00000012 00000000 00000000 00002794 2**0 CONTENTS, RELOC, READONLY 77 EXENOADJ 00000002 00000000 00000000 00002774 2**0 CONTENTS, READONLY
78 EXERELO2 00000004 00000000 00000000 000027a6 2**0 CONTENTS, READONLY 78 EXERELO1 0000001e 00000000 00000000 00002776 2**0 CONTENTS, RELOC, READONLY
79 EXEREBIG 00000002 00000000 00000000 000027aa 2**0 CONTENTS, RELOC, READONLY 79 EXEREL9A 00000012 00000000 00000000 00002794 2**0 CONTENTS, RELOC, READONLY
80 EXERELO3 00000002 00000000 00000000 000027ac 2**0 CONTENTS, RELOC, READONLY 80 EXERELO2 00000004 00000000 00000000 000027a6 2**0 CONTENTS, READONLY
81 EXEMAIN8 00000003 00000000 00000000 000027ae 2**0 CONTENTS, READONLY 81 EXEREBIG 00000002 00000000 00000000 000027aa 2**0 CONTENTS, RELOC, READONLY
82 DEVICEEND 00000013 00000000 00000000 000027b1 2**0 CONTENTS, READONLY 82 EXERELO3 00000002 00000000 00000000 000027ac 2**0 CONTENTS, RELOC, READONLY
83 EXESTACK 00000006 00000000 00000000 000027c4 2**0 CONTENTS, RELOC, READONLY 83 EXEMAIN8 00000003 00000000 00000000 000027ae 2**0 CONTENTS, READONLY
84 EXESTASP 00000003 00000000 00000000 000027ca 2**0 CONTENTS, RELOC, READONLY 84 DEVICEEND 00000013 00000000 00000000 000027b1 2**0 CONTENTS, READONLY
85 EXEJUMPF 00000005 00000000 00000000 000027cd 2**0 CONTENTS, RELOC, READONLY 85 EXESTACK 00000006 00000000 00000000 000027c4 2**0 CONTENTS, RELOC, READONLY
86 EXERCSPO 00000004 00000000 00000000 000027d2 2**0 CONTENTS, RELOC, READONLY 86 EXESTASP 00000003 00000000 00000000 000027ca 2**0 CONTENTS, RELOC, READONLY
87 EXERETIP 00000006 00000000 00000000 000027d6 2**0 CONTENTS, RELOC, READONLY 87 EXEJUMPF 00000005 00000000 00000000 000027cd 2**0 CONTENTS, RELOC, READONLY
88 EXERCSPO 00000004 00000000 00000000 000027d2 2**0 CONTENTS, RELOC, READONLY
89 EXERETIP 00000006 00000000 00000000 000027d6 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 COMPRESSED_LZMA_START 00000000 COMPRESSED_LZMA_START
@ -139,6 +141,8 @@ SYMBOL TABLE:
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
00000000 l d EXEMAIN4B 00000000 EXEMAIN4B
00000000 l d EXEMAIN4C 00000000 EXEMAIN4C
00000000 l d UPX1HEAD 00000000 UPX1HEAD 00000000 l d UPX1HEAD 00000000 UPX1HEAD
00000000 l d EXECUTPO 00000000 EXECUTPO 00000000 l d EXECUTPO 00000000 EXECUTPO
00000000 l d N2B64K01 00000000 N2B64K01 00000000 l d N2B64K01 00000000 N2B64K01
@ -293,7 +297,10 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [EXEMAIN4]: RELOCATION RECORDS FOR [EXEMAIN4]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
00000007 R_386_16 decompressor_entry 00000007 R_386_16 decompressor_entry
0000000a R_386_16 bx_magic
RELOCATION RECORDS FOR [EXEMAIN4B]:
OFFSET TYPE VALUE
00000001 R_386_16 bx_magic
RELOCATION RECORDS FOR [NRV2B16S]: RELOCATION RECORDS FOR [NRV2B16S]:
OFFSET TYPE VALUE OFFSET TYPE VALUE