eigene funktion von injecteter funktion aufrufen



  • was hat das mit code in dll auslagern zu tun?! und nein das kann man nicht. dir fehlen ganz offensichtliche die grundlagen, um solch ein unterfangen durchzuführen. und CallWindowProc ist was ganz anderes und hat damit nichts zu tun!



  • SnarphyShooter schrieb:

    dir fehlen ganz offensichtliche die grundlagen

    keine sorge die hab ich.

    wenn ich den code in eine dll auslagere, kann ich die dll in den prozessbereich
    des anderen prozesses laden und die exportierte funktion aufrufen.
    CallWindowProc kam mir in den sinn, da es eine WinApi funktion ist, die
    das aufrufen von funktionen erlaubt. als ich die msdn-seite dazu befragt hatte,
    hab ich auch gemerkt dass das nicht klappt, nur kann ein gast seine posts
    nicht editieren.

    das hooking einer WinApi funktion klappt auch so wie es soll, nur ware das ganze
    praktischer wenn der anwender eine funktion direkt in dem hookendem prozess
    definieren könnte, statt eine dll zu schreiben. deshalb soll die injizierte
    funktion eine benutzerdefinierte funktion aufrufen.
    der zeiger auf diese funktion wird mit in den prozess geschrieben, das einzige problem ist es die funktion in prozess A (in den die hook-
    funktion injiziert wird) eine funktion in prozess B (injizierender) aufzurufen.

    addresse der funktion ist vorhanden, nur kann ich diese nicht über die prozess-
    grenzen aufrufen (speichermapping).



  • wie soll das auch gehen. du musst dir da schon was eigenes zusammenbauen, möglichkeiten gibt es mehr als genug. du kannst einen gemeinsamen speicherbereich anlegen oder ein Event objekt signalisieren auf welches prozess a wartet etc und so weiter.



  • ich habe lust so eine kleine bibliothek hierfür zu entwickeln, macht natürlich keinen sinn aber ist eine feine beschäftigungstherapie für mich! ich werde es implementieren, thx für die idee 😃



  • @gunner 2.0
    genausowas hatte ich auch vor 😛

    shared_memory hört sich interessant an, aber kann man auch eine funktion
    in shard_memory aufrufen?

    kann man speicherbereiche von einem prozess nicht irgentwie direkt
    über zeiger zugänlich machen? writeprocessmemory gibbet zum schreiben,
    aber zum ausführen?



  • Überleg Dir doch was mit CreateRemoteThread ().



  • @ramspanner

    wow 😮
    warum bin ich da nicht drauf gekommen?
    👍 super idee
    gleich mal testen, kann aber dauern bis morgen



  • das konstrukt steht schon in der theorie, nur eine frage hab ich dazu noch.

    das handle von openprocess(), kann das auch von einem anderen prozess benutzt
    werden? oder gibt das einen zugriffsfehler?



  • Hi,
    was doch auch eine Idee wäre, ist das du eine bestimmte Message für dein Programm A definierts bspl.

    #define WM_MSGFORMOTHERPROCESS (WM_USER+1)
    

    dir in Process B das HWND für das Fenster von Process A besorgst und mit **SendMessage
    **dies schickst.
    Und zum Schluss rufste im Case Zweig dieser Msg deine gewünschte Funktion auf ;).

    Gruß Pingu



  • fragezeichen? schrieb:

    das konstrukt steht schon in der theorie, nur eine frage hab ich dazu noch.

    das handle von openprocess(), kann das auch von einem anderen prozess benutzt
    werden? oder gibt das einen zugriffsfehler?

    handle sind prozesslokal


Anmelden zum Antworten