FarmHitman
-
Постов
10 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные FarmHitman
-
-
Так вообще даже у меня не работает
-
Я просто код копировал с 1 поста этой темы, не заметил 1 в GetMem(buf,1);
Если я правильно понимаю надо 1 поменять на 4 ? или вообще убрать эту часть кода?
-
GetMem(buf,1);
buf^ := Chr(PokeValue);
If buf = 0 then
begin
MessageBox(win,'Error!'+#13+#10+
'Buffer is empty.','Ошибка',MB_OK or MB_ICONINFORMATION);
end;
На выделенную строчку ругается... Operator not applicable to this operand type
-
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageBox(win,'Игра должна быть запущенна до трейнера.'+#13+#10+
' Запустите её,а потом трейнер','Ошибка',MB_OK or MB_ICONINFORMATION);
end;
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
If ThreadID := 0
then begin
ShowMessage('ThreadID.');
end;
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
if HandleWindow = 0
then begin
Show Message('HandleWindow');
end;Как я понял эту часть надо сделать так, а дальше как сделать? Можно код плиз?
GetMem(buf,1);
buf^ := Chr(PokeValue);
WriteProcessMemory(HandleWindow,ptr(Address),buf,NumberOfBytes,write);
FreeMem(buf);
-
Я написал 2 примера кода, ни 1 из них на указанных ОС не работают.
п. 1 не подходит, не понял пункты 3, 5 и 6 а п.4 не думаю что не успевает, если только на некоторых ОС не работает, антивируса нету.
-
var
WindowName: integer;
ProcessId: integer;
ThreadId: integer;
HandleWindow: Integer;
write: cardinal;
buf: dword;
const
WindowTitle = 'Name';
Address = $007B5678;
NumberOfBytes = 4;
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then begin
MessageDlg('Игра должна быть запущена до трейнера. Запустите ее, потом трейнер', mtwarning,[mbOK],0);
end;
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
buf:=$0;
WriteProcessMemory(HandleWindow, ptr(address), @buf, 4, write);
end;Можно и в таком варианте:
var
WinClass : TWndClass;
hInst: HWND;
Handle: HWND;
Msg: TMSG;
hFont: HWND;
win: hwnd;
WindowName: integer;
ProcessId: integer;
ThreadId: integer;
buf: PChar;
HandleWindow: Integer;
write: cardinal;
const
WindowTitle= 'Name';
Address= $007B5678;
PokeValue= $0;
NumberOfBytes= 4;
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageBox(win,'Игра должна быть запущенна до трейнера.'+#13+#10+
' Запустите её,а потом трейнер','Ошибка',MB_OK or MB_ICONINFORMATION);
end;
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
GetMem(buf,1);
buf^ := Chr(PokeValue);
WriteProcessMemory(HandleWindow,ptr(Address),buf,NumberOfBytes,write);
FreeMem(buf);
CloseHandle(HandleWindow);
end;У большинства людей работает.
Не работает на: Win 7 x32 Максимальная, Win 7 x64 Ultimate
Работает на: Win XP SP2 x32, Win XP SP3 x32, Win 7 x64 Домашняя, Win 7 x64 Максимальная...
Адреса были проверены через CheatEngine, соответственно на компьютере где не работает.
-
Еще вопрос Почему на некоторых ОС не работает трейнер? Т.е. адреса все совпадают, но на нажатие кнопки никак не реагирует?
-
Разобрался, спс. А как можно в текст вывести?
ReadProcessMemory(HandleWindow, ptr($01162420), @bb, 4, wread);
На что это поменять надо?
-
Как можно сделать программу, чтобы, к примеру, в Label показывалось мое кол-во жизней в игре?
PS: Адрес есть...
Создаем Трейнер В Delphi, Используя Winapi
in Высокоуровневое программирование
Опубликовано
Ага, с правами админа заработала, только не много в другую сторону Надо код проверять... Ладно, спасибо за помощь, дальше придется с кодом мучаться...