Maxs Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 Всем привет... Надеюсь многие помнят как я старался изучить принцеп работы с сигнатурами, что выходило у меня очень плохо...потом наступило лето... я как то забросил тему... но сейчас все таки я ЖАЖДУ ЗНАНИЙ... и прошу вас доучить меня...пожалуйста) И так, наш испытуемый... допустим GTA SA (она у многих тут есть)Возьмем базуку и найдем какая процедура отвечает за отнимание патрон(снарядов)...Опа, нашли ... dec [esi+0C]Переходим в отладчик и ищем сигнатуру...Переходим на адрес процедуры, а именно 007428E6и видим байты ... ну сигнатуру вроде как... я так и не понял, правильно я делаю или нет... в оригинале сигнатура выглядит такFF 4E 0C 8B 46 08 85 C0 C7 46 04 01 00 00 00 0FКогда мы нопаем 90 90 90 8B 46 08 85 C0 C7 46 04 01 00 00 00 0F Значит надо заменить FF 4E 0C 8B на 90 90 90 8B .... http://radikal.ru/fp/4c89087b6f254812bfaf292de99975ce (картинка - скриншот) Юзаю поиск по форуму и нахожу код на делфи...unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, MemoryProtect , Metrik , Process , MemoryUse, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; prID: Cardinal; Process : TProcess; MemProtected : TMemProtected; //Процедура записи байт в процесс игрыprocedure WriteSignatyre(GameID: Cardinal; PokeAddr: Integer; PokeVal: array of Byte);var pHandle:LongInt; numwritten:SIZE_T;//Если не будет ошибка заменить SIZE_T на Cardinalbegin pHandle:=OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,false,GameID); WriteProcessMemory(pHandle,ptr(PokeAddr),@PokeVal,SizeOf(PokeVal),numwritten); CloseHandle(pHandle);end;//Процедура получения ID зная название процессаfunction GetProcess(FileName: 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 = FileName then Result:=Cardinal(prEntry.th32ProcessID); End; end; CloseHandle(hSnap); end;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);const ProcessName='gta_sa.exe';//Процесс Игры Adress = $007428E6 ; //Адрес по которому будет производиться запись сигнатуры байт SignatyreOn: array[0..3] of Byte = ($FF,$4E,$0C,$8B);//Байты для записи в процесс игры SignatyreOFF: array[0..3] of Byte = ($90,$90,$90,$8B);//Байты для записи в процесс игрыbeginMemProtected := TMemProtected.Create(Process,Adress,Length(SignatyreOn));prID:=GetProcess(ProcessName);//Получаем ID процесса по названию процессаMemProtected.UnProtectPage;WriteSignatyre(prID,Adress,SignatyreOn);//Пример записи байт в памятьMemProtected.UnProtectPage;MemProtected.Destroy;sleep(500);End;procedure TForm1.Button4Click(Sender: TObject);beginend;// Указываем процесс игры при старте нашего приложенияprocedure TForm1.FormCreate(Sender: TObject);begin Process:=TProcess.Create('gta_sa.exe');end;end. Компиляция не удалась... компилятор не знает MemoryProtect , Metrik , Process , MemoryUse, StdCtrls ибо, я так понял это доп. библиотеки(поиск гугл не помог их найти для скачивания). ПОЖАЛУЙСТА, РАССКАЖИТЕ ГДЕ Я ОШИБСЯ И ИСПРАВЬТЕ МЕНЯ Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 октября, 2014 Поделиться Опубликовано 18 октября, 2014 Исходники с недостающими файлами из темы по программироваию трейнеров на Дельфи.Еще вроде здесь обновленные файлы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Maxs Опубликовано 19 октября, 2014 Автор Поделиться Опубликовано 19 октября, 2014 Исходники с недостающими файлами из темы по программироваию трейнеров на Дельфи.Еще вроде здесь обновленные файлы.спасибо.А сигнатуры я правильно ищу? Мне кажется я что то забываю делать... какие то ?? ставить и т.п Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения