03-04-2020, 01:56 PM
كود :
function GetProcessIsBeingDebugged(ProcessHandle: THandle; var IsBeingDebugged: Boolean): Boolean;
var
DebugPort: PVOID;
TargetProcessHandle: THandle;
SourceProcessHandle: THandle;
DuplicateResult: BOOL;
DesiredAccess: ACCESS_MASK;
begin
Result := False;
try
if (@NtQueryInformationProcess <> nil) then
begin
DuplicateResult := False;
TargetProcessHandle := 0;
DuplicateResult := DuplicateHandle(GetCurrentProcess(), ProcessHandle, GetCurrentProcess(), @TargetProcessHandle, 0, False, DUPLICATE_SAME_ACCESS);
if DuplicateResult then
begin
try
if NtQueryInformationProcess(
TargetProcessHandle,
7,
@DebugPort,
SizeOf(PVOID),
nil
) = 0 then
Result := True;
if DebugPort <> nil then
IsBeingDebugged := True;
finally
if TargetProcessHandle <> 0 then
CloseHandle(TargetProcessHandle);
end;
end;
end;
except
end;
end;
