Zitat von
wicht:
Bevor ich jetzt anfange (lange) rumzuprobieren... Verstehe ich dich richtig, dass ich anstelle von LoadLibraryA() LdrLoadDll() benutzen soll? Das frage ich, weil ich keine 'Lust' habe rumzuprobieren, stundenlang, und es nichts bringt, weil ich dich nicht verstanden habe
...
Ja und nein. Ich befürchte da jetzt etwas weiter ausholen zu müssen. Aber ich denke mal, das ist notwendig weil Du es ansonsten eher nicht verstehst
.
Was passiert wenn Du einen Prozess startest? Vereinfacht gesagt, mapped Windows das Image (die Datei) der Anwendung in den Speicher, lädt evtl. statisch gelinkte Bibliotheken, initialisiert jede einzelne Bibliothek in der Reihenfolge ihrer Abhängigkeiten zu einander und springt dann erst an einen fix definierten Punkt innerhalb deiner Anwendung und fängt an die Befehle dort abzuarbeiten. Dieser definierte Punkt nennt sich Entry Point.
Ich empfehle Dir nun den Prozess SUSPENDED zu starten. Dann wird der Prozess bis zu dem Punkt vorbereitet, an dem die Ausführung am Entry Point beginnt. Dort änderst Du den Entry Point einfach, so daß bevor irgendetwas gemacht wird, ein LdrLoadDLL() ausgeführt wird, der deine Bibliothek lädt und DANN erst der Code am Original Entry Point ausgeführt wird.
Das hat mit deiner jetzigen Methode nicht viel zu tun, ist aber deutlich zuverlässiger, weil Du nur so sichergehen kannst, daß deine
DLL geladen wird zu einem Zeitpunkt, an dem sie überhaupt geladen werden kann.
Zitat von
wicht:
Falls jemand (oder du *g*) noch einmal hilft wäre ich sehr dankbar!
Erstmal noch einen schönen Samstag
Naja, für was willst es denn benutzen? Prinzipiell lassen sich so problemlos hübsche Usermode Rootkits bauen. Das würd ich eher nicht unterstützen
.