Force HEASLR DllCharacteristics when ASLR bit is set for 64-bit targets
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6953 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
4b92898ecb
commit
e3e6ee73bc
2 changed files with 8 additions and 3 deletions
|
@ -789,10 +789,10 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
||||||
# define IMAGE_SIZEOF_SHORT_NAME 8
|
# define IMAGE_SIZEOF_SHORT_NAME 8
|
||||||
#endif
|
#endif
|
||||||
#ifndef IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
|
#ifndef IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
|
||||||
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
|
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // ASLR
|
||||||
#endif
|
#endif
|
||||||
#ifndef IMAGE_DLLCHARACTERISTICS_NX_COMPAT
|
#ifndef IMAGE_DLLCHARACTERISTICS_NX_COMPAT
|
||||||
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
|
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 // DEP
|
||||||
#endif
|
#endif
|
||||||
#ifndef IMAGE_DLLCHARACTERISTICS_NO_SEH
|
#ifndef IMAGE_DLLCHARACTERISTICS_NO_SEH
|
||||||
#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
|
#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
|
||||||
|
@ -800,6 +800,9 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
||||||
#ifndef IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
|
#ifndef IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
|
||||||
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
|
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA
|
||||||
|
#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 // HEASLR
|
||||||
|
#endif
|
||||||
|
|
||||||
// structures
|
// structures
|
||||||
|
|
||||||
|
|
|
@ -2414,7 +2414,9 @@ int CEXEBuild::UpdatePEHeader()
|
||||||
*GetCommonMemberFromPEOptHdr(headers->OptionalHeader, MinorSubsystemVersion) = FIX_ENDIAN_INT16(PESubsysVerMin);
|
*GetCommonMemberFromPEOptHdr(headers->OptionalHeader, MinorSubsystemVersion) = FIX_ENDIAN_INT16(PESubsysVerMin);
|
||||||
}
|
}
|
||||||
// DllCharacteristics
|
// DllCharacteristics
|
||||||
*GetCommonMemberFromPEOptHdr(headers->OptionalHeader, DllCharacteristics) = FIX_ENDIAN_INT16(PEDllCharacteristics);
|
WORD dc = PEDllCharacteristics;
|
||||||
|
if ((dc & IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) && is_target_64bit()) dc |= IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA;
|
||||||
|
*GetCommonMemberFromPEOptHdr(headers->OptionalHeader, DllCharacteristics) = FIX_ENDIAN_INT16(dc);
|
||||||
} catch (std::runtime_error& err) {
|
} catch (std::runtime_error& err) {
|
||||||
ERROR_MSG(_T("Error updating PE headers: %") NPRIs _T("\n"), CtoTStrParam(err.what()));
|
ERROR_MSG(_T("Error updating PE headers: %") NPRIs _T("\n"), CtoTStrParam(err.what()));
|
||||||
return PS_ERROR;
|
return PS_ERROR;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue