P/Invoke, DllImport und DllMain



  • Hallo alle zusammen!

    Ich habe mein Hauptprogramm (C#, WPF) (A.exe). Das Programm benutzt eine C# DLL(B.dll), die mit Hilfe von [DllImport], die in meiner C++ geschriebenen Dll (C.dll) Funktionen "übersetzt".

    Außerdem wird die C.dll in einen Prozess durch die Dll Injektion eingesetzt.

    Mein Problem ist nun, dass sich die ganzen Sachen überlappen. Entweder ich nutze die DllMain Funktion und es injeziert sich super! Dafür aber kann ich die DllImport Sachen nicht mehr nutzen (vermutlich Konflikte mit dem Einsprungpunkt).
    Die DllMain Funktion prüft, ob die Dll Injektion erfolgreich war.
    Wenn ich aber DllMain nicht nutze, funktionieren die anderen Sachen natürlich Prima. Dafür hab ich aber keine Dll Injektion mehr (vollständig).
    Ich hab auch schon versucht, extra eine C++ Funktion zu schreiben, die prüft, ob die Injektion erfolgreich war und hab die natürlich auch mit DllImport "übersetzt". Da entsteht ebenfalls ein Konflikt.

    Gibt es eine Möglichkeit, die Dll Injektion durchzuführen und trotzdem von C# aus Zugriff auf die Funktionen zu haben, während sie im Prozess sind?

    Vielen Dank!



  • Tut mir leid ich verstehe nicht wirklich was du da versuchst zu machen.

    Du injizierst die C.dll in einen anderen Prozess und versuchst dann auf ihre Funktionen von A.exe (mit Hifle der B.dll) darauf zuzugreifen ? Habe ich das richtig verstanden ?

    Außerdem verstehe ich nicht was die DLLMain mit der Injektion zu tun haben sollte, ob du darin Code ausführst oder nicht ändert doch nichts daran ob sie injiziert wurde ?

    Gibt es eine Möglichkeit, die Dll Injektion durchzuführen und trotzdem von C# aus Zugriff auf die Funktionen zu haben, während sie im Prozess sind?

    AFAIK nein. Ich keine keine Möglichkeit von einem Prozess A auf auf Prozess X zuzugreifen und dessen Funktionen aufzurufen.
    Was genau hast du denn bisher schon geschafft und was genau klappt nicht ?


Anmelden zum Antworten