IMAGE_SUBSYSTEM_EFI_APPLICATION
Beginning of support for compressing EFI files; lacks run-time decompressor. https://github.com/upx/upx/issues/518 modified: p_armpe.cpp modified: p_w32pe.cpp modified: p_w64pep.cpp modified: pefile.cpp modified: pefile.h
This commit is contained in:
parent
c9f6a3583c
commit
02bd9cc403
@ -247,7 +247,7 @@ void PackArmPe::setOhHeaderSize(const pe_section_t *osection)
|
||||
|
||||
void PackArmPe::pack(OutputFile *fo)
|
||||
{
|
||||
super::pack0(fo, 1U << 9, 0x10000, true);
|
||||
super::pack0(fo, (1u<<IMAGE_SUBSYSTEM_WINDOWS_CE_GUI), 0x10000, true);
|
||||
}
|
||||
|
||||
/* vim:set ts=4 sw=4 et: */
|
||||
|
||||
@ -283,7 +283,12 @@ void PackW32Pe::setOhHeaderSize(const pe_section_t *osection)
|
||||
|
||||
void PackW32Pe::pack(OutputFile *fo)
|
||||
{
|
||||
super::pack0(fo, 0x0c, 0x400000, false);
|
||||
super::pack0(fo
|
||||
, (1u<<IMAGE_SUBSYSTEM_WINDOWS_GUI)
|
||||
| (1u<<IMAGE_SUBSYSTEM_WINDOWS_CUI)
|
||||
| (1u<<IMAGE_SUBSYSTEM_EFI_APPLICATION) // no decompressor yet
|
||||
, 0x400000
|
||||
, false);
|
||||
}
|
||||
|
||||
/* vim:set ts=4 sw=4 et: */
|
||||
|
||||
@ -268,7 +268,11 @@ void PackW64Pep::defineSymbols(unsigned ncsection, unsigned upxsection,
|
||||
|
||||
void PackW64Pep::pack(OutputFile *fo)
|
||||
{
|
||||
super::pack0(fo, 0x0c, 0x0000000140000000ULL);
|
||||
super::pack0(fo
|
||||
, (1u<<IMAGE_SUBSYSTEM_WINDOWS_GUI)
|
||||
| (1u<<IMAGE_SUBSYSTEM_WINDOWS_CUI)
|
||||
| (1u<<IMAGE_SUBSYSTEM_EFI_APPLICATION) // no decompressor yet
|
||||
, 0x0000000140000000ULL);
|
||||
}
|
||||
|
||||
/* vim:set ts=4 sw=4 et: */
|
||||
|
||||
@ -2148,6 +2148,16 @@ void PeFile::checkHeaderValues(unsigned subsystem, unsigned mask,
|
||||
subsystem);
|
||||
throwCantPack(buf);
|
||||
}
|
||||
if (mask & (
|
||||
(1u<<IMAGE_SUBSYSTEM_EFI_APPLICATION)
|
||||
|(1u<<IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER)
|
||||
|(1u<<IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER)
|
||||
|(1u<<IMAGE_SUBSYSTEM_EFI_ROM)
|
||||
))
|
||||
{
|
||||
infoWarning("PE: subsystem %u (EFI) lacks a run-time decompressor",
|
||||
subsystem);
|
||||
}
|
||||
//check CLR Runtime Header directory entry
|
||||
if (IDSIZE(PEDIR_COMRT))
|
||||
throwCantPack(".NET files are not yet supported");
|
||||
|
||||
16
src/pefile.h
16
src/pefile.h
@ -282,6 +282,22 @@ protected:
|
||||
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000
|
||||
};
|
||||
|
||||
enum {
|
||||
IMAGE_SUBSYSTEM_UNKNOWN = 0,
|
||||
IMAGE_SUBSYSTEM_NATIVE = 1,
|
||||
IMAGE_SUBSYSTEM_WINDOWS_GUI = 2, // Grapical
|
||||
IMAGE_SUBSYSTEM_WINDOWS_CUI = 3, // Character-mode
|
||||
IMAGE_SUBSYSTEM_WINDOWS_OS2_CUI = 5,
|
||||
IMAGE_SUBSYSTEM_WINDOWS_POSIX_CUI = 7,
|
||||
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,
|
||||
IMAGE_SUBSYSTEM_EFI_APPLICATION = 10,
|
||||
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,
|
||||
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,
|
||||
IMAGE_SUBSYSTEM_EFI_ROM = 13,
|
||||
IMAGE_SUBSYSTEM_XBOX = 14,
|
||||
IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16
|
||||
};
|
||||
|
||||
// predefined resource types
|
||||
enum {
|
||||
RT_CURSOR = 1, RT_BITMAP, RT_ICON, RT_MENU, RT_DIALOG, RT_STRING,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user