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

gmz

Разработчики (+)
  • Постов

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

  • Посещение

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

    26

Сообщения, опубликованные gmz

  1. все проще...

    0x00400000 BASE
    0x0097CEFC VA (0x0057CEFC+0x00400000)
    0x0057CEFC RVA (0x0097CEFC-0x00400000)
    0x0057C2FC RAW (0x0057CEFC-0x00001000+0x00000400)
    0x00001000 Section Virtual Address
    0x00000400 Section Raw Address
     

    возьми CFFExplorer.exe и сам посчитай xD

  2. Окей, когда я добавил это и скомпилил - как это использовать?

    Да и... Прокатит ли такой метод, если хукаешь онлайн игру? Всмысле, не спалит ли античит такого финта?

    даешь длке расширение cpl или настрой компиль чтобы ставил не .dll а .cpl - и можешь инжектить ее в игру 2 кликом как будто это .ехе

    для онлайна как минимум надо добавить заморозку процесcа например NtSuspendProcess/NtResumeProcess и когда процесс заморожен - скрыть модуль в PEB +ставить все хуки/патчи перед созданием потока.

     

    +вариант 2 получения размера модуля (напрямую):

    PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandle(0);PIMAGE_FILE_HEADER pFileHeader = (PIMAGE_FILE_HEADER)((DWORD)pDosHeader+pDosHeader->e_lfanew+sizeof(IMAGE_NT_SIGNATURE));PIMAGE_OPTIONAL_HEADER pOptionalHeader = (PIMAGE_OPTIONAL_HEADER)((DWORD)pFileHeader+IMAGE_SIZEOF_FILE_HEADER);DWORD health = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\x46\x14\x7D\x33", "xxxxx");DWORD knife = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\xBE\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x5F\x5D", "xx????x????xx");
    • Плюс 1
  3. такс... затести. самоинжекторная длка. после сборки переименуй main.dll в main.cpl

     

    в Memory.h исправь баг: после инициализ PROCESSENTRY32  pe32;

    добавь:
    pe32.dwSize = sizeof(PROCESSENTRY32);
     

    Main.cpp DllMain будет такой:

    DWORD WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved){HANDLE hProcess;HANDLE hRemoteBuffer;HANDLE hRemoteThread;int pId;char ModulePath[MAX_PATH];if (fdwReason == DLL_PROCESS_ATTACH){DisableThreadLibraryCalls(hinstDLL);if (GetModuleHandle("calc.exe")){CloseHandle(CreateThread(0,4096,AS_thread,0,0,0));} else {if (pId = FindProcessByName("calc.exe")){if (hProcess = OpenProcess(PROCESS_CREATE_THREAD+PROCESS_QUERY_INFORMATION+PROCESS_VM_OPERATION+PROCESS_VM_READ+PROCESS_VM_WRITE,0,pId)){hRemoteBuffer = VirtualAllocEx(hProcess,0,4096,MEM_COMMIT,PAGE_READWRITE);WriteProcessMemory(hProcess,hRemoteBuffer,ModulePath,GetModuleFileName(hinstDLL,ModulePath,MAX_PATH),0);hRemoteThread = CreateRemoteThread(hProcess,0,4096,(LPTHREAD_START_ROUTINE)LoadLibrary,hRemoteBuffer,0,0);WaitForSingleObject(hRemoteThread,INFINITE);CloseHandle(hRemoteThread);VirtualFreeEx(hProcess,hRemoteBuffer,4096,MEM_DECOMMIT);CloseHandle(hProcess);}}}return 1;}}

    GetModuleHandle("calc.exe") < заменишь на ехе игры или на d3d11.dll (какой там игра использ.). оно нужно для детекта когда длка в rundll32.exe  или игре

    FindProcessByName("calc.exe") < тут понятно

    • Плюс 2
  4. Мой код настолько крут, что он сам себя компилит.

    ога. зачем setvbuf(stdout, NULL, _IONBF, 0); и DWORD pID = GetCurrentProcessId(); нужны?

    давай из этой длл сделаем cpl? типа будет инжектить саму себя в игру. на С еще такого не делал

    добавил еще пару опций для mingw примера, теперь без мусора

  5. вау... звучит заумно... останусь-ка я на visual studio)

     

    вс2013.4 генерит меньше мусора - 2.10кб но код не настолько "крут" Lol

    http://rghost.ru/private/7WHmvnKyS/dd6c03a7ee3882081fcbae64bb0c5a03

    @echo off..\vc2013.4\vc\bin\cl.exe main.cpp /nologo /c /W1 /GS- /analyze- /Gy /Gm- /O2 /Gd /Oy- /Oi /MD /EHsc /I"..\vc2013.4\vc\include" /I"..\vc2013.4\Windows Kits\8.1\Include\um" /I"..\vc2013.4\Windows Kits\8.1\Include\shared"..\vc2013.4\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* -ap -Tpd -e_DllMain@12 main.obj -ZOmain -L"..\vc2013.4\Windows Kits\8.1\Lib\winv6.3\um\x86" -L"..\vc2013.4\VC\lib" -zkernel32;user32;msvcrt;psapidel *.objpause
  6. Да, и можно ссылку на тот компилятор, что ты говоришь?

     

    для х64 винды (может собирать х32 и х64):

    http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.1.0/threads-win32/sjlj/

     

    спец линкер (нужен только ulink.exe):

    ftp://ftp.styx.cabel.net/pub/UniLink/

     

    потом распак папку mingw64 в папку, бросаешь туда ulink.exe, создаешь там папку например acHack, бросаешь туда исходники. создаешь там make.cmd

     

    в make.cmd:

    @echo off..\mingw64\bin\g++.exe -c main.cpp -m32 -municode -s -Os -O3 -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections..\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* --gcc -ap -Tpd -e_DllMain@12 main.o -ZOmain.dll -L..\mingw64\x86_64-w64-mingw32\lib32 -zkernel32;user32;msvcrt;psapidel *.opause

    иии получишь 2.58кб файл.. для х64: -m32 -> -m64  -Tpd -> -Tpd+ -L..\mingw64\x86_64-w64-mingw32\lib32 -> -L..\mingw64\x86_64-w64-mingw32\lib

    ps убери #include <iostream>

    ps2 для -municode надо многое исправить в исходнике. так что исправь или убери ключ

    • Плюс 2
  7. выше DllMain:

    char KeySwitch01;char KeyStatus01;

    после "Sleep(75))"  весь кусок замени:

    char Key;Key = (GetAsyncKeyState(VK_F1) >> 8);if (KeySwitch01 != Key){KeySwitch01 = (Key);if (Key){if (!KeyStatus01){                Beep(100, 500);                printf("Health: ON \n Get Fun!!!");                VirtualProtect((LPVOID)addr, (size_t)5, PAGE_EXECUTE_READWRITE, &oldProtect);                memcpy((void*)addr, (PBYTE)"0x90, 0x90, 0x90, 0x90, 0x90", 5);                VirtualProtect((LPVOID)addr, 5, oldProtect, &oldProtect);KeyStatus01 = 1;} else {                Beep(300, 500);                printf("Health: OFF");                VirtualProtect((LPVOID)addr, (size_t)5, PAGE_EXECUTE_READWRITE, &oldProtect);                memcpy((void*)addr, (PBYTE)"\x89\x46\x14\x7D\x33", 5);                VirtualProtect((LPVOID)addr, 5, oldProtect, &oldProtect);KeyStatus01 = 0;}}}
    • Плюс 1
  8. базу модуля нормально получи:

     

    #include "psapi.h"

     

    MODULEINFO ModuleInfo;

    GetModuleInformation(GetCurrentProcess(),GetModuleHandle(0),&ModuleInfo,sizeof(ModuleInfo));

    DWORD addr = FindPattern(ModuleInfo.lpBaseOfDll, ModuleInfo.SizeOfImage, (PBYTE)"\x89\x46\x14\x7D\x33", "xxxxx");

     

    или 0x1288000 это не размер? lol

    + выброси FindProcessByName. юзай GetCurrentProcess

    • Плюс 1
  9. ээээ.. спидхак, танк кто то уже осилил?

    ps v1.4 х64 прогресс:
    F1 unlimited nitro
    F2 infinite health
    F3 infinite weapons
    F4 ignore pursuit
    F5 freeze bank
    F6 hide interface
    F7 fast weapons
    F8 off crash camera
    F9 freeze camera

    инжект 2 клика или любой длл инжектор..
    http://rghost.ru/private/6C8vMBx49/9c436cf8642e5b863de991b0b2b40664
     

    • Плюс 2
  10. 00D3718D   /0F85 9F000000               JNE 00D37232
    00D37193   |A1 54C41B01                 MOV EAX,DWORD PTR [11BC454]
    00D37198   |2B46 34                     SUB EAX,DWORD PTR [ESI+34]
    00D3719B   |8B8B 7C010000               MOV ECX,DWORD PTR [EBX+17C]
    00D371A1   |F30F2AC0                    CVTSI2SS XMM0,EAX
    ...
    0F 85 ?? ?? ?? ?? A1 ?? ?? ?? ?? 2B 46 ?? 8B 8B ?? ?? ?? ?? F3
    ollydbg > ctrl+b - проверяешь на уникальность

    • Плюс 1
  11. лови. добавь там shell32.inc / shell32.lib

    ps оно как кусок г. выглядит, даже unicode нету Lol

    ; #########################################################################;; This Is My Trainer Template Created For The Game Trainer Studio (Xeta);; This Is Based On A MASM Example.;; #########################################################################.386.model flat, stdcall ; 32 bit memory modeloption casemap :none ; case sensitiveinclude trainer.inc ; local includes for this fileinclude include\shell32.incincludelib lib\shell32.lib   UrlProc PROTO :DWORD, :DWORD, :DWORD, :DWORD; #########################################################################.datahFontUl DWORD ?lpOrgStaticProc DWORD ?lpOrgWebProc DWORD ?hBrush DWORD ?bMouseOver DWORD ?hEmail DWORD ?hWeb DWORD ?hMain DWORD ?szWndClsMain BYTE "SSC_MAIN", 0szWndClsStatic BYTE "STATIC", 0szWebText BYTE "Домашняя страница", 0szWebURL BYTE "http://forum.gamehacklab.ru", 0szShelOpen BYTE "open", 0LabelHandle5500 dd ?LabelHandle5501 dd ?LabelHandle5502 dd ?; ### Constants Below; ### Constants Above; ### Bytes BelowHotKey00000 db 000hdb 001hdb 000hdb 001hHotKey00001 db 001hdb 001hdb 001hdb 000h; ### Bytes Above; ### Button Messages Below; ### Button Messages AboveWindCap db "Game.exe",0szDisplayName db 'Trainer-2',0.codestart:invoke GetModuleHandle, NULLmov hInstance, eaxinvoke GetCommandLinemov CommandLine, eaxinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eax; #########################################################################WinMain proc hInst :DWORD,hPrevInst :DWORD,CmdLine :DWORD,CmdShow :DWORD;====================; Put LOCALs on stack;====================LOCAL wc :WNDCLASSEXLOCAL msg :MSGLOCAL Wwd :DWORDLOCAL Wht :DWORDLOCAL Wtx :DWORDLOCAL Wty :DWORD;==================================================; Fill WNDCLASSEX structure with required variables;==================================================invoke LoadIcon,hInst,500 ; icon IDmov hIcon, eaxszText szClassName,"Trainer_Class"mov wc.cbSize, sizeof WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAW \or CS_BYTEALIGNWINDOWmov wc.lpfnWndProc, offset WndProcmov wc.cbClsExtra, NULLmov wc.cbWndExtra, NULLm2m wc.hInstance, hInstmov wc.hbrBackground, COLOR_BTNFACE+1mov wc.lpszMenuName, NULLmov wc.lpszClassName, offset szClassNamem2m wc.hIcon, hIconinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor, eaxm2m wc.hIconSm, hIconinvoke RegisterClassEx, ADDR wc;================================; Centre window at following size;================================mov Wwd, 209 ; Dialog Widthmov Wht, 118 ; Dialog Heightinvoke GetSystemMetrics,SM_CXSCREENinvoke TopXY,Wwd,eaxmov Wtx, eaxinvoke GetSystemMetrics,SM_CYSCREENinvoke TopXY,Wht,eaxmov Wty, eaxinvoke CreateWindowEx,WS_EX_LEFT,ADDR szClassName,ADDR szDisplayName,WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,Wtx,Wty,Wwd,Wht,NULL,NULL,hInst,NULLmov hWnd,eaxinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd;===================================; Loop until PostQuitMessage is sent;===================================StartLoop:invoke GetMessage,ADDR msg,NULL,0,0cmp eax, 0je ExitLoopinvoke TranslateMessage, ADDR msginvoke DispatchMessage, ADDR msgjmp StartLoopExitLoop:return msg.wParamWinMain endp; #########################################################################WndProc proc hWin :DWORD,uMsg :DWORD,wParam :DWORD,lParam :DWORDLOCAL var :DWORDLOCAL caW :DWORDLOCAL caH :DWORDLOCAL color :DWORDLOCAL hDC :DWORDLOCAL Rct :RECTLOCAL Ps :PAINTSTRUCTLOCAL buffer1[128]:BYTELOCAL buffer2[128]:BYTELOCAL lfnt :LOGFONTLOCAL psd :PAGESETUPDLGLOCAL pd :PRINTDLGLOCAL RectB :RECT.if uMsg == WM_COMMANDMOV EAX, wParam.if wParam == 499.endifmov ecx, hEmailmov edx, hWeb.if ecx == lParam || edx == lParam.if bMouseOvermov eax, Red.elsemov eax, Yellow.endifinvoke SetTextColor, wParam, eaxinvoke SetBkMode, wParam, TRANSPARENTmov eax, hBrush.endifret.elseif uMsg == WM_DRAWITEM.elseif uMsg == WM_CREATEMOV HotKeyMiniToggle, TRUEszText font1,'MS Sans Serif'invoke CreateFont,8,5,0,0,500,0,0,0, \DEFAULT_CHARSET,0,0,0,\DEFAULT_PITCH,ADDR font1mov hFont, eax   ;#####  Create 2 fonts    invoke  RtlZeroMemory, addr lfnt, sizeof LOGFONT    ;#####  Reg font    mov     lfnt.lfHeight, -11    mov     lfnt.lfWeight, FW_NORMAL   invoke  szCatStr, addr lfnt.lfFaceName, offset font1    ;#####  Bold font    mov     lfnt.lfUnderline, TRUE    invoke  CreateFontIndirect, addr lfnt    mov     hFontUl, eax;##### Web Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szWebText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,48,60,140, 17,hWin, 0,0, 0mov hWeb, eax;##### URL is dif than text, save URLinvoke SetWindowLong, eax, GWL_USERDATA, offset szWebURL;##### Subclass controlinvoke SetWindowLong, hWeb, GWL_WNDPROC, offset UrlProcmov lpOrgStaticProc, eaxinvoke SendMessage, hWeb, WM_SETFONT, hFont, FALSE;invoke GetSysColorBrush,COLOR_HIGHLIGHT ; COLOR_3DFACE;mov hBrush, eaxInvoke SetTimer, hWin, 1, 100, 0 ; HotKey TimerInvoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze Timer;szText lbl11, "?омашн¤¤ страница";invoke Static,ADDR lbl11,hWin,48,56,116,17,5500;mov LabelHandle5500, eaxszText lbl12, "Trainer for Game"invoke Static,ADDR lbl12,hWin,56,8,92,17,5501mov LabelHandle5501, eaxszText lbl13, "F12 - бесконечные патроны"invoke Static,ADDR lbl13,hWin,24,32,148,17,5502mov LabelHandle5502, eax.elseif uMsg == WM_TIMER.If wParam == 1 ; ### Timer Below ###Invoke GetKeyState, VK_HOMEmov HotBuffer1, eax.if HotBuffer1 > 1Invoke TrainerEngineRead, NULL, Offset WindCap, 001C0F965h, 1MOV Read, EAX.If Read == 001hInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00000, 4.ElseInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00001, 4.EndIf.endif.Endif ; ### Timer Above ###.If wParam == 2 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 3 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 4 ; ### EBFreeze Timer Below ###.Endif ; ### EBFreeze Timer Above ###    .elseif uMsg==WM_CTLCOLORSTATIC        mov     ecx, hEmail        mov     edx, hWeb        .if ecx == lParam || edx == lParam            .if bMouseOver                mov        eax, Red                        .else                mov     eax, Yellow            .endif            invoke  SetTextColor, wParam, eax            invoke  SetBkMode, wParam, TRANSPARENT            mov        eax, hBrush        .endif        ret.elseif uMsg == WM_HOTKEY.elseif uMsg == WM_PAINTinvoke BeginPaint,hWin,ADDR Psmov hDC, eaxinvoke Paint_Proc,hWin,hDCinvoke EndPaint,hWin,ADDR Psreturn 0.elseif uMsg == WM_DESTROYinvoke PostQuitMessage,NULLreturn 0.endifinvoke DefWindowProc,hWin,uMsg,wParam,lParamretWndProc endp; ########################################################################TopXY proc wDim:DWORD, sDim:DWORDshr sDim, 1 ; divide screen dimension by 2shr wDim, 1 ; divide window dimension by 2mov eax, wDim ; copy window dimension into eaxsub sDim, eax ; sub half win dimension from half screen dimensionreturn sDimTopXY endp; #########################################################################Paint_Proc proc hWin:DWORD, hDC:DWORDLOCAL btn_hi :DWORDLOCAL btn_lo :DWORDLOCAL Rct :RECTinvoke GetSysColor,COLOR_BTNHIGHLIGHTmov btn_hi, eaxinvoke GetSysColor,COLOR_BTNSHADOWmov btn_lo, eaxreturn 0Paint_Proc endp; ########################################################################OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORDLOCAL tbuff[20h]:bytemov ebx,pdisassume ebx:ptr DRAWITEMSTRUCT.if [ebx].CtlType == ODT_BUTTON.if pbkcol == 0.elseinvoke SetBkMode,[ebx].hdc,OPAQUEInvoke SetBkColor,[ebx].hdc,pbkcolInvoke CreateSolidBrush, pbkcolinvoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax.endifinvoke SetTextColor,[ebx].hdc,pcol.if ([ebx].itemState & ODS_SELECTED)invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECTinvoke OffsetRect,addr [ebx].rcItem,1,1.elseinvoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT.endifinvoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbufflea edx,[ebx].rcItemlea ecx,tbuffinvoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP.if [ebx].itemState & ODS_FOCUSinvoke InflateRect,addr [ebx].rcItem,-4,-4invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem.endif.endifassume ebx:nothingretOnDrawItem endp; ########################################################################UrlProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMlocal   rect:RECT    mov        eax,uMsg    .if eax == WM_MOUSEMOVE        invoke  GetClientRect, hWin, addr rect        invoke  GetCapture        ;#####  Make sure the mouse is in our control        .if eax != hWin            mov        bMouseOver, TRUE            invoke  SetCapture, hWin            invoke  SendMessage, hWin, WM_SETFONT, hFontUl, TRUE        .endif        mov        edx,lParam        movzx    eax,dx        shr        edx,16        .if eax > rect.right || edx > rect.bottom            ;#####  moved out of control            mov        bMouseOver, FALSE            invoke  ReleaseCapture            invoke  SendMessage, hWin, WM_SETFONT, hFont, TRUE        .endif    .elseif eax == WM_LBUTTONUP        mov        bMouseOver, FALSE        invoke  ReleaseCapture        invoke  SendMessage, hWin, WM_SETFONT, hFont, TRUE                ;#####  Get URL we stored with the control        invoke  GetWindowLong, hWin, GWL_USERDATA        invoke  ShellExecute, hMain, offset szShelOpen, eax, NULL, NULL, SW_SHOWNORMAL    .elseif eax==WM_SETCURSOR        invoke  LoadCursor, NULL, IDC_HAND        invoke  SetCursor, eax            .else        invoke  CallWindowProc, lpOrgStaticProc, hWin, uMsg, wParam, lParam        ret    .endif    xor        eax,eax    retUrlProc endpend start
    • Плюс 1
  12. вроде адекватный пример:

    http://www.dreamincode.net/forums/topic/241669-masm-creating-a-hyperlink/

     

    Я пишу не сам, за меня пишет Game Trainer Studio. А дальше я, по возможности, дорабатываю.

    надо наоборот. взять тот код как пример, исправить бредокод +переписать его на fasm или nasm а потом добавлять функционал.

  13. Спасибо. Только теперь придётся читать про новые для меня опкоды: shr, and, rep.

    кст если размер "строки" известен, можно без shr/and

    например размер инфы 9:

    mov ecx,8 ;sizemov esi,string1mov edi,string2rep cmpsdmov ecx,1rep cmpsbjnz @f...@@:
  14. cmps для больших строк:

    mov ecx,5 ;sizemov edx,ecxmov esi,string1mov edi,string2shr ecx,2and edx,3rep cmpsdmov ecx,edxrep cmpsbjnz @f...@@:

    cmps для небольших строк:

    mov ecx,5 ;sizemov esi,string1mov edi,string2rep cmpsbjnz @f...@@:

    хмм strcmp из msvcrt.dll быстрее cmps в ~2 раза

    • Плюс 2
×
×
  • Создать...

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

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