Pinball Hack dll - Zugriffsverletzung



  • Ich habe eine Dll geschrieben (code weiter unten) die die Punkte und die Bälle bei Pinball verändern soll. Ein Pinball Memory Hack eben.
    Bei den ersten Versuchen stürzt Pinball immer ab. Als ich VC++ an den Prozess angehangen habe, die dll injiziert habe, kahm ich zu folgender Fehlermeldung:

    Eine Ausnahme (erste Chance) bei 0x73ab1000 in PINBALL.EXE: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x73ab1000.
    Unbehandelte Ausnahme bei 0x73ab1000 in PINBALL.EXE: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x73ab1000.
    

    Der Code meiner DLL:

    #include <windows.h>
    
    HANDLE hGame = GetCurrentProcess();
    
    BOOL WINAPI iWrite(long addy, long value)
    {
    	WriteProcessMemory(hGame, (LPVOID*)(DWORD)addy, &value, sizeof(&value), NULL);
    	return 1;
    }
    
    DWORD WINAPI changeSettings(LPVOID) {
          iWrite(0x01EB5882, 888888);	//888888 points
    	  iWrite(0x01EB5976, 10);		//10 Bälle
          ExitThread(0);
    }
    
    BOOL APIENTRY DllMain(HINSTANCE hDll, DWORD callReason, LPVOID lpReserved)
    {
         if(callReason == DLL_PROCESS_ATTACH)
    	 {
    		 MessageBox(0, L"Dll Injection Successful! ", L"Dll Injector", MB_ICONEXCLAMATION | MB_OK | MB_SETFOREGROUND);
    		 CreateThread(NULL, NULL, changeSettings, NULL, NULL, NULL);
    	 }
    }
    

  • Mod

    1. Wieso weißt Du, dass die Adressen für die entsprechenden Daten immer dort liegen? Das ist ja nicht garantiert...
    2. Woher weißt Du, ob PinBal überhaupt mit dieser Anzahl von Bällen umgehen kann. Evtl. gibt es statische Puffer die dies nicht erlauben, weil eben nicht dynamisch allokiert wird.
    3. Warum verwendest Du WriteProcessMemory wenn Du schon innerhalb des Prozesses bist? Du hast doch einen DLL Inject gemacht!
    4. Vergiß ExitThread und macht einfach einen return 0;

    BTW: Ich kenne PINBALL.EXE nicht...



  • Ich habe vorher alles mit CheatEngine getestet...

    Mein verbesserter Code:

    #include <windows.h>
    
    DWORD WINAPI changeSettings(LPVOID) {
    	  volatile int *const POINTS = (int*)0x01EB5882;
    	  volatile int *const BALLS = (int*)0x01EB5976;
    	  *POINTS = 999999;
    	  *BALLS = 10;
    
          return 0;
    }
    
    BOOL APIENTRY DllMain
    ...
    

    geht auch nicht^^


  • Mod

    Dann werden wohl:
    a. die Adressen nicht stimmen, oder
    b. eben keine 10 Bälle unterstützt werden, oder
    c. PINBALL Antihacker sicher sein 😉



  • könnte ich mit "VirtualProtect" mir rechte rum schreiben geben? villeicht habe ich ja keine Recht um die Variablen umzuschreiben

    Also wenn ich nur die Messagebox ausgeben will und das andere auskommentiere gehts ^^ Die Variablen sind korrekt da ich alles mit analyseprogrammen überprüft habe



  • Hi,

    cbacon93 schrieb:

    Eine Ausnahme (erste Chance) bei 0x73ab1000 in PINBALL.EXE: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x73ab1000.
    Unbehandelte Ausnahme bei 0x73ab1000 in PINBALL.EXE: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x73ab1000.
    
    ...
    BOOL APIENTRY DllMain(HINSTANCE hDll, DWORD callReason, LPVOID lpReserved)
    {
         if(callReason == DLL_PROCESS_ATTACH)
    	 {
    		 MessageBox(0, L"Dll Injection Successful! ", L"Dll Injector", MB_ICONEXCLAMATION | MB_OK | MB_SETFOREGROUND);
    		 CreateThread(NULL, NULL, changeSettings, NULL, NULL, NULL);
    	 }
    }
    

    also der Fehler sagt ja schon mal das beim lesen eine Ausnahme geworfen wird. Da wuerd ich sagen, dass das nix mit dem WriteValues zu tun hat.
    2. ich weiss ja ned was passiert wenn man keinen Rueckgabewert angibt, aber wenn dann automatisch 0/FALSE zurueckgegeben wird, heisst das ja fuer denn DLL Loader das das Laden fehl schlug und die dll wieder weg ist. Wenn jetzt dein Thread ausgefuehrt wird kann das zu dem lese fehler fuehrn.

    MSDN schrieb:

    During process startup and DLL initialization routines, new threads can be created, but they do not begin execution until DLL initialization is done for the process.

    Peace & Blessed Love C0de4Fun



  • Hmm geht leider immernoch nicht aber mein AV schlägt an 😃

    habs gelöst -- !!


Anmelden zum Antworten