Перейти к содержанию

[Delphi-Сигнатуры] Помогите Практическими Знаниями


Рекомендуемые сообщения

Всем привет... 

Надеюсь многие помнят как я старался изучить принцеп работы с сигнатурами, что выходило у меня очень плохо...

потом наступило лето... я как то забросил тему... но сейчас все таки я ЖАЖДУ ЗНАНИЙ... и прошу вас доучить меня...пожалуйста)

 

И так, наш испытуемый... допустим 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 ибо, я так понял это доп. библиотеки(поиск гугл не помог их найти для скачивания).

 

 

ПОЖАЛУЙСТА, РАССКАЖИТЕ ГДЕ Я ОШИБСЯ И ИСПРАВЬТЕ МЕНЯ  

Ссылка на комментарий
Поделиться на другие сайты

Исходники с недостающими файлами из темы по программироваию трейнеров на Дельфи.

Еще вроде здесь обновленные файлы.

спасибо.

А сигнатуры я правильно ищу? Мне кажется я что то забываю делать... какие то ?? ставить и т.п

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.