Devil9313 Опубликовано 22 февраля, 2015 Поделиться Опубликовано 22 февраля, 2015 Здравствуйте у меня такой вопрос как можно прочитать значение по статическому адресу ? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 февраля, 2015 Поделиться Опубликовано 22 февраля, 2015 procedure TForm1.Button4Click(Sender: TObject); var HP:THandle; wread:Cardinal; bb:LongInt; begin HP := OpenProcess(PROCESS_VM_READ,False,StrToInt(LabeledEdit1.Text) {PID}); LabeledEdit3.Text := IntToStr(HP);{Хэндл} ReadProcessMemory(HP,Ptr($21292BD8){найденный адрес},@bb,4,wread); Edit2.Text := IntToStr(bb); end; 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Devil9313 Опубликовано 22 февраля, 2015 Автор Поделиться Опубликовано 22 февраля, 2015 GameID: Cardinal;Const No_Reload = $00491E4F;implementation{$R *.dfm}function GetProcess(ProcessName: string): Cardinal;var hSnap: THandle; prEntry: PROCESSENTRY32;begin Result := 0; hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); prEntry.dwSize := SizeOf(prEntry); If Process32First(hSnap,prEntry) then begin While Process32Next(hSnap,prEntry) do Begin If prEntry.szExeFile = ProcessName then Result := Cardinal(prEntry.th32ProcessID); End; end; CloseHandle(hSnap);end;procedure WriteSig(GameID: Cardinal; Address: Integer; Value: array of Byte);var pHandle: LongInt; NumWritten: SIZE_T;begin pHandle := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,False,GameID); WriteProcessMemory(pHandle,Ptr(Address),@Value,SizeOf(Value),NumWritten); CloseHandle(pHandle);end;procedure TForm1.SpeedButton1Click(Sender: TObject);const No_ReloadOn: array[0..2] of Byte = ($90, $90, $90);//Байты для записи в процесс игры No_ReloadOFF: array[0..2] of Byte = ($8B, $47, $24);//Байты для записи в процесс игрыbegin WriteSig(GameID,No_Reload,No_ReloadOn);//Пример записи байт в памятьEnd;procedure TForm1.SpeedButton2Click(Sender: TObject);begin GameID := GetProcess('PlantsVsZombies.exe');//Получаем ID процесса по названию процесса Label1.Caption := IntTostr(GameID);end; Вот исходник трейнерНужно прочитать значение с этого адреса 00491E4FМне кто нибудь поможет ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 февраля, 2015 Поделиться Опубликовано 23 февраля, 2015 Тебе постом выше написали, как делать чтение из адреса. В чем проблема? Ссылка на комментарий Поделиться на другие сайты Поделиться
Devil9313 Опубликовано 24 февраля, 2015 Автор Поделиться Опубликовано 24 февраля, 2015 Это не совсем то что нужно но я уже сам сделал ! Ссылка на комментарий Поделиться на другие сайты Поделиться
DenkA003 Опубликовано 24 февраля, 2015 Поделиться Опубликовано 24 февраля, 2015 Здравствуйте у меня такой вопрос как можно прочитать значение по статическому адресу ? https://www.youtube.com/watch?v=sRaynofJO1U 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
∟DarkPan Опубликовано 23 марта, 2015 Поделиться Опубликовано 23 марта, 2015 (изменено) function readInteger(GHandle: THandle; Address: Pointer): Integer;var read: SIZE_T;begin ReadProcessMemory(GHandle, Pointer(Address), @Result, SizeOf(Result), read);end;procedure onTest;var value: integer; begin value := readInteger(Gamehandle, Pointer($FFFFFFFF)); ShowMessage(inttostr(value)); end; Изменено 23 марта, 2015 пользователем ∟DarkPan 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения