Maxs

Пользователи
  • Публикации

    48
  • Зарегистрирован

  • Посещение

  • Days Won

    2

Maxs last won the day on June 9 2014

Maxs had the most liked content!

Репутация

6 Lamer

О Maxs

  • Звание
    Продвинутый пользователь
  1. спасибо. А сигнатуры я правильно ищу? Мне кажется я что то забываю делать... какие то ?? ставить и т.п
  2. Всем привет... Надеюсь многие помнят как я старался изучить принцеп работы с сигнатурами, что выходило у меня очень плохо... потом наступило лето... я как то забросил тему... но сейчас все таки я ЖАЖДУ ЗНАНИЙ... и прошу вас доучить меня...пожалуйста) И так, наш испытуемый... допустим 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 ибо, я так понял это доп. библиотеки(поиск гугл не помог их найти для скачивания). ПОЖАЛУЙСТА, РАССКАЖИТЕ ГДЕ Я ОШИБСЯ И ИСПРАВЬТЕ МЕНЯ
  3. Добрый день, форумчани Я вернулся... Я нашел интересную статью ... создание библиотеки - чита для GTA VC Вот код: library MoneyAdds;{ GTA-VC 1.1 Плагин для добовления денег }uses Windows;type // определяем свой тип (указатель целых чисел) P_Integer = ^Integer;var GTA_VC_Handle : THandle; CurrentMoney : Integer; keyUp : boolean;const // тут твой найденный адрес «денег» Address_Money = $0094ADD0;{$E .asi}//—- Эта процедура будет вызываться таймером —procedure Timer_begin;begin // Нажатие и отпуск «M» if not GetKeyState($4D) < 0 then keyUp := true; if (GetKeyState($4D) < 0) and (keyUp = true) then begin // Читаем деньги из GTA-VC и присваиваем в CurrentMoney CurrentMoney := P_Integer(Address_Money)^; // Записываем 1000 + текущие деньги P_Integer(Address_Money)^ := CurrentMoney + 1000; keyUp := false; endend;//———————————————————–begin GTA_VC_Handle := FindWindow(nil,’GTA: Vice City’); if GTA_VC_Handle <> 0 then begin SetTimer(GTA_VC_Handle,0,25,@Timer_begin); end;end. Ссылка на статью - перейти Ссобственно код работает, но есть вопросы: 1. Как быть если адрес DMA (пример), теоритически можно работать с оффсетами или сигнатурой, но теоретически я затрудняюсь это реализовать. 2. Есть какой нибудь небольшой хук Direct9 под Delphi?
  4. Создавать новую тему не хочу, но появилась проблема, оказалось, что адреса не ДМА(хотя они были зеленые)... получается нужно использовать AOBscan... но для этого нужно найти нужную инструкцию... но при ... "отладки" выдается over9000 процессов(инструкций). Как быть? Неужели надо использовать старую систему с оффсетами? :/
  5. Здравствуйте, однафорумчани. Давно не виделись, но думаю это не так важно... У меня след. проблема: Поискав статьи по созданию трейниров(для не-DMA игр, такие как серия GTA), удалось собрать код который меняет значение переменной на тип integer 4 байта... Короче... Если допустим у нас адрес $0001 имеет тип float = 100.05, то мой код может его менять на целые числа типо 100 или 101. Как сделать чтобы изменение было на дробное значение? Вот мой код: var Form1: TForm1; WindowName : integer; ProcessId : integer; ThreadId : integer; buf : PChar; HandleWindow : Integer; write : cardinal; Const WindowTitle = 'GTA:SA'; Address = $11AEC484; PokeValue = $32; NumberOfBytes = 4; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); 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); GetMem(buf,1); buf^ := Chr(PokeValue); WriteProcessMemory(HandleWindow,ptr(Address),buf,NumberOfBytes,write); FreeMem(buf); CloseHandle(HandleWindow); end; end. ///write : cardinal; только в делфи7 работает
  6. Можно где этот код юзануть? [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat label(xlivekiller) registersymbol(xlivekiller) aobscan(aobxlive,74 14 FF 75 14 8B CE FF 75 10 53 E8 * * * * 8B F8 85 FF) aobxlive: xlivekiller: db EB 14 [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) xlivekiller: db 74 14 unregistersymbol(xlivekiller)
  7. не можешь понять работу функции? лол. Чувак, прости, но чтобы писать трейнера на делфи нужно знать хотябы основы, а не "курить" их.
  8. Нет? http://forum.gamehacklab.ru/forum/4-вопросы-по-созданиюпрограммированию-трейнеро ладно, помогу чем смогу я сегодня добрый Uses tlhelp32 ... var hSnap:THandle; pe:TProcessEntry32; pid: DWORD; begin pe.dwSize:=SizeOf(pe); hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); If Process32First(hSnap,pe) then While Process32Next(hSnap,pe) do if ExtractFileName(pe.szExeFile)='mRemote.exe' then showmessage(IntToStr(pe.th32ProcessID)); Адрес процесса называется PID в простонародье...
  9. Добрый день. Вот, от меня типичный вопрос с подковыркой. Недавно купил по акции в стиме ГТА 4 с эпизодами. Решил заново пере проходить(может в мультик сыграть), но не суть. Хотел на ИЗИ взломать себе бабок ... но не тут то было. На адресе стоит какой-то античит который возвращает старое значение назад, а при чтение доступа к адресу игра вылетает через 3 секунды. Как быть? Чем лечить, чтобы без последствий? Нашел какую-то тему по кряку Xlive... http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles/243-xlive Но боюсь при юзинге бан получить...
  10. А все таки как записывать такую структуру с вопросиками в делфи?
  11. Спасибо большое за видео(плюсик кинуть не могу - пишет лимит)... Но, реально большое спасибо, теперь хоть как нибудь смогу разобраться! Единственное, я не понял зачем ставить ?? вместо байт? Кто расскажет суть? Когда я буду писать массив в паскале, мне что писать примеру массив байт {5a, 3a, ??, ??, 2d} заменить на {3a, 5a, ??, ??, 2d }?
  12. В общем, в долгих поисках... я ничего так и не нашел, даже и не понял... Делал так: 1. Открыл GTA:SA 2. Открыл CE 6.3 3. Нашел адрес денег (gta_sa.exe+77CE50) похоже он DMA(так как зеленый). П.С. Может нельзя найты байты в неDMA играх? Или как? Если в гта так нельзя, приведите другой пример. 4. Изменил количество денег, адрес оказался рабочий... Теперь самое главное!!! Где найти байты и от какого адреса их читать? Если я правильно понял... 5. Я жму на адрес и прошу открыть регион памяти... но там так все страшно...