Check if ASLR is enabled
#8
Original C++ Source:

Check ASLR from file 2
PHP كود :
unit uCheckASLR
PHP كود :
interface

uses
  Windows
;

type
  NTSTATUS 
ULONG;
 
 SIZE_T Cardinal;
 
 PVOID Pointer;
 
 PLARGE_INTEGER = ^LARGE_INTEGER;
 
 HANDLE THANDLE;

function 
CheckASLR(const FileNameWideStringout bASLRBoolean): NTSTATUS;

implementation

const
 
 FILE_READ_DATA            = $0001// file & pipe
 
 FILE_READ_EA              = $0008// file & directory
 
 FILE_READ_ATTRIBUTES      = $0080// all
 
 FILE_GENERIC_READ    STANDARD_RIGHTS_READ or FILE_READ_DATA or
 
   FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE;

 
 FILE_SHARE_VALID_FLAGS = $00000007;
 
 FILE_SYNCHRONOUS_IO_NONALERT     = $00000020;

 
 OBJ_CASE_INSENSITIVE = $00000040;

type
  _SECTION_INFORMATION_CLASS 
= (
 
   SectionBasicInformation,
 
   SectionImageInformation);
 
 SECTION_INFORMATION_CLASS _SECTION_INFORMATION_CLASS;
 
 TSectionInformationClass SECTION_INFORMATION_CLASS;

 
TSectionImageInformation  record
    TransferAddress
Pointer;
 
   ZeroBitsLongWord;
 
   MaximumStackSizeLongWord;
 
   CommittedStackSizeLongWord;
 
   SubSystemTypeLongWord;
 
   MinorSubsystemVersionWord;
 
   MajorSubsystemVersionWord;
 
   GpValueLongWord;
 
   ImageCharacteristicsWord;
 
   DllCharacteristicsWord;
 
   MachineWord;
 
   ImageContainsCodeBoolean;
 
   ImageFlagsByte;
 
   LoaderFlagsLongWord;
 
   ImageFileSizeLongWord;
 
   CheckSumLongWord;
 
 end;

 
 TIoStatusBlock packed record
    Status      
NTSTATUS;
 
   Information ULONG;
 
 end;
 
 IO_STATUS_BLOCK TIoStatusBlock;
 
 P_IO_STATUS_BLOCK = ^TIoStatusBlock;

 
 TUnicodeString packed record
    Length
WORD;
 
   MaximumLengthWORD;
 
   BufferPWideChar;
 
 end;
 
 PUnicodeString = ^TUnicodeString;
 
 TUNICODE_STRING TUnicodeString;
 
 UNICODE_STRING TUnicodeString;
 
 PUNICODE_STRING PUnicodeString;

 
 POBJECT_ATTRIBUTES = ^OBJECT_ATTRIBUTES;
 
 OBJECT_ATTRIBUTES packed record
    Length
ULONG;
 
   RootDirectoryTHandle;
 
   ObjectNamePUNICODE_STRING;
 
   AttributesULONG;
 
   SecurityDescriptorPVOID       // Points to type SECURITY_DESCRIPTOR
 
   SecurityQualityOfServicePVOID // Points to type SECURITY_QUALITY_OF_SERVICE
 
 end;

function 
NtOpenFile(FileHandlePHANDLEDesiredAccessACCESS_MASKObjectAttributesPOBJECT_ATTRIBUTESIoStatusBlockP_IO_STATUS_BLOCKShareAccessULONGOpenOptionsULONG): LongIntstdcallexternal  'ntdll.dll';
function 
NtCreateSection(SectionHandlePHANDLEDesiredAccessACCESS_MASKObjectAttributesPOBJECT_ATTRIBUTESSectionSizePLARGE_INTEGERProtectULONGAttributesULONGFileHandleTHandle): LongIntstdcallexternal  'ntdll.dll';
function 
NtClose(Handle THandle): LongIntstdcallexternal  'ntdll.dll';
function 
ZwQuerySection(SectionHandle THandleSectionInformationClass SECTION_INFORMATION_CLASSSectionInformationPVOIDSectionInformationLengthULONGResultLengthPULONG): LongIntstdcallexternal  'ntdll.dll';
procedure RtlInitUnicodeString(DestinationStringPUNICODE_STRINGSourceStringPWideChar); stdcallexternal 'ntdll.dll';

procedure InitializeObjectAttributes(pPOBJECT_ATTRIBUTESnPUNICODE_STRING;
 
 aULONGrHANDLEsPVOID{PSECURITY_DESCRIPTOR});
begin
  p
^.Length := SizeOf(OBJECT_ATTRIBUTES);
 
 p^.RootDirectory := r;
 
 p^.Attributes := a;
 
 p^.ObjectName := n;
 
 p^.SecurityDescriptor := s;
 
 p^.SecurityQualityOfService := nil;
end;

function 
ImageDynamicallyRelocated(siiTSectionImageInformation): Boolean;
asm
  MOVZX EAX
BYTE PTR SS:[sii.ImageFlags]
 
 SHR AL2
  AND EAX
1
end
;

function 
CheckASLR(const FileNameWideStringout bASLRBoolean): NTSTATUS;
var
 
 statusNTSTATUS;
 
 hFilehSectionTHandle;
 
 iosbIO_STATUS_BLOCK;
 
 oaOBJECT_ATTRIBUTES;
 
 usTUnicodeString;
 
 siiTSectionImageInformation;
begin
  RtlInitUnicodeString
(@usPWideChar('\??\' + FileName));
  InitializeObjectAttributes(@oa, @us, OBJ_CASE_INSENSITIVE, 0, nil);
  status := NtOpenFile(@hFile, FILE_GENERIC_READ, @oa, @iosb, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT);
  if 0 <= status then
  begin
    status := NtCreateSection(@hSection, SECTION_QUERY, 0, 0, PAGE_READONLY, SEC_IMAGE, hFile);
    NtClose(hFile);
    if 0 <= status then
    begin
      status := ZwQuerySection(hSection, SectionImageInformation, @sii, sizeof(sii), 0);
      NtClose(hSection);
      if 0 <= status then
      begin
        bASLR := ImageDynamicallyRelocated(sii);
      end;
    end;
  end;
  Result := status;
end;

end. 


الملفات المرفقة
.rar   ASLR Checker(bin).rar (الحجم : 158.1 ك ب / التحميلات : 7)
.rar   uCheckASLR.rar (الحجم : 1.6 ك ب / التحميلات : 4)
سبحان الله وبحمده سبحان الله العظيم
الرد


الردود في هذا الموضوع
Check if ASLR is enabled - بواسطة Agmcz - 28-12-2017, 03:18 AM
RE: Check if ASLR is enabled - بواسطة مبرمج حر - 07-01-2018, 02:17 PM
RE: Check if ASLR is enabled - بواسطة Agmcz - 07-01-2018, 11:34 PM
RE: Check if ASLR is enabled - بواسطة Agmcz - 08-04-2018, 01:34 PM
RE: Check if ASLR is enabled - بواسطة Agmcz - 01-05-2018, 02:52 AM
RE: Check if ASLR is enabled - بواسطة Agmcz - 01-05-2018, 03:31 PM
RE: Check if ASLR is enabled - بواسطة Agmcz - 16-05-2018, 01:16 AM
RE: Check if ASLR is enabled - بواسطة Agmcz - 30-05-2018, 06:45 PM
RE: Check if ASLR is enabled - بواسطة Agmcz - 11-06-2018, 02:04 AM
RE: Check if ASLR is enabled - بواسطة AX302 - 11-06-2018, 05:11 AM
RE: Check if ASLR is enabled - بواسطة Agmcz - 11-06-2018, 05:22 AM
RE: Check if ASLR is enabled - بواسطة Agmcz - 05-10-2019, 12:40 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم