[C/C++] Worms Reloaded Trainer +1

Dieses Thema im Forum "Projekte / Codes" wurde erstellt von N0S, 26. August 2010 .

  1. 26. August 2010
    Worms Reloaded Trainer +1

    Worms Reloaded das geilste Spiel 2010 Da ich kein Bock auf die Singleplayer Kampagne hatte, aber trotzdem gerne mit allen Waffen zocke (Bananenbombe ftw^^) habe ich mir kurz einen Trainer gecoded um das Zeug freizuschalten.

    Trainer starten, Spiel starten, F1 drücken und im Laden alles kaufen^^

    Funktioniert auch mit der illegalen Version des Spiels...

    Source:
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>
    #include <tlhelp32.h>
    
    #define PROCESS "WormsReloaded.exe"
    
    //Update 0
    /*
    00579EE0 8B15 F4619A00 MOV EDX,DWORD PTR DS:[9A61F4]
    00579EE6 8B4A 7C MOV ECX,DWORD PTR DS:[EDX+7C]
    */
    
    //Update 2
    /*
    005D6C50 8B15 64E39B00 MOV EDX,DWORD PTR DS:[9BE364]
    005D6C56 8B4A 7C MOV ECX,DWORD PTR DS:[EDX+7C]
    */
    
    #define GAMEPOINTERv0 0x9A61F4
    #define GAMEPOINTERv2 0x9BE364
    #define MONEYNUM 0x7c
    
    DWORD getProcessByName(char * processName);
    bool patchMemory( DWORD pid, DWORD address, DWORD replace );
    
    int main(int argc, char *argv[])
    {
     printf("Worms Reloaded Trainer +1\n\nF1 - 9999 Money\n\nWhich Worms Update do you have?\n0 = No Update\n1 = Update 2\n");
     DWORD pid = 0;
     DWORD pointer = 0;
     int version;
     scanf ("%d",&version);
     printf("You selected: ");
     if (version == 0)
     {
     printf("No Update");
     pointer = GAMEPOINTERv0;
     } else {
     printf("Update 2");
     pointer = GAMEPOINTERv2;
     }
    
     printf("\n\nWaiting for game...\n");
    
     while (1)
     {
     if (pid != 0) 
     {
     if ((GetAsyncKeyState(VK_F1)&1)==1)
     {
     if(patchMemory(pid,pointer,9999))
     {
     printf("Patch successfull\n");
     } else {
     printf("Error patch\n");
     }
     }
     } else {
     pid = getProcessByName(PROCESS);
     if (pid != 0) {
     printf("\nGame found\n\n");
     }
     }
    
     if ((GetAsyncKeyState(VK_F3)&1)==1)
     {
     break;
     }
     Sleep(200);
     }
    
     return 0;
    }
    
    bool patchMemory( DWORD pid, DWORD address, DWORD replace ) 
    {
     DWORD rBuf = 0;
     DWORD gamePointer = 0;
     HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION|PROCESS_VM_READ, NULL, pid);
     if(!hProcess) {
     printf("Error OpenProcess %u\n",GetLastError());
     return 0;
     }
    
     BOOL rpmRet = ReadProcessMemory(hProcess,(LPCVOID)address,&gamePointer,4,&rBuf);
     if (!rpmRet) {
     printf("Error ReadProcessMemory %u\n",GetLastError());
     return 0;
     }
    
     gamePointer += MONEYNUM;
     BOOL wpmRet = WriteProcessMemory(hProcess,(LPVOID)gamePointer,&replace,4,&rBuf);
     if (!wpmRet) {
     printf("Error WriteProcessMemory %u\n",GetLastError());
     return 0;
     }
    
     CloseHandle(hProcess);
    
     if (rBuf == 4)
     {
     return true;
     } else {
     return false;
     }
    }
    
    DWORD getProcessByName(char * processName)
    {
     HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     PROCESSENTRY32 pe32;
     pe32.dwSize = sizeof(PROCESSENTRY32);
    
     if( !Process32First( hProcessSnap, &pe32 ) )
     {
     printf("Error getting Process\n");
     CloseHandle( hProcessSnap );
     return 0;
     }
    
     do
     {
     if(!_stricmp(pe32.szExeFile, processName)) 
     {
     CloseHandle(hProcessSnap);
     return pe32.th32ProcessID;
     }
     } while(Process32Next(hProcessSnap, &pe32));
    
     CloseHandle(hProcessSnap);
     return 0;
    }
    binary: Worms Reloaded Trainer +1
     
  2. 26. August 2010
    AW: Worms Reloaded Trainer +1

    Sehr gut, das kann ich zur Abwechslung sogar praktisch gebrauchen
    Bananen ftw :lol:
     
  3. 26. August 2010
    AW: Worms Reloaded Trainer +1

    Du hast doch eher Spaß am Coden für das Spiel als am Spiel selber . Wie bist denn eigentlich zu dem Wissen gekommen gibts vielleicht ne gute Quelle, ausser alles selber ausprobieren. Finds echt gut was du für Sachen schaffst
     
  4. 27. August 2010
    AW: Worms Reloaded Trainer +1

    Ich denke im groben ist es immer das selbe. Man sucht sich die entsprechenden Werte und schaut wie man sie verändern muss (wahrscheinlich durch vergleichen). Die Syntax in C hat man wahrscheinlich relativ schnell drin, gewisser Maßen ist das ja ein Muster.
     
  5. 27. August 2010
    AW: Worms Reloaded Trainer +1

    Also ich hab bisher 3 Trainer hier gepostet und alle Trainer unterscheiden sich. Mit Copy/Paste kommt man also nicht wirklich weit, wenn man was eigenes erstellen will. Übrigens finde ich C schwerer als Assembler...

    Ich habe Game Hacking nie speziell gelernt, es ist eben ein netter Nebeneffekt wenn man andere Dinge kann.
    Ich habe aber schon ein paar Tutorials zu diesem Thema gesehen. Du kannst dir auch einfach mal CheatEngine runterladen, dass hat einen sehr guten praktischen Anfänger Tutorial integriert.

    Für das Ding hab ich insgesamt maximal 10min gebraucht... Worms spiele ich schon etwas länger^^
     
  6. 27. August 2010
    AW: Worms Reloaded Trainer +1

    Das wollte ich damit auch nicht sagen, aber es ist so, dass bestimmte Elemente wiederkehrend sind. Prozess öffnen, Wert ändern etc. Von Copy & Paste habe ich nie gesprochen.
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.