this slowpoke moves

Get System Files in Ram

Wenn Windows hochfährt, werden viele Systemdateien in den Arbeitsspeicher geladen. Dateien wie EXE, SYS und DLL. Der folgende Code zeigt, welche dieser Dateien geladen werden. Denn es kommt auch vor, dass externe Programme, die eigentlich nicht zum System gehören, mitgeladen werden, obwohl man sie im Autostart deaktiviert hat.

Das kann nützlich dazu sein, um zu wissen, welche Programme im Hintergrund laufen, von denen man gar nicht möchte, dass sie laufen.

Der Code liefert die Speicheradresse und den Pfad der Datei wieder, die aktiv sind.
const
  DRIVER_INFORMATION = 11;

type
  TPDWord = ^DWORD;
  TDriverInfo = packed record
    Address: Pointer;
    Unknown1: DWORD;
    Unknown2: DWORD;
    EntryIndex: DWORD;
    Unknown4: DWORD;
    Name: array [0..MAX_PATH + 3] of Char;
 end;

//

function GetSysRAMInfo: string;
  var
    temp, Index, numBytes, numEntries: DWORD;
    buf: TPDword;
    driverInfo: ^TDriverInfo;
  begin
    if @NtQuerySystemInformation = nil then
      NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),
        'NtQuerySystemInformation');

    // Obtain required buffer size
    NtQuerySystemInformation(DRIVER_INFORMATION, @temp, 0, @numBytes);
    // Allocate buffer
    buf := AllocMem(numBytes * 2);

    NtQuerySystemInformation(DRIVER_INFORMATION, buf, numBytes * 2, @numBytes);
    numEntries := buf^;
    driverInfo := Pointer(DWORD(buf) + 12);
    Result     := '';
    for Index := 1 to numEntries do
    begin
      Result := Result + #$D#$A + 'Memory Address : $' + IntToHex(DWORD(driverInfo^.Address), 8) +
        ' = Name: "' + (driverInfo^.Name) + '"';
      Inc(driverInfo);
    end;
    Delete(Result, 1, 2);
    FreeMem(buf);
 end;
Beispiel :
procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.Add(GetSysRAMInfo);
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate