Paylaşım için teşekkürler. Hoşuma giden bazı kodları delphiye çevirdim. Belki birilerinin işine yarar;

Uses
 AclApi,accctrl,Tlhelp32;

procedure SetPermissions;
var
 pDACL: PACL;
 denyAccess: PEXPLICIT_ACCESS_A;
// R: DWORD;
 ProcessHandle: HWND;
 FProcessEntry32: TProcessEntry32;
 dwAccessPermissions :DWORD ;//GENERIC_WRITE | PROCESS_ALL_ACCESS | WRITE_DAC | DELETE | WRITE_OWNER | READ_CONTROL;
begin
 try
  ProcessHandle:=OpenProcess(PROCESS_SET_INFORMATION , false, FProcessEntry32.th32ProcessID);
  denyAccess := AllocMem(SizeOf(EXPLICIT_ACCESS));
  dwAccessPermissions := GENERIC_WRITE and PROCESS_ALL_ACCESS and WRITE_DAC and WRITE_OWNER and READ_CONTROL;
  BuildExplicitAccessWithName(denyAccess,'CURRENT_USER',dwAccessPermissions,DENY_ACCESS, NO_INHERITANCE);
  SetEntriesInAcl(1, denyAccess, nil,pDACL);
  SetSecurityInfo(ProcessHandle, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil);
  {
   R := SetEntriesInAcl(1, denyAccess, nil,pDACL);
   if R = ERROR_SUCCESS then
   begin
    if SetSecurityInfo(ProcessHandle, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil) <> ERROR_SUCCESS then ShowMessage('SetNamedSecurityInfo failed: ' + SysErrorMessage(GetLastError));
    LocalFree(Cardinal(pDACL));
   end
   else
    ShowMessage('SetEntriesInAcl failed: ' + SysErrorMessage(R));    }
 finally
  LocalFree(Cardinal(pDACL));
	SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
  CloseHandle(ProcessHandle);
 end;
end;
Procedure ErasePEHeaderFromMemory;
Var
 OldProtect : dword ;
Begin
 OldProtect := 0;
 VirtualProtect(Pointer(400000),4096 ,PAGE_NOACCESS, @OldProtect);
End;