Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14
  1. #1
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard [C++] Warhammer Online Hack / Game-Trainer Sourcecode

    Hey,
    Ein Freund von mir fragte gestern nach einem Hack für das MMORPG "Warhammer Online".
    Hier mal der Sourcecode, das Programm funktioniert mit der aktuellsten Version.
    Die Speedhacks sind einfach in drei "Level" aufgeteilt, je größer die Option im Menü, desto langsamer.
    "No Clipping!" bewirkt dass ihr durch Wände und Hindernisse hindurch laufen könnt. Eine kleine Kommentierung habe ich dem Code beigefügt.
    Generell könnt ihr mit dem Code für alle möglichen Spiele Trainer / Hacks erstellen.

    Gebannt wurden wir noch nicht, obwohl wir den Hack relativ offensichtlich überall eingesetzt haben

    Viel Spaß damit, über Kritik würde ich mich freuen. (Gerne auch positiv! )

    Code:
    #include <windows.h>
    #include <iostream>
    #include <stdio.h>  
    
    int read_memory(unsigned adress, HANDLE handle);
    using namespace std;
    
    int main()
    {
       HWND hwnd = FindWindow(0, "Warhammer: Age of Reckoning, Version 1.3.6, Copyright 2001-2010 Electronic Arts, Inc."); // Das Fenster wird gesucht...
       DWORD proc_id; 
       GetWindowThreadProcessId(hwnd, &proc_id); //... und die Proc_ID wird ermittelt.
       DWORD wtr=0;
       
       int buffer_current = 0;
       int buffer_maximum = 0;
       int buffer_ap_maximum = 0;
       int buffer_ap_current = 0;
       
       int speedhack_littlefoot = 1075353216; // Eine Auswahl an Werten, die gesetzt werden können.
       int speedhack = 1080353216;
       int speedhack_ultra = 1100353216;
       int speed_normal = 1065353216;
       int ninja_on = 3322716160;
       int ninja_off = 1065353216;
           
       
       unsigned adress_base_player = 0x00FE1684; // Die Basis-Adresse für die Spielerdaten. Wird anhand der Adresse des Lebens zurückberechnet.
       unsigned adress_base_player_offset = 0;
       
       HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, false, proc_id);
       adress_base_player_offset = read_memory(adress_base_player, handle); // Wir lesen das Basis-Offset für die Spieler-Daten aus.
       
       unsigned offset_superjump = 0xaC; // Die Offsets, mit denen auf bestimmte Daten zugegriffen werden kann.
       unsigned offset_current = 0x18C;       
       unsigned offset_maximum = 0x188;
       unsigned offset_ap_maximum = 0x198;
       unsigned offset_ap_current = 0x19C;
       unsigned offset_speed = 0x9c;
       unsigned ninja_test = read_memory(0x00FC5F60, handle); ninja_test = ninja_test + 0x5C;
       unsigned speed_fix = adress_base_player_offset+offset_speed;
    
    
       
    while(true) {
       system("cls");
        
       buffer_maximum = read_memory(adress_base_player_offset+offset_maximum, handle);  // Das Leben und die AP's werden aktualisiert.
       buffer_current = read_memory(adress_base_player_offset+offset_current, handle);
       buffer_ap_maximum = read_memory(adress_base_player_offset+offset_ap_maximum, handle);
       buffer_ap_current = read_memory(adress_base_player_offset+offset_ap_current, handle);
                 
       printf("        +++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); // Kleiner Header + Anzeige.
       printf("        +   Warhammer Online   -   Memory    Manipulation   +\n");
       printf("        +++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
       printf("        +   Base-Adress: 0x%X                           +\n", adress_base_player);
       printf("        +++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n ");
       printf("         Players Life: %i / %i  \n", buffer_maximum, buffer_current);
       printf("          Players AP's: %i / %i  \n\n", buffer_ap_maximum, buffer_ap_current);
     
            
       printf("0. Speedhack - Ultra\n1. Speedhack - Super\n2. Speedhack - Littlefoot\n3. Disable Speedhacks\n4. No Clipping!\n5. Clipping!\n6. Exit\n");
       printf("Choice: "); // Das Menü...
       int option = 0;
       cin >> option;
       if(option == 0) {  WriteProcessMemory(handle, (LPVOID) speed_fix, &speedhack_ultra, sizeof(speedhack_ultra), NULL); } // Hier schreiben wir die Werte in den Speicher.
       if(option == 1) {  WriteProcessMemory(handle, (LPVOID) speed_fix, &speedhack, sizeof(speedhack), NULL); }
       if(option == 2) {  WriteProcessMemory(handle, (LPVOID) speed_fix, &speedhack_littlefoot, sizeof(speedhack_littlefoot), NULL); }
       if(option == 3) {  WriteProcessMemory(handle, (LPVOID) speed_fix, &speed_normal, sizeof(speed_normal), NULL); }
       if(option == 6) {  exit(0); }
       if(option == 4) {  WriteProcessMemory(handle, (LPVOID) ninja_test, &ninja_on, sizeof(ninja_on), NULL); }
       if(option == 5) {  WriteProcessMemory(handle, (LPVOID) ninja_test, &ninja_off, sizeof(ninja_off), NULL); }
       option = NULL;
    }
      CloseHandle(handle);
      return 0;
    }
    
    int read_memory(unsigned adress, HANDLE handle) {
        int buffer = 0;
        ReadProcessMemory(handle, (LPCVOID)adress, &buffer, sizeof(buffer), NULL);
        return buffer;
    }

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

  2. #2
    NoClose Wurm
    Registriert seit
    26.10.2008
    Beiträge
    185

    Standard

    sieht doch schonmal ganz nice aus, habs nicht getestet aber source sieht gut aus finde ich

  3. #3
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard

    Haha, schön wenn der Code deine Ästhetik angesprochen hat!

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

  4. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    blackberry (06.09.2010)

  5. #4
    Fortgeschrittener Avatar von dYnAm1c
    Registriert seit
    15.07.2009
    Beiträge
    35

    Standard

    Nen hack Source Code ist so kurz? oO

  6. #5
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Wieso nach dem offensichtlichen fragen?
    Ja, klar ist der so kurz. Er verändert ja auch nur ein paar Werte im Speicher von dem Spiel - wieso sollte man dafür mehr Code brauchen?

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  7. #6
    Fortgeschrittener Avatar von dYnAm1c
    Registriert seit
    15.07.2009
    Beiträge
    35

    Standard

    Was glaubst du warum ich frage?

  8. #7
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Weil deine geistigen Fähigkeiten vermutlich eingeschränkt sind und du kein C++ kannst.

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  9. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    AlterHacker (06.09.2010), Apex (06.09.2010), DarkFire (06.09.2010), GregorSamsa (06.09.2010), ocz (06.09.2010), reddragon1212 (06.09.2010), Shini (10.09.2010), the|eddy (06.09.2010), xzibitsebi (07.09.2010)

  10. #8
    I'm in ur VM. Avatar von l0dsb
    Registriert seit
    23.07.2007
    Beiträge
    1.038

    Standard

    Fehlerabfragen täten dem Source ganz gut (sämtliche API-Calls). while(true) verdient ein break und kein exit(0), besser: bool Done = false; while(!Done) { ... }.

    Die if-Abfragen eignen sich besser als switch-Konstruktion (oder zumindest if - else if - else if - ...). Genau genommen wären Streams zur Aus- und Eingabe angebrachter (siehe Topic: C++).

    Letztendlich kleinere Kosmetikspielereien, z. B. würde ich angeführte Werte als Konstanten oder zumindest konstante unsigned longs deklarieren.
    I can haz RCE?

  11. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    ocz (06.09.2010)

  12. #9
    Fortgeschrittener Avatar von dYnAm1c
    Registriert seit
    15.07.2009
    Beiträge
    35

    Standard

    Aha erklär mir doch bitte was geistige Fähigkeiten mit programmieren zu tun haben.

    EDIT by AlterHacker:
    **SCHNIPP** - Wir wollen doch nett bleiben, oder?
    Geändert von AlterHacker (06.09.2010 um 18:57 Uhr) Grund: Unangemessene Ausdrucksweise

  13. #10
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard

    Letztendlich kleinere Kosmetikspielereien
    Ich habe das Menü nur kurz hinzugefügt um das Programm für die Öffentlichkeit auch benutzbar zu machen - Ich und mein Kumpel haben das am Anfang manuell bedient...

    Die if-Abfragen eignen sich besser als switch-Konstruktion
    Das wäre vielleicht professioneller, aber nicht unbedingt "besser". Ich finde meine Lösung liest sich vernünftig, und ein Problem hat sich daraus bisher auch nicht ergeben

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Warhammer Online: AOR Privat-Server?
    Von sketax im Forum Games
    Antworten: 2
    Letzter Beitrag: 19.07.2010, 14:35
  2. [S] Warhammer Dawn of War II Trainer
    Von Fixi im Forum Games
    Antworten: 0
    Letzter Beitrag: 11.03.2010, 15:48
  3. Warhammer Online faken ~ Sicherheit
    Von LiquixX im Forum Sicherheit
    Antworten: 2
    Letzter Beitrag: 27.09.2008, 03:12

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •