Wie erweitere ich ein bestehendes Programm?



  • Ich habe eine ganze Weile rumgegoogelt und anschließend die Dateien von LoL durchforstet und schließlich auch fündig geworden. Unter League of Legends\RADS\projects\lol_air_client\releases\0.0.1.161\deploy\lib befinden sich mehrere .dat Dateien, die ich per heruntergeladenem Programm(https://www.free-decompiler.com/flash/download/) öffnen konnte. In der ClientLibLogin.Dat bin ich auf folgende Funktion gestoßen:

    public function InitiateLoginEvent(param1:String, param2:String)
          {
             super(INITIATE_LOGIN,false,true);
             this._username = param1;
             this._password = param2;
          }
    

    Alles was ich nun möchte ist diese eine Funktion aufzurufen und ihr die entsprechenden Parameter zu übergeben, wenn dies nicht geht würde ich gerne herausfinden von wo diese Funkion aufgerufen wird(konnte leider nichts finden :/) und nur die Variablen ändern und der Nutzer muss dann selber noch auf Einloggen drücken. Ich bin ja jetzt schon ziemlich nah dran, wenn mir also dies noch jemand sagen könnte wäre ich ihm sehr dankbar 🙂 !

    Danke für die bereits erhaltene Hilfe!

    Edit: Wie man eine Funktion aufruft wenn sie sich in der selben Anwendung befindet ist mir natürlich klar die Frage ist wie ich mit meiner externen C++ Anwendung auf die Funktion des LoL Clients Zugriff bekomme.

    Edit2: Habe soeben die ClientWindow.dat gefunden(League of Legends\RADS\projects\lol_air_client\releases\0.0.1.161\deploy\mod\win) und da gibt es die Funktion

    private function onDataLoadOperationsComplete() : void
          {
             this.mainBox.removeAllChildren();
             var _loc1_:IMainProvider = MainProviderProxy.instance;
             _loc1_.showMainView(this.mainBox,this.handleMainViewReady);
             setMainReady();
             this.loginModule.hide();
             UserFlow.track("session","successful_login");
          }
    

    Ich würde gerne den Code editieren, so dass nach dieser Funktion eine .Txt datei erstellt wird oder bestenfalls direkt eine Nachricht an mein Programm gesendet, wird damit es weiß, dass es sich jetzt schließen kann.

    Ich hoffe jemand kann mir helfen und ich habe nicht umsonst die LoL Dateien durchforstet ^^.



  • Keine Ahnung, ob das wichtig ist, aber sind die beiden Funktionen nicht in Java?



  • PowerOfCreation schrieb:

    Alles was ich nun möchte ist diese eine Funktion aufzurufen und ihr die entsprechenden Parameter zu übergeben, wenn dies nicht geht würde ich gerne herausfinden von wo diese Funkion aufgerufen wird(konnte leider nichts finden :/) und nur die Variablen ändern und der Nutzer muss dann selber noch auf Einloggen drücken. Ich bin ja jetzt schon ziemlich nah dran, wenn mir also dies noch jemand sagen könnte wäre ich ihm sehr dankbar 🙂 !

    Nah dran ist gut, das ist noch der einfachere Teil. Das ist eine Memberfunktion, weißt du denn schon wie du an das entsprechende Objekt kommst?
    Erstmal solltest du rausfinden ob die Dateien kompiliert oder interpretiert werden, je nach dem ändert sich der Angriffspunkt.
    Wenn du das weißt, braucht du nur noch die Addresse der Funktion, dann kannst du sie aufrufen.

    Versuch doch die Dateien zu modifizieren und dann zu rekompilieren? Dann kannst du direkt mit einer externen Anwedung kommunizieren.

    Und lass dir nochmal gesagt sein, das ist den Aufwand nicht wert. Machbar ist so einiges, aber da du dich mit dem Thema so gar nicht auskennst würde ich sagen dass das etwas zu hoch für dich ist. Fang doch mit etwas leichterem an, kommt aber halt drauf an was genau du machen willst. 😉

    lemon03 schrieb:

    Keine Ahnung, ob das wichtig ist, aber sind die beiden Funktionen nicht in Java?

    Nein, AFAIK Flash/Actionscript.



  • Ich dachte eigentlich das es relativ einfach ist, wollte ja "nur" einen Benutzernamen und das Passwort via Pointer einfügen, nur leider ging dies wohl nicht. Nun habe ich einmal damit angefangen und würde es jetzt auch gerne fertigmachen.

    Nah dran ist gut, das ist noch der einfachere Teil. Das ist eine Memberfunktion, weißt du denn schon wie du an das entsprechende Objekt kommst?
    Erstmal solltest du rausfinden ob die Dateien kompiliert oder interpretiert werden, je nach dem ändert sich der Angriffspunkt.
    Wenn du das weißt, braucht du nur noch die Addresse der Funktion, dann kannst du sie aufrufen.

    Könntest du das näher erläutern, ich versteh nämlich nicht viel ^^. Ich weiß nur, dass ich eine .data datei mit dem bereits erwähntem Programm geöffnet habe und da wohl die HEX Werte auslesen kann, doch leider ist mir unklar wozu ich dies brauche und wie genau dies funktioniert ^^.

    Ich habe einige Videos zu CheatEngine und OllyDB gesehen, darunter auch Videos, wie man Wallhacks, Unsterblichkeit etc. macht, aber so richtig anwendbar ist dies meiner Meinung auf das hier nicht :/.



  • PowerOfCreation schrieb:

    Ich dachte eigentlich das es relativ einfach ist, wollte ja "nur" einen Benutzernamen und das Passwort via Pointer einfügen, nur leider ging dies wohl nicht. Nun habe ich einmal damit angefangen und würde es jetzt auch gerne fertigmachen.

    Klar geht das, nur hast du die Pointer nicht und verstehst auch noch nicht wie das Programm überhaupt arbeitet. Darin müsstest du dich einarbeiten (möglicherweise viele viele Stunden) und verstehen was da im Hintergrund abläuft. Wenn du dann verlässlich auf die Adresse kommst, kannst du dort auch Dinge auslesen/abändern.

    PowerOfCreation schrieb:

    Ich habe einige Videos zu CheatEngine und OllyDB gesehen, darunter auch Videos, wie man Wallhacks, Unsterblichkeit etc. macht, aber so richtig anwendbar ist dies meiner Meinung auf das hier nicht :/.

    Ja, Cheaten != Modden. Modden ist (meiner Menung nach) auch viel schwerer als simples Cheaten.

    Wie gesagt, du könntest versuchen die Datei zu editieren und dann wieder abzuspeichern, weiß aber nicht ob das so einfach machbar ist.
    Ansonsten würde ich zuerst rausfinden ob der Code kompiliert oder interpretiert wird, und dann kannst du im Debugger versuchen diesen Code Ausschnitt wiederzufinden, diesmal in Assembly/Bytecode. Sollte über die Strings die du eingeben kannst machbar sein. Und dort kannst du dann eventuell eingreifen.

    Das wären so meine ersten Ideen zu dem Thema. Da ist eher Fanatasie gefragt, wie man zum gewünschten Ergebniss kommt kann dir hier keiner mal eben schnell erklären. Aber so ganz ohne Reverse Engineering Kenntnisse wird das so schnell nichts...



  • PowerOfCreation schrieb:

    Ich dachte eigentlich das es relativ einfach ist, wollte ja "nur" einen Benutzernamen und das Passwort via Pointer einfügen

    Das ist eine sehr oberflächliche Vorstellung davon, wie Programme funktionieren. Sehr viel Erfahrung ist auch ein sehr relativer Begriff. Du siehst ja selber, dass dir nicht so wirklich 100% klar ist, wie das alles funktioniert, und dann kommen erst recht abenteuerliche Erklärungsversuche, "dass das irgendwie geschützt ist". Deswegen würde ich sowas erst angehen, wenn ich wüsste, was ich mache, und nicht ein paar oberflächliche Vermutungen habe.
    Und wenn du dich erstmal auskennst, wirst du das dann wahrscheinlich gar nicht erst anfangen wollen, weil aufwändig und langweilig ist.



  • Was würdet ihr/du denn vorschlagen, gibt es da Videos, Bücher oder ähnliches? Ich hatte nichts dergleichen gefunden und mir deswegen einfach selber diese Aufgabe gestellt ^^.



  • Für Reverse Engineering zB. Google und CrackMes. ^^



  • PowerOfCreation schrieb:

    Was würdet ihr/du denn vorschlagen, gibt es da Videos, Bücher oder ähnliches? Ich hatte nichts dergleichen gefunden und mir deswegen einfach selber diese Aufgabe gestellt ^^.

    PowerOfCreation schrieb:

    ich kenne mich gut mit C# und Java aus, hauptsächlich habe ich bis jetzt nur mit Unity 3D programmiert, aber wie ich einsehen musste ist es unrealistisch ein ganzes Spiel alleine zu programmieren, also möchte ich mich auf kleinere Tools, Werkzeuge und Mods beschränken und vorallem mit C++(und Lua).

    Das kommt eben stark drauf an, was du konkret machen willst. Willst du programmieren lernen und z.B. selber an Spielen oder 3D Engines mitentwickeln? Willst du beruflich eigentlich was ganz anderes machen und nur nebenbei etwas modden? Willst du dich tatsächlich mit Low Level Programmierung und Reverse Engineering beschäftigen?



  • Wie bereits erwähnt kann ich bereits programmieren und habe auch schon mit Engines wie Unity und Unreal Engine programmiert, nur habe ich von dem was dahinter abläuft wenig Ahnung(Assembler, Maschinencode, Compiler, Graphic Pipeline.... kenn ich dem Namen nach und das war es eigentlich schon). Ich habe bereits Mods mit API's gemacht und möchte nun auch Programme verändern/modden, die keine API haben oder einfache Tools, da ich gerne mal etwas fertig bekommen möchte und nicht erfolglos mich an einem eigenem Spiel versuchen.

    Ich habe eben mal bei Amazon gesucht und nur Englische Bücher gefunden, ich kann zwar Englisch ganz gut aber wenn dann auch noch Fachbegriffe kommen kann ich damit wenig anfangen 😕 . Naja werde mich erstmal weiter mit C++ beschäftigen und mal schauen ob ich ein Buch/Video zu dem was im Hintergrund eigentlich passiert finde.



  • PowerOfCreation schrieb:

    Wie bereits erwähnt kann ich bereits programmieren und habe auch schon mit Engines wie Unity und Unreal Engine programmiert, nur habe ich von dem was dahinter abläuft wenig Ahnung(Assembler, Maschinencode, Compiler, Graphic Pipeline.... kenn ich dem Namen nach und das war es eigentlich schon). Ich habe bereits Mods mit API's gemacht und möchte nun auch Programme verändern/modden, die keine API haben oder einfache Tools, da ich gerne mal etwas fertig bekommen möchte und nicht erfolglos mich an einem eigenem Spiel versuchen.

    Genau die "was dahinter abläuft" Kenntnisse brauchst du aber zum Modden von Programmen die keine Modding-API haben. Wird also einigermassen aufwendig werden.

    PowerOfCreation schrieb:

    Ich habe eben mal bei Amazon gesucht und nur Englische Bücher gefunden, ich kann zwar Englisch ganz gut aber wenn dann auch noch Fachbegriffe kommen kann ich damit wenig anfangen 😕 . Naja werde mich erstmal weiter mit C++ beschäftigen und mal schauen ob ich ein Buch/Video zu dem was im Hintergrund eigentlich passiert finde.

    Je spezieller es wird (und dein Vorhaben ist schon halbwegs speziell), desto weniger Infos wirst du auf Deutsch finden, und desto wichtiger wird Englisch. Also kämpf dich durch. Schlag die ganzen Fachausdrücke etc. nach, so lange bis du sie verstehst ohne nachzulschlagen.



  • Die ganzen Fachausdrücke gibts normalerweise auch nur auf Englisch, die werden eher selten übersetzt.


Anmelden zum Antworten