Enable filters 0x49 and 0x46 for win32/pe. This needs some more testing.
This commit is contained in:
parent
9e77dbfe20
commit
de9dcc4ed6
@ -142,7 +142,8 @@ const int *PackW32Pe::getCompressionMethods(int method, int level) const
|
|||||||
const int *PackW32Pe::getFilters() const
|
const int *PackW32Pe::getFilters() const
|
||||||
{
|
{
|
||||||
static const int filters[] = {
|
static const int filters[] = {
|
||||||
0x26, 0x24, 0x16, 0x13, 0x14, 0x11, FT_ULTRA_BRUTE, 0x25, 0x15, 0x12,
|
0x26, 0x24, 0x49, 0x46, 0x16, 0x13, 0x14, 0x11,
|
||||||
|
FT_ULTRA_BRUTE, 0x25, 0x15, 0x12,
|
||||||
FT_END };
|
FT_END };
|
||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
@ -893,6 +894,9 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
|
|
||||||
defineFilterSymbols(linker, &ft);
|
defineFilterSymbols(linker, &ft);
|
||||||
linker->defineSymbol("filter_buffer_start", ih.codebase - rvamin);
|
linker->defineSymbol("filter_buffer_start", ih.codebase - rvamin);
|
||||||
|
if (0x40==(0xf0 & ft.id)) {
|
||||||
|
linker->defineSymbol("filter_length", ft.buf_len); // redefine
|
||||||
|
}
|
||||||
defineDecompressorSymbols();
|
defineDecompressorSymbols();
|
||||||
|
|
||||||
// in case of overlapping decompression, this hack is needed,
|
// in case of overlapping decompression, this hack is needed,
|
||||||
@ -910,6 +914,7 @@ void PackW32Pe::pack(OutputFile *fo)
|
|||||||
linker->defineSymbol("start_of_compressed", esi0 + ih.imagebase);
|
linker->defineSymbol("start_of_compressed", esi0 + ih.imagebase);
|
||||||
|
|
||||||
linker->defineSymbol(isdll ? "PEISDLL1" : "PEMAIN01", upxsection);
|
linker->defineSymbol(isdll ? "PEISDLL1" : "PEMAIN01", upxsection);
|
||||||
|
//linker->dumpSymbols();
|
||||||
relocateLoader();
|
relocateLoader();
|
||||||
|
|
||||||
const unsigned lsize = getLoaderSize();
|
const unsigned lsize = getLoaderSize();
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -153,9 +153,9 @@ section CALLTR02
|
|||||||
sub eax, edi
|
sub eax, edi
|
||||||
sub bl, 0xE8
|
sub bl, 0xE8
|
||||||
|
|
||||||
.ifnc \addvalue, 0
|
.ifnc \addvalue, 0
|
||||||
add eax, \addvalue
|
add eax, \addvalue
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
mov [edi], eax
|
mov [edi], eax
|
||||||
add edi, 5
|
add edi, 5
|
||||||
@ -203,9 +203,11 @@ ctend:
|
|||||||
.macro cit32 addvalue
|
.macro cit32 addvalue
|
||||||
section CALLTR00
|
section CALLTR00
|
||||||
mov ecx, offset filter_length
|
mov ecx, offset filter_length
|
||||||
.ifnc \addvalue, 0
|
.ifnc \addvalue, 0
|
||||||
|
.ifnc \addvalue, esi
|
||||||
mov esi, \addvalue
|
mov esi, \addvalue
|
||||||
.endif
|
.endif
|
||||||
|
.endif
|
||||||
calltrickloop:
|
calltrickloop:
|
||||||
mov al, [edi]
|
mov al, [edi]
|
||||||
inc edi
|
inc edi
|
||||||
@ -230,9 +232,9 @@ section CALLTR02
|
|||||||
sub eax, edi
|
sub eax, edi
|
||||||
sub bl, 0xE8
|
sub bl, 0xE8
|
||||||
|
|
||||||
.ifnc \addvalue, 0
|
.ifnc \addvalue, 0
|
||||||
add eax, esi
|
add eax, esi
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
mov [edi], eax
|
mov [edi], eax
|
||||||
add edi, 5
|
add edi, 5
|
||||||
@ -267,9 +269,9 @@ section CTBSWA11
|
|||||||
section CALLTR13
|
section CALLTR13
|
||||||
sub eax, edi
|
sub eax, edi
|
||||||
|
|
||||||
.ifnc \addvalue, 0
|
.ifnc \addvalue, 0
|
||||||
add eax, esi
|
add eax, esi
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
stosd
|
stosd
|
||||||
jmps ctloop1
|
jmps ctloop1
|
||||||
@ -289,7 +291,9 @@ ctend:
|
|||||||
|
|
||||||
section ctok32.00
|
section ctok32.00
|
||||||
.ifnc \addvalue, 0
|
.ifnc \addvalue, 0
|
||||||
|
.ifnc \addvalue, esi
|
||||||
mov esi, \addvalue
|
mov esi, \addvalue
|
||||||
|
.endif
|
||||||
.endif
|
.endif
|
||||||
jmps ckstart
|
jmps ckstart
|
||||||
ckloop3:
|
ckloop3:
|
||||||
|
|||||||
@ -75,9 +75,13 @@ section PECTTPOS
|
|||||||
lea edi, [esi + filter_buffer_start]
|
lea edi, [esi + filter_buffer_start]
|
||||||
section PECTTNUL
|
section PECTTNUL
|
||||||
mov edi, esi
|
mov edi, esi
|
||||||
// section PEDUMMY0
|
|
||||||
cjt32 esi
|
cjt32 esi
|
||||||
|
|
||||||
|
section ctok32.00
|
||||||
|
mov ecx, offset filter_length
|
||||||
|
ctok32 esi, (offset filter_cto)
|
||||||
|
|
||||||
// =============
|
// =============
|
||||||
// ============= IMPORTS
|
// ============= IMPORTS
|
||||||
// =============
|
// =============
|
||||||
|
|||||||
@ -91,31 +91,36 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
86 CTBROR11 00000002 00000000 00000000 00001955 2**0 CONTENTS, READONLY
|
86 CTBROR11 00000002 00000000 00000000 00001955 2**0 CONTENTS, READONLY
|
||||||
87 CTBSWA11 00000005 00000000 00000000 00001957 2**0 CONTENTS, READONLY
|
87 CTBSWA11 00000005 00000000 00000000 00001957 2**0 CONTENTS, READONLY
|
||||||
88 CALLTR13 00000007 00000000 00000000 0000195c 2**0 CONTENTS, RELOC, READONLY
|
88 CALLTR13 00000007 00000000 00000000 0000195c 2**0 CONTENTS, RELOC, READONLY
|
||||||
89 PEIMPORT 0000002c 00000000 00000000 00001963 2**0 CONTENTS, RELOC, READONLY
|
89 ctok32.00 0000000c 00000000 00000000 00001963 2**0 CONTENTS, RELOC, READONLY
|
||||||
90 PEIBYORD 00000002 00000000 00000000 0000198f 2**0 CONTENTS, RELOC, READONLY
|
90 ctok32.10 0000000e 00000000 00000000 0000196f 2**0 CONTENTS, RELOC, READONLY
|
||||||
91 PEK32ORD 00000010 00000000 00000000 00001991 2**0 CONTENTS, RELOC, READONLY
|
91 ctok32.20 00000022 00000000 00000000 0000197d 2**0 CONTENTS, RELOC, READONLY
|
||||||
92 PEIMORD1 00000007 00000000 00000000 000019a1 2**0 CONTENTS, READONLY
|
92 ctok32.30 00000007 00000000 00000000 0000199f 2**0 CONTENTS, RELOC, READONLY
|
||||||
93 PEIMPOR2 00000016 00000000 00000000 000019a8 2**0 CONTENTS, RELOC, READONLY
|
93 ctok32.40 00000005 00000000 00000000 000019a6 2**0 CONTENTS, RELOC, READONLY
|
||||||
94 PEIERDLL 00000006 00000000 00000000 000019be 2**0 CONTENTS, READONLY
|
94 PEIMPORT 0000002c 00000000 00000000 000019ab 2**0 CONTENTS, RELOC, READONLY
|
||||||
95 PEIEREXE 00000006 00000000 00000000 000019c4 2**0 CONTENTS, RELOC, READONLY
|
95 PEIBYORD 00000002 00000000 00000000 000019d7 2**0 CONTENTS, RELOC, READONLY
|
||||||
96 PEIMDONE 00000000 00000000 00000000 000019ca 2**0 CONTENTS, READONLY
|
96 PEK32ORD 00000010 00000000 00000000 000019d9 2**0 CONTENTS, RELOC, READONLY
|
||||||
97 PERELOC1 00000006 00000000 00000000 000019ca 2**0 CONTENTS, RELOC, READONLY
|
97 PEIMORD1 00000007 00000000 00000000 000019e9 2**0 CONTENTS, READONLY
|
||||||
98 PERELOC2 00000003 00000000 00000000 000019d0 2**0 CONTENTS, READONLY
|
98 PEIMPOR2 00000016 00000000 00000000 000019f0 2**0 CONTENTS, RELOC, READONLY
|
||||||
99 PERELOC3 00000003 00000000 00000000 000019d3 2**0 CONTENTS, READONLY
|
99 PEIERDLL 00000006 00000000 00000000 00001a06 2**0 CONTENTS, READONLY
|
||||||
100 RELOC320 00000029 00000000 00000000 000019d6 2**0 CONTENTS, RELOC, READONLY
|
100 PEIEREXE 00000006 00000000 00000000 00001a0c 2**0 CONTENTS, RELOC, READONLY
|
||||||
101 REL32BIG 00000009 00000000 00000000 000019ff 2**0 CONTENTS, RELOC, READONLY
|
101 PEIMDONE 00000000 00000000 00000000 00001a12 2**0 CONTENTS, READONLY
|
||||||
102 RELOC32J 00000002 00000000 00000000 00001a08 2**0 CONTENTS, RELOC, READONLY
|
102 PERELOC1 00000006 00000000 00000000 00001a12 2**0 CONTENTS, RELOC, READONLY
|
||||||
103 REL32END 00000000 00000000 00000000 00001a0a 2**0 CONTENTS, READONLY
|
103 PERELOC2 00000003 00000000 00000000 00001a18 2**0 CONTENTS, READONLY
|
||||||
104 PERLOHI0 00000008 00000000 00000000 00001a0a 2**0 CONTENTS, RELOC, READONLY
|
104 PERELOC3 00000003 00000000 00000000 00001a1b 2**0 CONTENTS, READONLY
|
||||||
105 PERELLO0 0000000a 00000000 00000000 00001a12 2**0 CONTENTS, READONLY
|
105 RELOC320 00000029 00000000 00000000 00001a1e 2**0 CONTENTS, RELOC, READONLY
|
||||||
106 PERELHI0 0000000d 00000000 00000000 00001a1c 2**0 CONTENTS, READONLY
|
106 REL32BIG 00000009 00000000 00000000 00001a47 2**0 CONTENTS, RELOC, READONLY
|
||||||
107 PEDEPHAK 0000002f 00000000 00000000 00001a29 2**0 CONTENTS, RELOC, READONLY
|
107 RELOC32J 00000002 00000000 00000000 00001a50 2**0 CONTENTS, RELOC, READONLY
|
||||||
108 PEMAIN20 00000001 00000000 00000000 00001a58 2**0 CONTENTS, READONLY
|
108 REL32END 00000000 00000000 00000000 00001a52 2**0 CONTENTS, READONLY
|
||||||
109 CLEARSTACK 0000000d 00000000 00000000 00001a59 2**0 CONTENTS, READONLY
|
109 PERLOHI0 00000008 00000000 00000000 00001a52 2**0 CONTENTS, RELOC, READONLY
|
||||||
110 PEMAIN21 00000000 00000000 00000000 00001a66 2**0 CONTENTS, READONLY
|
110 PERELLO0 0000000a 00000000 00000000 00001a5a 2**0 CONTENTS, READONLY
|
||||||
111 PERETURN 00000006 00000000 00000000 00001a66 2**0 CONTENTS, READONLY
|
111 PERELHI0 0000000d 00000000 00000000 00001a64 2**0 CONTENTS, READONLY
|
||||||
112 PEDOJUMP 00000005 00000000 00000000 00001a6c 2**0 CONTENTS, RELOC, READONLY
|
112 PEDEPHAK 0000002f 00000000 00000000 00001a71 2**0 CONTENTS, RELOC, READONLY
|
||||||
113 UPX1HEAD 00000020 00000000 00000000 00001a71 2**0 CONTENTS, READONLY
|
113 PEMAIN20 00000001 00000000 00000000 00001aa0 2**0 CONTENTS, READONLY
|
||||||
|
114 CLEARSTACK 0000000d 00000000 00000000 00001aa1 2**0 CONTENTS, READONLY
|
||||||
|
115 PEMAIN21 00000000 00000000 00000000 00001aae 2**0 CONTENTS, READONLY
|
||||||
|
116 PERETURN 00000006 00000000 00000000 00001aae 2**0 CONTENTS, READONLY
|
||||||
|
117 PEDOJUMP 00000005 00000000 00000000 00001ab4 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
118 UPX1HEAD 00000020 00000000 00000000 00001ab9 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d N2BSMA10 00000000 N2BSMA10
|
00000000 l d N2BSMA10 00000000 N2BSMA10
|
||||||
00000000 l d N2BFAS11 00000000 N2BFAS11
|
00000000 l d N2BFAS11 00000000 N2BFAS11
|
||||||
@ -145,6 +150,10 @@ SYMBOL TABLE:
|
|||||||
00000000 l d CALLTR10 00000000 CALLTR10
|
00000000 l d CALLTR10 00000000 CALLTR10
|
||||||
00000000 l d CALLTR11 00000000 CALLTR11
|
00000000 l d CALLTR11 00000000 CALLTR11
|
||||||
00000000 l d CALLTR13 00000000 CALLTR13
|
00000000 l d CALLTR13 00000000 CALLTR13
|
||||||
|
00000000 l d ctok32.00 00000000 ctok32.00
|
||||||
|
00000000 l d ctok32.10 00000000 ctok32.10
|
||||||
|
00000000 l d ctok32.20 00000000 ctok32.20
|
||||||
|
00000000 l d ctok32.40 00000000 ctok32.40
|
||||||
00000000 l d PEIMPORT 00000000 PEIMPORT
|
00000000 l d PEIMPORT 00000000 PEIMPORT
|
||||||
00000000 l d PEIMORD1 00000000 PEIMORD1
|
00000000 l d PEIMORD1 00000000 PEIMORD1
|
||||||
00000000 l d PEIMPOR2 00000000 PEIMPOR2
|
00000000 l d PEIMPOR2 00000000 PEIMPOR2
|
||||||
@ -213,6 +222,7 @@ SYMBOL TABLE:
|
|||||||
00000000 l d CTBSHR11 00000000 CTBSHR11
|
00000000 l d CTBSHR11 00000000 CTBSHR11
|
||||||
00000000 l d CTBROR11 00000000 CTBROR11
|
00000000 l d CTBROR11 00000000 CTBROR11
|
||||||
00000000 l d CTBSWA11 00000000 CTBSWA11
|
00000000 l d CTBSWA11 00000000 CTBSWA11
|
||||||
|
00000000 l d ctok32.30 00000000 ctok32.30
|
||||||
00000000 l d PEIBYORD 00000000 PEIBYORD
|
00000000 l d PEIBYORD 00000000 PEIBYORD
|
||||||
00000000 l d PEK32ORD 00000000 PEK32ORD
|
00000000 l d PEK32ORD 00000000 PEK32ORD
|
||||||
00000000 l d PEIERDLL 00000000 PEIERDLL
|
00000000 l d PEIERDLL 00000000 PEIERDLL
|
||||||
@ -480,6 +490,29 @@ RELOCATION RECORDS FOR [CALLTR13]:
|
|||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000006 R_386_PC8 CALLTR10
|
00000006 R_386_PC8 CALLTR10
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ctok32.00]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000001 R_386_32 filter_length
|
||||||
|
00000006 R_386_PC8 ctok32.20
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ctok32.10]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
0000000d R_386_PC8 ctok32.20
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ctok32.20]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000005 R_386_PC8 ctok32.40
|
||||||
|
00000008 R_386_8 filter_cto
|
||||||
|
0000000a R_386_PC8 ctok32.40
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ctok32.30]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000006 R_386_PC8 ctok32.10
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [ctok32.40]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000004 R_386_PC8 ctok32.00
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [PEIMPORT]:
|
RELOCATION RECORDS FOR [PEIMPORT]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000002 R_386_32 compressed_imports
|
00000002 R_386_32 compressed_imports
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user