-
Постов
90 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент ArxLex
-
Понятно. Таких вопросов больше не будет, надеюсь
-
А есть такой инструмент, которым можно было взломать онлайн игры (Счастивый фермер, Парковка и др.)?
-
Я хотел бы узнать подробно как в Дельфях написать в прогу антиотладочные хитрости. Например, если у вас во время запуска трейнера уже запущены отладочные проги(такие как: Cheatengine, OllyDbg, MHS и другие подобные отладчики), то как сделать так чтобы трейнер ругался и молча закрывал их или вообще не запускался?
-
Лично мне не удалось скачать трейнер от автора aliast, так как ссылка не рабочая (http://www.filehoster.ru)
-
Не важно как ты искал, но я таким образом вышел на адреса жизни и брони
-
чтобы найти значение здоровья ищи float. само значение жизней и брони и тд смотри в профилях игрока.
-
Вот отсюда я обычно качаю трекерную музыку http://www.chiptune.com/
-
Принципы работы с OllyDbgКак запустить сеанс отладки
- 4 ответа
-
- 2
-
-
Нет ничего сложного, просто в проект подключаете модуль uFMOD и всё
-
Незнаю, но при выборе сохранить или уничтожить базу Коллекционеров все равно кто-то умирал (при разных обстоятельствах...). Там в мульте даже есть два гроба... А насчет опыта и поинтов, советую скачать Save Editor для Mass Effect 2 который валяется на GameCopyWorld
-
Если честно игра интересная, прошел её за 28 часов. Насчет умений как-то я не особо обратил внимание. Главное много бабла, очки команды и ресурсы))) Как я понял без разницы какая концовка игры, всё равно кто-то из команды умирает...
-
Вот ещё один пример трейнера для игры WarRock: DLL: functions.cpp #include "stdafx.h" #include "functions.h" DWORD dfgiddfg; HANDLE dfgdsgdsg; void OpenMemory() { HWND frgss = FindWindow(0, "WarRock"); GetWindowThreadProcessId(frgss, &dfgiddfg); dfgdsgdsg = OpenProcess(PROCESS_ALL_ACCESS|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, dfgiddfg); } void Stamina() { int t=1120403456; OpenMemory(); WriteProcessMemory(dfgdsgdsg,(LPVOID*)(DWORD)0x8B9B04, &t , 4,NULL); } void Teleport(float x, float y, float z) { long raddyx, raddyy, raddyz; // Real address of coordinates long readxyz; // Read base address ReadProcessMemory(dfgdsgdsg,(LPVOID*)(DWORD)0x1279280, &readxyz, 4,NULL); raddyx = readxyz + 0x174; raddyy = readxyz + 0x17C; raddyz = readxyz + 0x178; WriteProcessMemory(dfgdsgdsg,(LPVOID*)(DWORD)raddyx, &x , 4,NULL); WriteProcessMemory(dfgdsgdsg,(LPVOID*)(DWORD)raddyy, &y , 4,NULL); WriteProcessMemory(dfgdsgdsg,(LPVOID*)(DWORD)raddyz, &z , 4,NULL); } functions.h #pragma once void Stamina(); void Teleport(float x, float y, float z); LH1337DLL.def LIBRARY LH1337DLL EXPORTS Stamina Teleport EXE: LH1337EXEDlg.cpp HINSTANCE hDLL = NULL; // 1) Teleport typedef void (*STAMINA)(); STAMINA Stamina; // 2) Teleport typedef void (*TELEPORT)(float x, float y, float z); TELEPORT Teleport; OnInitDialog() hDLL = AfxLoadLibrary("LH1337DLL"); if( hDLL == NULL ) { MessageBox("Could not load LH1337DLL.dll"); } else { Stamina = (STAMINA)GetProcAddress(hDLL, "Stamina"); Teleport = (TELEPORT)GetProcAddress(hDLL, "Teleport"); } BN_CLICKED Stamina Stamina(); BN_CLICKED Teleport UpdateData(1); Teleport(m_cox, m_coy, m_coz); Источник: mpgh.net
-
В этой теме будут выкладываться примеры трейнеров написанные на языке Ассемблер. Тема будет периодически обновляться))) Необходимые инструменты: - MASM32 v10 - WinAsm v5.1.5 + WinAsm v5.1.7 патч Установка и настройка: 1. Первым делом вам надо установить MASM32, который вы можете скачать по ссылке ниже. - Скачайте и запустите файл install.exe - Выберите диск где будет установлен MASM32 - Далее нажмите на кнопку Start -> Ok -> Yes -> Ok -> Extract - > Ok 2. Установка WinAsm и патча: - Распакуйте папку WinAsm из архива (WinAsm515Full) в папку где вы установили MASM32 - Для установки патча просто распакуйте файлы из архива (WinAsm_V5.1.7.0) в папку WinAsm 3. Настройка WinAsm: - Запустите файл WinAsm.exe из папки WinAsm - Затем Tools -> Options -> Files&Paths -> Projects Path - Тут вы увидете x:masm32WinAsm - Просто в конце добавьте Projects (x:masm32WinAsmProjects) Удаление: - Просто удалите папку MASM32 Сами инструменты и исходники вы можете взять отсюда: http://letitbit.net/download/8716.fe8ed ... es.7z.html
-
Пример простого трейнера на С++: Инструкция: - Скопируйте данный код в блокнот и сохраните как trainer.cpp или как вам угодно - Для компиляции вам понадобится компилятор для C++, такие как MS Visual C++ 6 или выше #include <windows.h> #include <conio.h> #include <dos.h> #include <tlhelp32.h> #include <stdio.h> int stamina; // will store the stamina value bool dostamina = false; // determines if user activated stamina freezing LPVOID stamina_addr = (void*) 0x007F1110; // memory address of the stamina value in the WarRock process void screen() // output { system("cls"); // clear the screen printf("Hello World! This is my first WarRock trainer! nn"); if(dostamina) printf("[1] - freeze stamina [ENABLED]n"); // if user enabled stamina freeze, let him know! else printf("[1] - freeze stamina [disabled]n"); // same if it's disabled } int main(int argc, char* argv[]) { HANDLE hProcessSnap; // will store a snapshot of all processes HANDLE hProcess = NULL; // we will use this one for the WarRock process PROCESSENTRY32 pe32; // stores basic info of a process, using this one to read the ProcessID from hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); // make process snapshot pe32.dwSize = sizeof( PROCESSENTRY32 ); // correct size Process32First(hProcessSnap, &pe32); // read info about the first process into pe32 do // loop to find the WarRock process { if(strcmp(pe32.szExeFile, "WarRock.exe") == 0) // if WarRock was found { hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); // open it, assigning to the hProcess handle break; // break the loop } } while(Process32Next(hProcessSnap, &pe32)); // loop continued until Process32Next deliver NULL or its interrupted with the "break" above CloseHandle( hProcessSnap ); // close the handle (just fuckin do it) if(hProcess == NULL) // self explanatory tbh { printf("WarRock not foundnn"); getch(); // wait for a key press. otherwise the app will just close so fast when the process is not found, you wont know wtf happened. } else { screen(); // print the display char key = ' '; // make a key variable to store pressed keys while(key != VK_ESCAPE) // loop until user presses Escape { if(kbhit()) // if a key was pressed { key = getch(); // it is saved into "key" switch(key) // here the commands are handled depending on the key that was pressed { // case '1': ... break; case '2': ... break; and so on case '1': dostamina = !dostamina; // flip the dostamina value true<->false to enable/disable it ReadProcessMemory(hProcess, stamina_addr, &stamina, 4, NULL); // read the stamina value from the memory into the "stamina" variable break; } screen(); // print the display after each key press } if(dostamina) // if stamina freeze is activated WriteProcessMemory(hProcess, stamina_addr, &stamina, 4, NULL); // write the stamina value that was saved before with the key press into memory } CloseHandle(hProcess); // close the handle } return 0; // THE END } Источник: d3scene.com
-
Простой пример трейнера с использованием ToolHelp 32 API: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, tlhelp32, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Timer1: TTimer; Label1: TLabel; Label18: TLabel; Label2: TLabel; procedure Timer1Timer(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; PidHandle: integer; PidID : integer; byteArr : Array of byte; Const ProgramName = 'BF2.exe'; implementation {$R *.dfm} // tlhelp32 function to Loop through processes and locate your target function GetProcessID(Const ExeFileName: string; var ProcessId: integer): boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin result := false; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := Sizeof(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while integer(ContinueLoop) <> 0 do begin if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0) or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then begin ProcessId:= FProcessEntry32.th32ProcessID; result := true; break; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; //Write 1 byte to memory procedure poke1(Address: Cardinal; Data: Byte); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Write 2 bytes to memory procedure poke2(Address: Cardinal; Data: Word); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Write 4 bytes to memory procedure poke4(Address: Cardinal; Data: Cardinal); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Write an Array of bytes to memory procedure pokeX(Address: Cardinal; Data: Array of Byte); var Written: Cardinal; begin WriteProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Written); end; //Example Function Call 1 procedure TForm1.Button1Click(Sender: TObject); begin if GetProcessID(ProgramName, PidId) then begin PidHandle := OpenProcess(PROCESS_ALL_ACCESS,False,PidId); poke1($401000, $90); poke2($401001, $9090); poke4($401003, $90909090); closehandle(PidHandle); end else begin MessageDlg('Start BF2 First.', mtwarning, [mbOK],0); end; end; //Example Function Call 2 procedure TForm1.Button2Click(Sender: TObject); begin if GetProcessID(ProgramName, PidId) then begin PidHandle := OpenProcess(PROCESS_ALL_ACCESS,False,PidId); SetLength(byteArr, 16); byteArr[0] := $8B; byteArr[1] := $71; byteArr[2] := $10; byteArr[3] := $0F; byteArr[4] := $85; byteArr[5] := $6A; byteArr[6] := $9D; byteArr[7] := $FD; byteArr[8] := $FF; byteArr[9] := $83; byteArr[10] := $7E; byteArr[11] := $0C; byteArr[12] := $00; byteArr[13] := $0F; byteArr[14] := $85; byteArr[15] := $60; pokeX($401007, byteArr); SetLength(byteArr, 15); closehandle(PidHandle); end else begin MessageDlg('Start BF2 First.', mtwarning, [mbOK],0); end; end; // Timer to Detect Hotkey and Execute your Buttons Code procedure TForm1.Timer1Timer(Sender: TObject); begin if (GetAsyncKeyState(VK_F1) <> 0) then Button1.Click; end; end. Источник: mpcforum.com
-
Короче почистил я её и вот что получилось: Program Api; uses WindowTrainer; begin WindowCreateTrainer; end. unit WindowTrainer; interface uses windows, messages; procedure WindowCreateTrainer; var window:TWndClassEx; Mwindow: HWND; Mmsg: MSG; implementation function WindowProc (wnd: HWND; msg: integer; wp: WPARAM; lp: LPARAM):LRESULT;STDCALL; begin Result := 0; case msg of WM_CLOSE : PostMessage(wnd, WM_QUIT, 0, 0); else Result := DefWindowProc(wnd, msg, wp, lp); end; end; procedure WindowCreateTrainer; begin window.cbSize := sizeof (window); window.style := CS_HREDRAW or CS_VREDRAW; window.lpfnWndProc := @WindowProc; window.cbClsExtra := 0; window.cbWndExtra := 0; window.hInstance := HInstance; window.hIcon := LoadIcon (0,IDI_APPLICATION); window.hCursor := LoadCursor (0,IDC_ARROW); window.hbrBackground:=Color_BtnFace+12; window.lpszMenuName := nil; window.lpszClassName := 'frmTrainer'; RegisterClassEx (window); Mwindow := CreateWindowEx(0,'frmTrainer', 'Demo Window', WS_OVERLAPPEDWINDOW - WS_MAXIMIZEBOX+ WS_EX_TOOLWINDOW- WS_THICKFRAME,100,100,300,300,0,0,Hinstance,nil); SHOWWINDOW (Mwindow,SW_Show); while GetMessage (Mmsg,0,0,0) do begin TranslateMessage (Mmsg); DispatchMessage (Mmsg); end; end; end. П.С. С модулем ...uses Forms... приложение с размером 16 кб никогда не получится
-
Оочень интересно! Продолжай в том же духе