Basta colocar o Address e o processo do jogo (.exe) no caso
Código:
// Declare na Uses TLHelp32
function GetPidName(ProcessName : string):WORD;
var
Process : DWORD;
ProcessEntry : TProcessEntry32;
begin
Result := 0;
ProcessEntry.dwSize := SizeOf(TProcessEntry32);
Process := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (Process32First(Process, ProcessEntry)) then
repeat
if (lstrcmpi(ProcessEntry.szExeFile,PChar(ProcessName )) = 0) then
begin
Result := ProcessEntry.th32ProcessID;
Exit;
end;
until (not Process32Next(Process, ProcessEntry));
end;
procedure ChangePrivilege(szPrivilege: PChar; fEnable: Boolean);
var
NewState: TTokenPrivileges;
luid: TLargeInteger;
hToken: THandle;
ReturnLength: DWord;
begin
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, szPrivilege, luid);
NewState.PrivilegeCount := 1;
NewState.Privileges[0].Luid := luid;
if (fEnable) then
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
NewState.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, NewState, SizeOf(NewState), nil, ReturnLength);
CloseHandle(hToken);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ChangePrivilege('SeDebugPrivilege',True);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
PID : DWORD;
hProc: DWORD;
Value1,Value2 : Integer;
Written : DWORD;
Buffer : Byte;
begin
PID:= GetPidName(Edit1.Text); // Nome do processo
if PID<>0 then
begin
hProc:= OpenProcess(PROCESS_ALL_ACCESS,false,PID);
Value1:= 1;
ReadProcessMemory(hProc,Ptr($0072B5BC6),@Buffer,2,Written);
if Buffer = $0D then
begin
WriteProcessMemory(hProc,Ptr($00000),@Value1,2,Written);
ExitProcess(0);
end;
CloseHandle(hProc);
end;
Observações:
- Ele não remove os privilégios do jogo, ele adiciona a si mesmo o privilégio de debugar
- Serve para qualquer game
Créditos: