Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ HOOK do istniejącego .exe


Rekomendowane odpowiedzi

Opublikowano

Siema!

Jak hookować .dll, dołączyć kod C++ do gotowego, skompilowanego .exe ?

Chciałbym jeszcze zapytać jak ma wyglądać ta .dll, i prosiłbym o jakiegoś tuta z tym "dołączaniem", .dll do .exe.

Opublikowano

Jeśli kod jest skompilowany a ty nie masz source to raczej się nie da. Chyba że wrzucisz w plik .exe do odpowiedniej sekcji spreparowaną DLLkę i z poziomu assemblera dopiszesz instrukcje które dołączą ją do programu. Przerypana robota.

846331404756772371599.jpeg
Opublikowano

Sam tutorial odnośnie hookingu jest w budowie, mogę Ci za to dać fragment kodu z mojego cheata do pewnej gry:

 

 

#include <windows.h> 
#include "hook.h"
Hook * Attackspeedhook = NULL;

DWORD WINAPI hookthread( LPVOID Param );
char __fastcall myGetAttackSpeed( void* this, DWORD unusededx );


typedef char (__thiscall* CPlayer_GetAttackSpeed )( void* ecx );

CPlayer_GetAttackSpeed oGetAttackSpeed = NULL;

BOOL WINAPI DllMain( HMODULE hModule, DWORD reason, LPVOID lpReserved )
{
    UNREFERENCED_PARAMETER(lpReserved);
    if (reason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
        CreateThread(NULL, NULL, hookthread, NULL, NULL, NULL);
        return 1;
    }
    else if (reason == DLL_PROCESS_DETACH)
    {
        Attackspeedhook->RemoveHook();
        return 0;
    }
    return 0;
}

char __fastcall myGetAttackSpeed( void * ecx, DWORD unusededx )
{
    return 5; // prędkości ataku
}

DWORD WINAPI hookthread( LPVOID Param )
{
    HMODULE hmod = 0;
    while(!hmod)
    {
        hmod = GetModuleHandle("entitiesmp");
        Sleep(50);
    }
    unsigned long GetAttackspeedadr = reinterpret_cast( GetProcAddress( hmod, "?GetAttackspeed@CPlayer@@UAECXZ" ));
    if( GetAttackspeedadr )
    {
        Attackspeedhook= new Hook( GetAttackspeedadr , 5, (DWORD)myGetAttackSpeed);
        oGetAttackSpeed = (CPlayer_GetAttackSpeed)Attackspeedhook->HookFunc();
    }
    return 0;
}

Program zmieniał prędkość ataku na 5. Oczywiście niezbędna była analiza samej gry aby poznać nazwy funkcji i adresów.

Jakieś gotowce "do wypełnienia" powinny się pałętać po sieci :)

 

A co do trwałego umieszczania..

Moim zdaniem to zły pomysł, już zwykłe sprawdzenie sumy kontrolnej wykaże edycję pliku i zapewne nie pozwoli na uruchomienie. Dziś mamy bardzo zaawansowane programy chroniące przed edycją plików klientów gier i naprawdę odradzam kombinowania z trwałym umieszczeniem czegoś w kodzie.

 

No i na koniec odnośnie pytania "jak ma wyglądać ta dll". Cóż jak każda inna podpowiem tylko że pusta wygląda tak:

#include <Windows.h> 
BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved) 
{ 
     switch(Reason) 
     { 
          case DLL_PROCESS_ATTACH: 
               break; 
          case DLL_PROCESS_DETACH: 
               break; 
     } 
     return 1; 
}

 

I przydało by się, aby coś jednak robiła :P

Opublikowano

*.dll możesz "wstrzyknąć" do procesu *.exe za pomocą injectora.

wypierdalaj retardzie.

 

Co do podpinania dlllek to mozesz zrobic to jak kolega wyżej pokazał, lecz nie jestem pewny czy o to Ci chodzi.

Bo wtedy będziesz miał exeke i dllke dwa pliki, jeżeli byś chciał tak to spakować żeby była tylko exeka, to możesz to zrobić na klika sposobów.

Jednym z nim bedzie właśnie utworzenie własnego modułu (jak możesz przeczytac też w tutcie wyżej) i wrzucenie do niego całego pliku dll, a następnie stworzenie tego pliku dll w folderze temp (możesz nazwać go tempdata.bak dla niepoznaki czy cosxd nie musi byc .dll), i załadowanie go. To jest jedna możliwość. Jestem pewny że dałoby sie nawet tak żeby nie trzeba była tworzyć jakiegokolwiek pliku gdziekolwiek lecz to całkiem skomplikowane i trzeba by sie było troche pobawić.

 

Ten tut nie działa mi....

Co do stałego podpinania, mam program, który na wszystko pozwala, więc z tym nie ma problemu. Tylko jak to zrobić?

Ten Tut jest dobry.

Try harder. Ew. jeżeli nie wiesz o co chodzi to powiedz na którym kroku sie zaciełeś, jaki masz błąd etc. wtedy bedziemy mogli Ci w jakikolwiek sposob pomoc.

Pisze boty do gier WWW na zlecenie.

Opublikowano

Jeżeli niektórzy jeszcze nie wiedzą o co chodzi, to może się postaram.

 

Mam plik .exe, chcę, aby odpalał się on wraz z moją .dll, którą mam skompilowaną w C++, .exe jest skompilowany, nie mam do niego source.

Chcę podpiąć .dll do tego .exe, aby .dll działała na zasadzie tamtego .exe, czyli injectowanie .dll, tyle, że ona ma być podpięta na stałe.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...