CreateRemoteThread mit mehreren paramatern und ohne struct



  • typedef CreateRemoteThread CRT;
    

    Hallo,

    Ich versuche mit CRT eine Funktion aus einem anderen Prozess aufzurufen welche jedoch 3 Parameter nimmt (int int char*). Das Problem ist das CRT nur einen parameter übergeben kann, normalerweise würde ich meine Funktion jetzt so schreiben das sie in etwa so eine struct als paramter nimmt:

    struct params
    {
       int p1;
       int p2;
       char * p3;
    };
    

    Aber ich habe den code der exe nicht und kann damit nicht die funktion umschreiben!

    Wie könnte ich das Problem lösen, möglichst ohne dll Injektion?



  • Wie könnte ich das Problem lösen, möglichst ohne dll Injektion?

    Wie wärs mit einer Code Injektion ?

    #pragma pack(push, 1)
    struct params
    {
       int p1;
       int p2;
       char *p3;
       void *func;
    };
    #pragma pack(pop)
    

    Unfertiger Code:

    injected stub:
    pop eax ;pointer in eax
    push [eax + 8] ;p3
    push [eax + 4] ;p2
    push [eax] ;p1
    jump [eax + 12] ;jump zur eigentlichen Funktion
    

    Annahme dass int sowie die pointer 32Bit sind.



  • Eigentlich wollte ich solche Methoden vermeiden! Vielleicht sollte ich hinzufügen dass 2 der 3 Parameter 0 sein sollen (immer). Warum ist CRT denn auf 1 Parameter limitiert und könnte ich nicht selber eine CRT Funktion schreiben mit mehreren parametern?


  • Mod

    Das hat nichts mit der CRT zu tun sondern mit der WinAPI.

    Nur mal zum nachdenken: Wie willst Du Speicherblöcke und Strings erzeugen?

    CreateRemoteThread lässt sich einfachst bedienen wenn man eine andere DLL in den Prozess injeziert.



  • Er schreibt CRT für CreateRemoteThread.

    @Ceno
    Als Noob solltest du keine eigenen Abkürzungen erfinden. Das verwirrt bloss.

    Warum ist CRT denn auf 1 Parameter limitiert

    Weil es reicht.

    und könnte ich nicht selber eine CRT Funktion schreiben mit mehreren parametern?

    Klar. Indem du eine Trampolinfunktion in den Prozess rüberkopierst die die Parameter "umschreibt" und diese dann per CreateRemoteThread anspringst. Also genau das was DarkShadow44 beschrieben hat. Was du ja nicht willst.



  • Okay dann werde ich es auf dem weg lösen! Danke dafür.

    Zum Thema CRT, ich wollte nicht von dem Handy aus dauernd CreateRemoteThread schreiben,.. Das würde ich nicht als 'noobig' bezeichnen


Log in to reply