IAT Hook fest in .exe schreiben - möglich?



  • Hallo,

    ich hoff der Thread ist hier richtig 🙂

    Und zwar hab ich ne Frage, ist es möglich einen IAT Hook fest in ein Programm einzubauen indem man die IAT der .exe ändert?

    Oder wird die IAT erst beim Ausführen vom Programm gefüllt?

    Ich hab mir das so gedacht das ich die IAT auslese, den Eintrag der Funktion die ich hooken will verändere und auf meine neue Funktion zeigen lasse (die ich vorher ins PE File geschrieben hab).

    Kann das so klappen?

    mfg


  • Mod

    Nein, dasgeht nicht!

    Die IAT wird erst beim laden gefüllt bzw. überschrieben.

    Lies hier:
    http://msdn.microsoft.com/en-us/magazine/cc301808.aspx



  • Hallo,

    danke für deine Antwort, das hab ich schon befürchtet 😕

    Wärs denn dann praktikabel den IAT über eine injectede Funktion (auf die ich dann den EntryPoint des Programms setze) beim Ausführen der .exe zu überschreiben?

    Theoretisch ists möglich, aber auch praktikabel?

    mfg


  • Mod

    Ich benatworte aus Prinzip keine Fragen zu Injektion von DLLs.



  • Was willst Du denn machen?



  • Einem Programm verbieten mich mit MessageBox() zu nerven 🙂
    Ich seh aber gerade das das wohl verschlüsselt ist, Texe findet jedenfalls nicht einen einzigen IAT Eintrag (auch nicht LoadLibrary())?!

    @Martin Richter: Kann ich verstehen, dazu brauch ich aber auch keine Fragen stellen 🙂
    Mir ist klar das es euch darum geht das man API Hooking für böse Sachen verwenden kann..
    Ich kenn mich auf dem Gebiet aber schon gut genug aus um sowas selber hinzubekommen, nur hab ichs da mit einem Inline Hook gelöst, weil der auch ohne DLL Injection auskommt.
    Einfach 2 Funktionen in den Prozess geschrieben, eine davon ausgeführt die dann im laufenden Programm den Hook gesetzt hat.

    Wenn ihr mir nicht glauben solltet lasst es mich wissen und ich poste Code.

    Was ich damit sagen will: Nein ich hab nicht vor irgendwas illegales zu coden, das würde ich auch alleine hinbekommen.

    Ich will lediglich MessageBox() deaktivieren aber das scheint hier über die IAT eh nicht möglich zu sein -.-

    Und das ich die DLL über die Import Table selber injecten kann und dann aus der DLL heraus die IAT überschreiben kann ist mir schon selber klar, wie gesagt, dazu stell ich ja gar keine fragen

    Übrigens, vielen Dank euch beiden, ihr habt mir schon sehr oft geholfen 🙂
    Ich hab nur immer andere Nicks 😉

    mfg



  • Um welche Message Boxen handelt es sich denn? Einige bekommst Du auch mit "SetErrorMode" weg 😉



  • Um eine Beschwerde das es eine bestimmte Datei nicht gibt..
    Ich werd jetzt einfach ein Programm schreiben das das andere Programm aufruft, aber nur wenns die Datei gibt 😉

    Nochmal vielen Dank für die Hilfe

    mfg



  • AnotherStupideCoder schrieb:

    Um eine Beschwerde das es eine bestimmte Datei nicht gibt..
    Ich werd jetzt einfach ein Programm schreiben das das andere Programm aufruft, aber nur wenns die Datei gibt 😉

    Nochmal vielen Dank für die Hilfe

    mfg

    Patch doch einfach den Jump der zum MessageBox()-Call führt.

    Wird doch sicher irgendwo im Code stehen

    if(datei_da)
    machWeiter();
    else
    NervBox();

    Sollte auch leicht zu finden sein, einfach alle Codestellen raussuchen die MessageBoxA bzw W referenzieren.



  • Hallo,

    wollte ich ursprünglich machen aber wei gesagt, das Programm scheint mir gut verschlüsselt zu sein 🙂
    Da findet sich kein einziger API Call (nichtmal in der IAT)

    mfg



  • AnotherStupideCoder schrieb:

    Hallo,

    wollte ich ursprünglich machen aber wei gesagt, das Programm scheint mir gut verschlüsselt zu sein 🙂
    Da findet sich kein einziger API Call (nichtmal in der IAT)

    mfg

    Ohne API-Call gehts nicht, lass mal dumpbin drüberlaufen 😉



  • PEiD verrät dir schon mal (in den meisten Fällen) die Art der Verschlüsselung/Packers. Danach mal etwas googlen - vieleicht hast du ja Glück, und findest ein passendes Script für OllyDbg(OllyScript).


Anmelden zum Antworten