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:
committed by
Markus F.X.J. Oberhumer
parent
c9f6a3583c
commit
02bd9cc403
+1
-1
@@ -247,7 +247,7 @@ void PackArmPe::setOhHeaderSize(const pe_section_t *osection)
|
|||||||
|
|
||||||
void PackArmPe::pack(OutputFile *fo)
|
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: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+6
-1
@@ -283,7 +283,12 @@ void PackW32Pe::setOhHeaderSize(const pe_section_t *osection)
|
|||||||
|
|
||||||
void PackW32Pe::pack(OutputFile *fo)
|
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: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
+5
-1
@@ -268,7 +268,11 @@ void PackW64Pep::defineSymbols(unsigned ncsection, unsigned upxsection,
|
|||||||
|
|
||||||
void PackW64Pep::pack(OutputFile *fo)
|
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: */
|
/* vim:set ts=4 sw=4 et: */
|
||||||
|
|||||||
@@ -2148,6 +2148,16 @@ void PeFile::checkHeaderValues(unsigned subsystem, unsigned mask,
|
|||||||
subsystem);
|
subsystem);
|
||||||
throwCantPack(buf);
|
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
|
//check CLR Runtime Header directory entry
|
||||||
if (IDSIZE(PEDIR_COMRT))
|
if (IDSIZE(PEDIR_COMRT))
|
||||||
throwCantPack(".NET files are not yet supported");
|
throwCantPack(".NET files are not yet supported");
|
||||||
|
|||||||
@@ -282,6 +282,22 @@ protected:
|
|||||||
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000
|
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
|
// predefined resource types
|
||||||
enum {
|
enum {
|
||||||
RT_CURSOR = 1, RT_BITMAP, RT_ICON, RT_MENU, RT_DIALOG, RT_STRING,
|
RT_CURSOR = 1, RT_BITMAP, RT_ICON, RT_MENU, RT_DIALOG, RT_STRING,
|
||||||
|
|||||||
Reference in New Issue
Block a user