Hallo,
ich klemme gerade an der Stelle, dass nun so wirklich garnichts geht außerhalb des Prozesses (XP SP2, als Admin).
Ich rufe OpenProcess folgendermaßen auf:
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
dabei bekomme ich, wenn ich mit PID := GetCurrentProcessID arbeite, bei ReadProcessMemory nur einen Berg Gerümpel und sobald ich einen Fremdprozess aufrufe ist GetLastError = 87 (ungültige Parameterkombination "The parameter is incorrect.").
Zuvor setze ich mit
Delphi-Quellcode:
function EnableTokenPrivilege(pszPrivilege: LPCTSTR): Boolean;
var
hToken : THandle;
tkp :_TOKEN_PRIVILEGES;
ReturnLength: Cardinal;
begin
hToken := 0;
tkp.PrivilegeCount := 0;
result := false;
// Get a token for this process.
if not _OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, @hToken)
then begin writeln('Cannot open current process token.'); exit; end;
// Get the LUID for the privilege.
if(LookupPrivilegeValue(LP_SYSTEM_NAME_LOCAL, pszPrivilege,tkp.Privileges[0].Luid)) then
begin
tkp.PrivilegeCount := 1; // one privilege to set
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Set the privilege for this process
_AdjustTokenPrivileges(hToken,false, @tkp,
sizeof(TOKEN_PRIVILEGES),PTOKEN_PRIVILEGES(nil), @ReturnLength);
if (GetLastError() <> ERROR_SUCCESS) then begin writeln('Adjusting token privileges failed.'); exit; end;
end;
result := true;
end;
das Privileg SE_DEBUG_NAME = 'SeDebugPrivilege'#0 (was auch zu funktionieren scheint). (Übersetzt von
hier)
------------------------------------------------
Nun, wie setze ich die Debuggingrechte?