трейнер для игры ( с инъекцией)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by VintProg, 14 Nov 2011.

  1. VintProg

    VintProg New Member

    Joined:
    29 Oct 2011
    Messages:
    38
    Likes Received:
    0
    Reputations:
    0
    есть код:

    Code:
    function InjectLibraryAPI(lpProcessID: Cardinal; lpDllname: String): LongBool;
    var
     hProc: Cardinal;
     oAlloc: Pointer;
     cWPM: Cardinal;
     hRemThread: Cardinal;
    
    begin
     result := false;
     SetLastError(ERROR_SUCCESS);
     hProc := OpenProcess(PROCESS_ALL_ACCESS, false, lpProcessID); // открываем процесс
     if hProc <> 0 then begin
        oAlloc := VirtualAllocEx(hProc, 0, length(lpDllname), MEM_COMMIT, PAGE_EXECUTE_READWRITE); // если существует выделяем память в процессе
     if oAlloc <> nil then begin
     if WriteProcessMemory(hProc, oAlloc, PChar(lpDllName), length(lpDllName), cWPM) = true then begin // если получилось выделить, то копируем туда содержимое своей DLL
        CreateRemoteThread(hProc, nil, 0, GetProcAddress(GetModuleHandle('kernel32.dll'), 'LoadLibraryA'), oAlloc, 0, hRemThread); // создаем удаленный поток, по адресу kernel32.dll -> LoadLibraryA, чтобы подгрузить DLL средствами WinAPI, в чужом процессе
       if GetLastError = ERROR_SUCCESS then result := true;
       end;
    end;
    end;
    CloseHandle(hProc); // закрываем Handle процесса
    end;
    Все теперь получилось, вопрос другой теперь, как мне можно вызывать функции игры из программы? Допустим есть адрес функции которая дает игроку оружие, как мне ее вызвать из чужого пространства, ну и что-бы игрок получил оружие. Вот как вызвать?
     
  2. VintProg

    VintProg New Member

    Joined:
    29 Oct 2011
    Messages:
    38
    Likes Received:
    0
    Reputations:
    0
    Почему все молчат!!!!!!!???????
     
  3. Sams

    Sams Member

    Joined:
    18 Apr 2009
    Messages:
    247
    Likes Received:
    70
    Reputations:
    17
    потому что школота умеет писать только на Инди и Синапс (и то спорно) компонентах тупые фейки.

    В вашем коде происходит инжект ДЛЛ в процесс игры, а это значит, что код, который находится в ней, выполняется от имени данного процесса, что в свою очередь дает право использовать пространство как своё. Реализуйте в ДЛЛ работу hotkey. Можно сделать через перехват клавиш, хуками. В обработчике hotkey нужной клавиши просто вызываете напрямую функцию, которая дает оружие игрокам, ведь адрес её известен, только нужно знать прототип.

    Если возникает трудности в синтаксисе Делфи при вызове функции, зная её адрес, то собственно вот:

    1. Объявляем прототип функции в разделе переменных (в данном примере это процедура).
    Code:
    var
    	INeedSomeWeapons: procedure(param1, param2, param3: integer);
    2. Присваиваем функции нужный адрес.
    Code:
    INeedSomeWeapons := ptr($адрес);
    3. Вызываем как обычную функцию.
    Code:
    INeedSomeWeapons(1, 2, 3);
     
    #3 Sams, 15 Nov 2011
    Last edited: 15 Nov 2011
  4. VintProg

    VintProg New Member

    Joined:
    29 Oct 2011
    Messages:
    38
    Likes Received:
    0
    Reputations:
    0
    Мне не важен язык, я их 3 знаю...
     
  5. Sams

    Sams Member

    Joined:
    18 Apr 2009
    Messages:
    247
    Likes Received:
    70
    Reputations:
    17
    Тогда в чем проблема? Со знанием трех ЯП реализовать инжект кода в процесс, через ДЛЛ, с уже готовой процедурой собственного самого инжекта? Или дать наводку на API функции? Да тут всего их две нужно - установить хук SetWindowsHookEx() на перехват сообщений клавиатуры, и вызвать следующую по цепочке процедуру, через CallNextHookEx(), внутри обработчика.
    Тут собственно разжевывать нечего.
     
  6. VintProg

    VintProg New Member

    Joined:
    29 Oct 2011
    Messages:
    38
    Likes Received:
    0
    Reputations:
    0
    Там есть методы класса в игре, мне их и надо вызывать через мою программу. Это игра GTA.
     
  7. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    http://www.wasm.ru/forum/viewtopic.php?id=38110

    http://www.wasm.ru/forum/viewtopic.php?id=42515
    http://www.wasm.ru/forum/viewtopic.php?id=39826
     
    _________________________
  8. VintProg

    VintProg New Member

    Joined:
    29 Oct 2011
    Messages:
    38
    Likes Received:
    0
    Reputations:
    0
    А вот за эти статьи большое спасибо!