DLL injection Methode



  • Hey Leute,
    ich habe mir fix nen Injector geschrieben mit CreateRemoteThread. LoadLibraryA wird aufgerufen und ladet die DLL dann in den Prozessraum.
    Jetzt habe ich im best practice Guilde for DLLS folgendes nachgelesen:

    You should never perform the following tasks from within DllMain:
    • Call LoadLibrary or LoadLibraryEx (either directly or indirectly). This can cause a deadlock or a crash.
    • Synchronize with other threads. This can cause a deadlock.
    • Acquire a synchronization object that is owned by code that is waiting to acquire the loader lock. This can cause a deadlock.
    • Initialize COM threads by using CoInitializeEx. Under certain conditions, this function can call LoadLibraryEx.

    nur ein Teil davon. 95% der DLL injector Source Codes im Internet scheint das aber sowas von egal zu sein. Ich würde aber gerne ein sicheres Environment schaffen.
    Das ist also ein großes Problem für mich, da in DllMain von mir GUIs verwendet werden, welche wieder nen DLL laden usw. und das soll man ja nicht machen. Zudem müsste ich noch nen Thread erzeugen.
    Wie umgehe ich das Problem jetzt?
    Mir ist dieses gefrickel hier ( http://wiki.hackerboard.de/index.php/DLL-Injection ) wohl bekannt, welches eine Funktion in der DLL aufruft. Aber ich finde das macht keinen Spaß damit zu arbeiten^^
    Was gibt es denn noch für alternativen?
    Darf man in dem Callback in der DLL (WH_CBT bei der SetWindowsHookEx Methode besagte Funktionen aufrufen? )Ich will meine DLL aber auch nicht in jeden Prozess injezieren. Ich freue mich auf eure Unterstützung 🙂



  • Flashgott schrieb:

    95% der DLL injector Source Codes im Internet scheint das aber sowas von egal zu sein

    Was? Was hat der injection code mit der DllMain zu tun?
    Du kannst auch eine DLL mit leerer DllMain in den Prozess mappen.

    Die Regeln für DllMain gelten für alle DLLs, egal ob in einen fremden Prozess gemapped oder nicht.

    Ich glaube, wenn du aus der DllMain eine naked function aufrufst, kannst du in der machen, was du willst.
    Bin mir da aber nicht sicher.



  • jo das weis ich, aber wäre das mit dem CALLBACk auch sicher?



  • Was soll das? Macht nicht so einen Unfug! Benutzt für sowas keine Funktionen wie CreateRemoteThread wenn ihr nicht wirklich sicher seit was ihr da macht bzw. das wirklich braucht!!!

    Microsoft hat zu diesem Zweck einfache Funktionen zu Verfügung gestellt. Also benutzt die auch!



  • genau^^ und deswegen habe ich auch die Frage im letzten Post gestellt aber mir antwortet ja keiner.



  • In einer normalen CALLBACK Funktion kann man alles machen, nur inerhalb von DllMain muß man aufpassen.



  • sicher? Können die MVPS das bestätigen? Hab das nämlich noch nie gesehen dass das zeug im callback ausgeführt wird das man machen will



  • Also mir fällt nichts ein was man da nicht darf. Ausnahme ist wie schon gesagt wurde DllMain.

    Man sollte sich aber im klaren sein das so eine CALLBACK Funktion mit SetWindowsHookEx & Co sehr oft aufgerufen wird. Am besten am Anfang eine Variable abfragen und setzten.


Anmelden zum Antworten