Assult Cube Funktionszeiger | #1 | |
Join Date: Sep 2010 Posts: 38 |
Da ich den einen Teil meiner Frage bereits selbst behoben habe, möchte ich aus dem Kontext der Frage ein kleines Tutorial dazu machen: Assult Cube besitzt eine Funktion, um einen Text auf dem Bildschirm ausgeben zu lassen. Wir wollen die Funktion finden und aus einer DLL ausrufen können: 1. Assult Cube ist opensource. Die funktion heißt CPP Code: und wir finden sie überall im Sourcecode, z.B. hier: CPP Code: Rechtsklick drauf und "Gehe zu Definition", die Funktion ist folgendermaßen definiert: CPP Code: für uns ist eigentlich nur der Funktionskopf mit Rückgabetype und Parametern interessant. So nun fehlt uns nur noch der Funktionszeiger. Wir starten Assult Cube und attachen es in Olly. Wir klicken oben auf das "E" und wählen das Modul "ac_client" an. Nun suchen wir nach einem der vilen Calls der Funktion, z.B. hier CPP Code: einfach nach dem übergebenen String. Also Rechtsklick->Search for->All referendet Textstrings und suchen nach Quote cannot redefine alias %s in this execution context Wir finden etwas und klicken drauf und landen hier: CPP Code: Doof, ist ja garkein call... egal wir folgen dem Jump einfach mal und landen hier: CPP Code: Olly zeigt uns, dass es vierle Calls und Jumps zu dieser Adresse gibt: Quote Local calls/jumps from 00403B46, 00403B54, 00403B87, 004083D1, 00408F2B, 00408F48, 00408F6E, 00408F82, 00408F9E, 00408FBA, 0040BC18, 0040BC3B, 0040BC91, 0040BCB0, 0040BD8E, 0040C645, 0040D65F, 0040F2D0, 004111CB, 00411318, 0041136A, 004114A3, ... CPP Code: Aha, hier wird die funktion wirklich gecallt. Gut, wir wissen jetzt also, dass unsere Funktion hier liegt CPP Code: Also aufs gehts, wir erstellen in Vc++ ein neues Dll Projekt. Als erstes erstellen wir einen Funktionsprototypen der Funktion, die wir aus der Dll aufrufen möchten: CPP Code: So war sie auch im Sourcecode von Assult Cube definiert. Nun erstellen wir uns einen Zeiger der Funktion: CPP Code: Jetzt weisen wir dem Zeiger die Adresse der Funktion zu: CPP Code: Dabei müssen wir auf conoutf* casten (schreibt man das so ? ^^). Jetzt klatschen wir noch die DLLMain rein: CPP Code: Injecten das in Assult Cube, sollte so funktionieren. So zu meinem Problem: CPP Code: Hier schmiert mit der Prozess ab: void HackMainThread(); ist die Funktion. Sobald ich den Thread starte schmiert der Prozess ab, der Code davor wird noch ausgefürt. __________________ Only registered and activated users can see links. |
|
krusty is offline |