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

ArxLex

Пользователи+
  • Постов

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

  • Посещение

  • Победитель дней

    7

Весь контент ArxLex

  1. Интересная статья об выводе и анимации 2D графики на основе WinApi, код примера перевел из C++ на Delphi. Источник на C++: https://api-2d3d-cad.com/2d_winapi_c/
  2. Отличная работа, молодцы ребята! Но я все таки привык к Ctrl+R
  3. Привет всем! Решил поделиться сканером сигнатур написанный мною на Delphi. Материал чисто для ознакомительных целей. В качестве основы и принципа работы были взяты функции с C++. Пример написан для новичков и любителей WINAPI в виде консольного приложения, для большего удобства и понимания кода program signaturescanner;{$APPTYPE CONSOLE}usesWindows, SysUtils, TlHelp32;varm_pID: integer;m_hProc: THandle;module: TModuleEntry32;m_Sign: integer;constprocName = 'D3D9Test.exe';procedure GetPID;varsnapshot: THandle;pInfo: PROCESSENTRY32;beginsnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);pInfo.dwSize := sizeof(PROCESSENTRY32);if (Process32First(snapshot, pInfo)) thenbeginwhile (Process32Next(snapshot, pInfo)) dobeginif pInfo.szExeFile = procName thenbeginm_pID := pInfo.th32ProcessID;CloseHandle(snapshot);exit;end;end;end;m_pID := 0;CloseHandle(snapshot);exit;end;function GetModuleInfo(const module_name: PChar; main_process: boolean): TModuleEntry32;varsnapshot: THandle;module: TModuleEntry32;beginsnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, m_pID);module.dwSize := sizeof(TModuleEntry32);if (Module32First(snapshot, module)) thenbeginif (main_process) thenbeginCloseHandle(snapshot);result := module;end;while (Module32Next(snapshot, module)) dobeginif (StrIComp(PChar(ExtractFileName(module.szModule)), PChar(module_name)) = 0) thenbeginCloseHandle(snapshot);result := module;end;end;end;result := module;end;function DataCompare(data: PByte; sign: PByte; mask: PAnsiChar): boolean;beginwhile mask^ <> #0 dobeginif ((mask^ = 'x') and (data^ <> sign^)) thenbeginresult := false;exit;end;inc(mask);inc(data);inc(sign);end;result := true;end;function ScanSignature(base: Dword; size: Dword; sign: PByte; mask: PAnsiChar): integer;varmbi: MEMORY_BASIC_INFORMATION;offset: integer;buffer: PByte;BytesRead: Dword;i: integer;beginoffset := 0;while (offset < size) dobeginVirtualQueryEx(m_hProc, Pointer(base + offset), &mbi, sizeof(MEMORY_BASIC_INFORMATION));if (mbi.State <> MEM_FREE) thenbeginGetMem(buffer, mbi.RegionSize);ReadProcessMemory(m_hProc, mbi.BaseAddress, buffer, mbi.RegionSize, BytesRead);for i := 0 to mbi.RegionSize dobeginif (DataCompare(buffer + i, sign, mask)) thenbeginFreeMem(buffer);result := integer(mbi.BaseAddress) + i;exit;end;end;FreeMem(buffer);end;offset := offset + mbi.RegionSize;end;result := 0;end;constSign: array [0 .. 22] of byte = ($68, $00, $00, $00, $00, $68, $00, $00, $00, $00, $68, $00, $00, $00, $00, $FF, $15, $00, $00, $00, $00, $6A, $20);Mask = 'x????x????x????xx????xx';beginGetPID();if (m_pID <> 0) thenbeginmodule := GetModuleInfo(nil, true);m_hProc := OpenProcess(PROCESS_ALL_ACCESS, false, m_pID);m_Sign := ScanSignature(integer(module.modBaseAddr), module.modBaseSize, @Sign, Mask);writeln(' *************************************************************');writeln(' * Signature Scanner for Delphi *');writeln(' * Coded by ArxLex (2014) *');writeln(' *************************************************************'+#10#13#10#13);writeln(' Handle Process: $', inttohex(m_hProc, sizeof(m_hProc)));writeln(' Pid: $', inttohex(m_pID, sizeof(m_pID)));writeln(' Process Base Address: $', inttohex(integer(module.modBaseAddr), sizeof(module.modBaseAddr)));writeln(' Process Base Size: $', inttohex(module.modBaseSize, sizeof(module.modBaseSize)));writeln(' Signature Address: $', inttohex(m_Sign, sizeof(m_Sign)));readln;CloseHandle(m_hProc);end;end.P.S. Еще раз спасибо участнику Coder за видео уроки и общее развите гэймхакинга
  4. Этот код уже гуляет по инету с прошлого года (может даже раньше), и причем тут by DenkA003?
  5. Может примерно как то так? Написал по памяти, могут быть ошибки... [ENABLE] alloc(_MemHack, 128) label(_Back) label(_Exit) label(_Health) label(_InstantKill) registersymbol(iToggleHealth) registersymbol(iToggleInstantKill) _MemHack: cmp [iToggleHealth],1 je _Health jmp _InstantKill _Health: cmp [edi+13],#200 jne _InstantKill mov [edi+505],#99999 jmp _InstantKill _InstantKill: cmp [iToggleInstantKill],1 jne _Exit mov [edi+505],0 jmp _Exit _Exit: sub [edi+505],eax jmp _Back iToggleHealth: dd 00 iToggleInstantKill: dd 00 .. [DISABLE] .. unregistersymbol(iToggleHealth) unregistersymbol(iToggleInstantKill)
  6. Привет, все не так уж и сложно, вгляни на вот это...
  7. Расскажи по подробнее о Universal Trainer Cracker, ранее не слышал о таком Все понятно, нашел, это просто аналог WriteProcessMemory Monitor-а
  8. Добавил 64-битную мульти версию трейнера. Спасибо всем кто проверит в работе))) ЗЫ. Еще раз спасибо Coder-у за общую помощь!
  9. Спасибо огромное! Остановился на IDAG64
  10. Какой метод пользуется для внедрения?
  11. Скачал я эту версию, вроде самая свежая, много чего нового. Теперь в списке аттача показывает все запущенные приложения включая 64-битные. Но 64-ные приложения все равно не аттачит и не открывает(Unable to attach to process 'MineSweeper' with ID 00000A88(2696.). Reason: 00000032 (ERROR_NOT_SUPPORTED)). Может я что делаю не так? Coder, ты уверен что OllyDbg может аттачить или открывать 64-битные приложения? Попробуй на стандартном 64-битном Сапере... Зы: Может есть какой другой аналогичный 64-битный дизассемблер с функцией создания сигнатур?
  12. Любопытно какая у тебя сборка OllyDbg? Просто у меня не получается загрузить 64 битную игру через OllyDbg (File: '...' is probably not a 32-bit Portable Executable. Try to load it anyway? - > Yes - > Unable to start file: '...'). А если аттачить, то в списке только x86 процессы... Интересно вот с этим плагином Stealth64 будет работать?
  13. Привет всем! В связи с невозможностью запуска OllyDbg под Windows 7 x64, у меня возникли сложности с созданием сигнатуры в 64 битной памяти игры. Может кто знает другой способ, поделитесь пожалуйста Каждый раз создавать вручную не очень-то удобно и стабильно...
  14. Спасибо за отзывы, разобрался что к чему с помощью MSDN. Теперь есть база и под x64!
  15. Похоже мы не совсем поняли друг друга. Спокойно записывать то смогу, но прыжок будет не туда куда надо. Например есть такой вот скрипт СЕ для 64 битной игры: alloc(newmem,100,"Game_x64.exe"+CB9133) // jmp 13FDC0000 ... и alloc(newmem,100) // jmp qword ptr [140A89139] (comment: 05A60000) ... По первому скрипту прыжок получается туда куда надо, а во втором неизвестно куда. Я хочу понять как это реализовать в C++ (x64-ном проекте). Там похоже как-то связано с выделенным адресом VirtualAllocEx и базовым адресом игры.
  16. Подскажи пожалуйста как правильно и грамотно выделять память в процессе игры x64 бит. Я пытался выделить память с помощью VirtualAllocEx, но возвращяется адрес в виде DWORD т.е. 0x6160000, а должно возвращаться в виде DWORD64 (DWORD_PTR) т.е. 0x106160000. Из за этого прыжок получается неизвестно куда Или в 64 существует иной способ для выделения памяти? В проекте у меня выбрана платформа x64. Система: Win7x64.
  17. В тему, кто нить делал трейнер или подобное для 64 битной версии виндовс на VC++? Отпишитесь...
  18. Хех, ясно понятно что подобный цикл жрет довольно достаточно ресурса. Это таки для примера, чтобы автор понял как нужно заморозить и разморозить значение)))р А так же можно использовать таймер вместо цикла...
  19. Как то так... ... bool bAmmo = false; ... while (true) { if (GetAsyncKeyState(VK_NUMPAD0) & 1) { bAmmo != bAmmo; } if (bAmmo) { WriteProcessMemory(handle,(PBYTE*)(0x********),&ammo,4,0); } } ...
  20. Отличная статья, давно хотел сделать такой телепорт для игры TESV: Skyrim.
  21. Хех, больная тема Сам когда то ломал голову над этим... Пофантазируй и все будет отлично!
  22. ArxLex

    Outlast Plus 6 Trainer

    Инфо: Автор: Arxlex Издание: GameHackLab Версия Игры: Мульти (пиратка) Язык Трейнера: Английский Название Процесса: OLGame.exe (32 bit и 64bit) Количество Функций: 6 Дата Создания Трейнера: 2013-11-19 Описание: HOME - Активировать трейнер END - Деактивировать трейнер NUMPAD1 - Бессмертие NUMPAD2 - Бессконечный свет фонаря NUMPAD3 - Бессконечные аккумуляторы NUMPAD4 - Супер скорость NUMPAD5 - Хак гравитации (удобно для перепрыгивания между локациями, чисто для прикола) PAGEUP - Сохранить текущую позицию PAGEDOWN - Загрузить текущую позицию Дополнительно: - Трейнер для 32 и 64 битной версии игры - Тестовая верия - Огромное спасибо участнику Coder за видеоуроки по гэймхакингу! outlast_all_plus_6_trnr.7z - 32 бит VT Outlast.All.Plus.6.Trainer.x64.rar - 64 бит VT
  23. Я так тоже пробовал. Если DWORD value; сделать глобальной, то метка value исчезает совсем, вместо него появляется call в никуда... Жалко что никто не знает решение. Остается только написать функцию с запросом и возвратом значения...
×
×
  • Создать...

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

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