Bide trainer yazmakla ilgili bir şeyler yazılmış biraz bir şeyler karalıyayım dedim...
Bunu bir kaç şekilde yapabilirsiniz...
Mesela trainer yazacağınız oyunun windowtitle ı sabitse bu yöntemle handle numarasını alıp process e müdahale edebilirsiniz.Eğer sabit değilse çalışan process leri tarayıp dosya ismini bulmalısınız.Her ikisinede değineyim biraz.
Kod: Tümünü seç
const
PaTcH: array [0..1] of byte = ($90, $90); //Ben sadece nop olarak ayarladım.Byte uzunluğunu istediğiniz gibi ayarlayabilirsiniz
var
ExeName: string;
w: word;
x: cardinal;
HandleWindow, Tid, Pid: integer;
MyHandle: Thandle;
Struct: TProcessEntry32;
begin
//Eğer title sabitse
ExeName := 'Pencere başlığı';
HandleWindow := FindWindow(nil, ExeName);
if HandleWindow = 0 then raise exception.create('Açıkta bir şey bulamadık');
Tid := GetWindowThreadProcessid(HandleWindow, @Pid);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,Pid);
WriteProcessMemory(HandleWindow, Pointer($00422523), @PaTcH, 2, w);
//Title sabit değilse
ExeName := 'Program exe ismi';
MyHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize := Sizeof(TProcessEntry32);
while Process32Next(Myhandle, Struct) do
begin
if AnsiContainsStr(UpperCase(Struct.szExeFile), UpeerCase(ExeName)) = true then //Exe ismine bakalım
begin
HandleWindow := HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,Struct.th32ProcessID);
Break;
end;
end;
WriteProcessMemory(HandleWindow, Pointer($00422523), @PaTcH, 2, w);
CloseHandle(HandleWindow);
end;
Gerisi size kalmış....
Kolay gelsin...