Added new win32/pe option `--strip-loadconf'.
committer: mfx <mfx> 1089630382 +0000
This commit is contained in:
+16
-5
@@ -1601,6 +1601,9 @@ int PackW32Pe::buildLoader(const Filter *ft)
|
||||
|
||||
void PackW32Pe::pack(OutputFile *fo)
|
||||
{
|
||||
if (opt->win32_pe.strip_loadconf < 0)
|
||||
opt->win32_pe.strip_loadconf = false;
|
||||
|
||||
const unsigned objs = ih.objects;
|
||||
isection = new pe_section_t[objs];
|
||||
fi->seek(pe_offset+sizeof(ih),SEEK_SET);
|
||||
@@ -1612,8 +1615,8 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
|
||||
// check the PE header
|
||||
// FIXME: add more checks
|
||||
if (!opt->force
|
||||
&& (ih.cpu < 0x14c || ih.cpu > 0x150
|
||||
if (!opt->force && (
|
||||
ih.cpu < 0x14c || ih.cpu > 0x150
|
||||
|| ih.opthdrsize != 0xE0
|
||||
|| (ih.flags & EXECUTABLE) == 0
|
||||
|| (ih.subsystem != 2 && ih.subsystem != 3 && ih.subsystem != 1)
|
||||
@@ -1621,15 +1624,17 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
|| ih.ddirsentries != 16
|
||||
|| IDSIZE(PEDIR_EXCEPTION) // is this used on i386?
|
||||
// || IDSIZE(PEDIR_COPYRIGHT)
|
||||
|| IDSIZE(PEDIR_LOADCONF)
|
||||
|| IDSIZE(PEDIR_COMRT)
|
||||
))
|
||||
throwCantPack("unexpected value in PE header (try --force)");
|
||||
|
||||
// Structured Exception Handling
|
||||
if (!opt->win32_pe.strip_loadconf && IDSIZE(PEDIR_LOADCONF))
|
||||
throwCantPack("Structured Exception Handling present (try --strip-loadconf)");
|
||||
|
||||
if (IDSIZE(PEDIR_SEC))
|
||||
throwCantPack("compressing certificate info is not supported");
|
||||
//if (IDSIZE(PEDIR_DELAYIMP))
|
||||
// throwCantPack("delay load imports are not supported");
|
||||
|
||||
if (isdll)
|
||||
opt->win32_pe.strip_relocs = false;
|
||||
else if (opt->win32_pe.strip_relocs < 0)
|
||||
@@ -1904,6 +1909,12 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
ODADDR(PEDIR_BOUNDIM) = 0;
|
||||
ODSIZE(PEDIR_BOUNDIM) = 0;
|
||||
|
||||
if (opt->win32_pe.strip_loadconf)
|
||||
{
|
||||
ODADDR(PEDIR_LOADCONF) = 0;
|
||||
ODSIZE(PEDIR_LOADCONF) = 0;
|
||||
}
|
||||
|
||||
// tls is put into section 1
|
||||
|
||||
ic = s1addr + s1size - sotls;
|
||||
|
||||
Reference in New Issue
Block a user