ArxLex

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

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

  • Посещение

Репутация

20 Novice

6 подписчиков

О ArxLex

  • Звание
    Продвинутый пользователь

Информация

  • Пол Не определился
  • Город ChernarusPlus
  1. Отличная работа, молодцы ребята! Но я все таки привык к Ctrl+R
  2. Привет всем! Решил поделиться сканером сигнатур написанный мною на 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 за видео уроки и общее развите гэймхакинга
  3. Этот код уже гуляет по инету с прошлого года (может даже раньше), и причем тут by DenkA003?
  4. Может примерно как то так? Написал по памяти, могут быть ошибки... [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)
  5. Привет, все не так уж и сложно, вгляни на вот это...
  6. Burnout Paradise - The Ultimate Box

    Расскажи по подробнее о Universal Trainer Cracker, ранее не слышал о таком Все понятно, нашел, это просто аналог WriteProcessMemory Monitor-а
  7. Outlast Plus 6 Trainer

    Добавил 64-битную мульти версию трейнера. Спасибо всем кто проверит в работе))) ЗЫ. Еще раз спасибо Coder-у за общую помощь!
  8. Спасибо огромное! Остановился на IDAG64
  9. Инжектор для Universal Trainer Cracker

    Какой метод пользуется для внедрения?
  10. Скачал я эту версию, вроде самая свежая, много чего нового. Теперь в списке аттача показывает все запущенные приложения включая 64-битные. Но 64-ные приложения все равно не аттачит и не открывает(Unable to attach to process 'MineSweeper' with ID 00000A88(2696.). Reason: 00000032 (ERROR_NOT_SUPPORTED)). Может я что делаю не так? Coder, ты уверен что OllyDbg может аттачить или открывать 64-битные приложения? Попробуй на стандартном 64-битном Сапере... Зы: Может есть какой другой аналогичный 64-битный дизассемблер с функцией создания сигнатур?
  11. Любопытно какая у тебя сборка OllyDbg? Просто у меня не получается загрузить 64 битную игру через OllyDbg (File: '...' is probably not a 32-bit Portable Executable. Try to load it anyway? - > Yes - > Unable to start file: '...'). А если аттачить, то в списке только x86 процессы... Интересно вот с этим плагином Stealth64 будет работать?
  12. Привет всем! В связи с невозможностью запуска OllyDbg под Windows 7 x64, у меня возникли сложности с созданием сигнатуры в 64 битной памяти игры. Может кто знает другой способ, поделитесь пожалуйста Каждый раз создавать вручную не очень-то удобно и стабильно...
  13. Спасибо за отзывы, разобрался что к чему с помощью MSDN. Теперь есть база и под x64!
  14. Похоже мы не совсем поняли друг друга. Спокойно записывать то смогу, но прыжок будет не туда куда надо. Например есть такой вот скрипт СЕ для 64 битной игры: alloc(newmem,100,"Game_x64.exe"+CB9133) // jmp 13FDC0000 ... и alloc(newmem,100) // jmp qword ptr [140A89139] (comment: 05A60000) ... По первому скрипту прыжок получается туда куда надо, а во втором неизвестно куда. Я хочу понять как это реализовать в C++ (x64-ном проекте). Там похоже как-то связано с выделенным адресом VirtualAllocEx и базовым адресом игры.