win64/pe: added nrv2b and nrv2d support

This commit is contained in:
László Molnár
2013-08-27 22:06:52 +02:00
parent fbc756b531
commit 1c13046297
6 changed files with 965 additions and 874 deletions
+8 -2
View File
@@ -139,11 +139,16 @@ PackW64Pep::~PackW64Pep()
}
const int *PackW64Pep::getCompressionMethods(int /*method*/, int /*level*/) const
const int *PackW64Pep::getCompressionMethods(int method, int /*level*/) const
{
// FIXME bool small = ih.codesize + ih.datasize <= 256*1024;
//return Packer::getDefaultCompressionMethods_le32(method, level, small);
static const int m_nrv2b[] = { M_NRV2B_LE32, M_END };
static const int m_nrv2d[] = { M_NRV2D_LE32, M_END };
static const int m_nrv2e[] = { M_NRV2E_LE32, M_END };
if (M_IS_NRV2B(method)) return m_nrv2b;
if (M_IS_NRV2D(method)) return m_nrv2d;
if (M_IS_NRV2E(method)) return m_nrv2e;
return m_nrv2e;
}
@@ -689,7 +694,8 @@ void PackW64Pep::buildLoader(const Filter *ft)
"PEMAIN02",
//ph.first_offset_found == 1 ? "PEMAIN03" : "",
"NRV_HEAD",
"NRV2E",
ph.method == M_NRV2B_LE32 ? "NRV2B" :
ph.method == M_NRV2D_LE32 ? "NRV2D" : "NRV2E",
//getDecompressorSections(),
/*multipass ? "PEMULTIP" : */ "",
"PEMAIN10",
+898 -835
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -176,14 +176,14 @@ setup:
#define NO_METHOD_CHECK
section NRV2B
#include "arch/amd64/nrv2b_d.S"
section NRV2D
#include "arch/amd64/nrv2d_d.S"
section NRV2E
#include "arch/amd64/nrv2e_d.S"
#if 0 //; FIXME
#include "arch/amd64/nrv2b_d.S"
#include "arch/amd64/nrv2d_d.S"
#include "arch/amd64/nrv2e_d.S"
#if 0
#include "arch/amd64/lzma_d.S"
#endif
+4
View File
@@ -29,7 +29,11 @@
<jreiser@users.sourceforge.net>
*/
#ifndef NO_METHOD_CHECK
cmpb $ M_NRV2B_LE32,methb; je top_n2b; jmp not_n2b
#else
jmp top_n2b
#endif
lit_n2b:
incq %rsi; movb %dl,(%rdi)
+4
View File
@@ -29,7 +29,11 @@
<jreiser@users.sourceforge.net>
*/
#ifndef NO_METHOD_CHECK
cmpb $ M_NRV2D_LE32,methb; je top_n2d; jmp not_n2d
#else
jmp top_n2d
#endif
lit_n2d:
incq %rsi; movb %dl,(%rdi)
+46 -32
View File
@@ -12,38 +12,40 @@ Idx Name Size VMA LMA File off Algn
7 PEMAIN02 00000001 0000000000000000 0000000000000000 0000008a 2**0 CONTENTS, READONLY
8 PEMAIN03 00000000 0000000000000000 0000000000000000 0000008b 2**0 CONTENTS, READONLY
9 NRV_HEAD 00000060 0000000000000000 0000000000000000 0000008b 2**0 CONTENTS, READONLY
10 NRV2E 000000ae 0000000000000000 0000000000000000 000000eb 2**0 CONTENTS, RELOC, READONLY
11 PEMAIN10 00000001 0000000000000000 0000000000000000 00000199 2**0 CONTENTS, READONLY
12 PETLSHAK2 00000004 0000000000000000 0000000000000000 0000019a 2**0 CONTENTS, READONLY
13 PECTTPOS 00000007 0000000000000000 0000000000000000 0000019e 2**0 CONTENTS, RELOC, READONLY
14 PECTTNUL 00000003 0000000000000000 0000000000000000 000001a5 2**0 CONTENTS, READONLY
15 PEFILTER49 0000004e 0000000000000000 0000000000000000 000001a8 2**0 CONTENTS, RELOC, READONLY
16 PEIMPORT 00000034 0000000000000000 0000000000000000 000001f6 2**0 CONTENTS, RELOC, READONLY
17 PEIBYORD 00000002 0000000000000000 0000000000000000 0000022a 2**0 CONTENTS, RELOC, READONLY
18 PEK32ORD 00000012 0000000000000000 0000000000000000 0000022c 2**0 CONTENTS, RELOC, READONLY
19 PEIMORD1 0000000a 0000000000000000 0000000000000000 0000023e 2**0 CONTENTS, RELOC, READONLY
20 PEIMPOR2 00000021 0000000000000000 0000000000000000 00000248 2**0 CONTENTS, RELOC, READONLY
21 PEIERDLL 0000000b 0000000000000000 0000000000000000 00000269 2**0 CONTENTS, READONLY
22 PEIEREXE 00000006 0000000000000000 0000000000000000 00000274 2**0 CONTENTS, RELOC, READONLY
23 PEIMDONE 00000004 0000000000000000 0000000000000000 0000027a 2**0 CONTENTS, READONLY
24 PERELOC1 00000007 0000000000000000 0000000000000000 0000027e 2**0 CONTENTS, RELOC, READONLY
25 PERELOC2 00000004 0000000000000000 0000000000000000 00000285 2**0 CONTENTS, READONLY
26 PERELOC3 00000030 0000000000000000 0000000000000000 00000289 2**0 CONTENTS, RELOC, READONLY
27 REL64BIG 0000000a 0000000000000000 0000000000000000 000002b9 2**0 CONTENTS, RELOC, READONLY
28 RELOC64J 00000002 0000000000000000 0000000000000000 000002c3 2**0 CONTENTS, RELOC, READONLY
29 PERLOHI0 0000000a 0000000000000000 0000000000000000 000002c5 2**0 CONTENTS, RELOC, READONLY
30 PERELLO0 0000000b 0000000000000000 0000000000000000 000002cf 2**0 CONTENTS, READONLY
31 PERELHI0 0000000e 0000000000000000 0000000000000000 000002da 2**0 CONTENTS, READONLY
32 PEDEPHAK 0000004b 0000000000000000 0000000000000000 000002e8 2**0 CONTENTS, RELOC, READONLY
33 PETLSC 0000001b 0000000000000000 0000000000000000 00000333 2**0 CONTENTS, RELOC, READONLY
34 PEMAIN20 00000004 0000000000000000 0000000000000000 0000034e 2**0 CONTENTS, READONLY
35 CLEARSTACK 00000010 0000000000000000 0000000000000000 00000352 2**0 CONTENTS, READONLY
36 PEMAIN21 00000000 0000000000000000 0000000000000000 00000362 2**0 CONTENTS, READONLY
37 PEISDLL9 0000000f 0000000000000000 0000000000000000 00000362 2**0 CONTENTS, READONLY
38 PERETURN 00000004 0000000000000000 0000000000000000 00000371 2**0 CONTENTS, READONLY
39 PEDOJUMP 00000005 0000000000000000 0000000000000000 00000375 2**0 CONTENTS, RELOC, READONLY
40 PETLSC2 00000028 0000000000000000 0000000000000000 0000037a 2**0 CONTENTS, RELOC, READONLY
41 UPX1HEAD 00000020 0000000000000000 0000000000000000 000003a2 2**0 CONTENTS, READONLY
10 NRV2B 00000087 0000000000000000 0000000000000000 000000eb 2**0 CONTENTS, RELOC, READONLY
11 NRV2D 00000095 0000000000000000 0000000000000000 00000172 2**0 CONTENTS, RELOC, READONLY
12 NRV2E 000000ae 0000000000000000 0000000000000000 00000207 2**0 CONTENTS, RELOC, READONLY
13 PEMAIN10 00000001 0000000000000000 0000000000000000 000002b5 2**0 CONTENTS, READONLY
14 PETLSHAK2 00000004 0000000000000000 0000000000000000 000002b6 2**0 CONTENTS, READONLY
15 PECTTPOS 00000007 0000000000000000 0000000000000000 000002ba 2**0 CONTENTS, RELOC, READONLY
16 PECTTNUL 00000003 0000000000000000 0000000000000000 000002c1 2**0 CONTENTS, READONLY
17 PEFILTER49 0000004e 0000000000000000 0000000000000000 000002c4 2**0 CONTENTS, RELOC, READONLY
18 PEIMPORT 00000034 0000000000000000 0000000000000000 00000312 2**0 CONTENTS, RELOC, READONLY
19 PEIBYORD 00000002 0000000000000000 0000000000000000 00000346 2**0 CONTENTS, RELOC, READONLY
20 PEK32ORD 00000012 0000000000000000 0000000000000000 00000348 2**0 CONTENTS, RELOC, READONLY
21 PEIMORD1 0000000a 0000000000000000 0000000000000000 0000035a 2**0 CONTENTS, RELOC, READONLY
22 PEIMPOR2 00000021 0000000000000000 0000000000000000 00000364 2**0 CONTENTS, RELOC, READONLY
23 PEIERDLL 0000000b 0000000000000000 0000000000000000 00000385 2**0 CONTENTS, READONLY
24 PEIEREXE 00000006 0000000000000000 0000000000000000 00000390 2**0 CONTENTS, RELOC, READONLY
25 PEIMDONE 00000004 0000000000000000 0000000000000000 00000396 2**0 CONTENTS, READONLY
26 PERELOC1 00000007 0000000000000000 0000000000000000 0000039a 2**0 CONTENTS, RELOC, READONLY
27 PERELOC2 00000004 0000000000000000 0000000000000000 000003a1 2**0 CONTENTS, READONLY
28 PERELOC3 00000030 0000000000000000 0000000000000000 000003a5 2**0 CONTENTS, RELOC, READONLY
29 REL64BIG 0000000a 0000000000000000 0000000000000000 000003d5 2**0 CONTENTS, RELOC, READONLY
30 RELOC64J 00000002 0000000000000000 0000000000000000 000003df 2**0 CONTENTS, RELOC, READONLY
31 PERLOHI0 0000000a 0000000000000000 0000000000000000 000003e1 2**0 CONTENTS, RELOC, READONLY
32 PERELLO0 0000000b 0000000000000000 0000000000000000 000003eb 2**0 CONTENTS, READONLY
33 PERELHI0 0000000e 0000000000000000 0000000000000000 000003f6 2**0 CONTENTS, READONLY
34 PEDEPHAK 0000004b 0000000000000000 0000000000000000 00000404 2**0 CONTENTS, RELOC, READONLY
35 PETLSC 0000001b 0000000000000000 0000000000000000 0000044f 2**0 CONTENTS, RELOC, READONLY
36 PEMAIN20 00000004 0000000000000000 0000000000000000 0000046a 2**0 CONTENTS, READONLY
37 CLEARSTACK 00000010 0000000000000000 0000000000000000 0000046e 2**0 CONTENTS, READONLY
38 PEMAIN21 00000000 0000000000000000 0000000000000000 0000047e 2**0 CONTENTS, READONLY
39 PEISDLL9 0000000f 0000000000000000 0000000000000000 0000047e 2**0 CONTENTS, READONLY
40 PERETURN 00000004 0000000000000000 0000000000000000 0000048d 2**0 CONTENTS, READONLY
41 PEDOJUMP 00000005 0000000000000000 0000000000000000 00000491 2**0 CONTENTS, RELOC, READONLY
42 PETLSC2 00000028 0000000000000000 0000000000000000 00000496 2**0 CONTENTS, RELOC, READONLY
43 UPX1HEAD 00000020 0000000000000000 0000000000000000 000004be 2**0 CONTENTS, READONLY
SYMBOL TABLE:
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
0000000000000000 l d PEMAIN10 0000000000000000 PEMAIN10
@@ -65,6 +67,8 @@ SYMBOL TABLE:
0000000000000000 l d PETLSHAK 0000000000000000 PETLSHAK
0000000000000000 l d PEMAIN02 0000000000000000 PEMAIN02
0000000000000000 l d PEMAIN03 0000000000000000 PEMAIN03
0000000000000000 l d NRV2B 0000000000000000 NRV2B
0000000000000000 l d NRV2D 0000000000000000 NRV2D
0000000000000000 l d NRV2E 0000000000000000 NRV2E
0000000000000000 l d PETLSHAK2 0000000000000000 PETLSHAK2
0000000000000000 l d PECTTPOS 0000000000000000 PECTTPOS
@@ -142,6 +146,16 @@ OFFSET TYPE VALUE
0000000000000003 R_X86_64_32S tls_address
000000000000000b R_X86_64_32 tls_value+0x0000000080000000
RELOCATION RECORDS FOR [NRV2B]:
OFFSET TYPE VALUE
0000000000000081 R_X86_64_PC32 NRV_HEAD+0x000000000000001b
0000000000000049 R_X86_64_PC32 PEMAIN10+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2D]:
OFFSET TYPE VALUE
000000000000008c R_X86_64_PC32 NRV_HEAD+0x000000000000001b
0000000000000052 R_X86_64_PC32 PEMAIN10+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
00000000000000a5 R_X86_64_PC32 NRV_HEAD+0x000000000000001b