Frage

Ich bin derzeit mit DLL-Injektion und Notwendigkeit arbeitet eine einzelne Hybrid binär zu haben, der sowohl als ausführbare Datei und eine DLL handeln könnte. Ich dachte an vielleicht ein DllMain und WinMain Funktion zu schreiben und sie dann als ausführbares kompilieren, aber ich weiß nicht, was passieren würde, wenn ich das getan habe. Ich weiß, dass es posssible ist eine DLL und exe zu kombinieren, indem so etwas wie ThinApp oder Extrahieren den DLL in ein temporäres Verzeichnis verwenden, dann geht von dort aus, aber ich will nicht zu verwirren mit einem dem Zeug. Also im Grunde ist es möglich, einen WinMain und Dll Main zu definieren und dann die resultierende ausführbare Datei als beide verwenden, und wenn nicht, dann ist dies überhaupt möglich? Vielen Dank im Voraus!

War es hilfreich?

Lösung

Nein.

Sowohl eine DLL und eine EXE eine PE (Portable Executable) Header. Das Header hat ein Feld IMAGE_FILE_HEADER::Characteristics. Bit 14 dieses Feldes entweder 0 (für eine EXE-Datei) oder 1 (für eine DLL).

Andere Tipps

Warum Sie alle nicht setzen den gemeinsamen Code in eine statische Bibliothek (LIB) und haben beide DLL-Projekt und EXE-Projekt als eine sehr dünne Wrapper um die statische Bibliothek?

Sie können eine temporäre Kopie der ausführbaren Datei erstellen, die PE-Header Patch und diese Kopie injizieren. Ein anderer Weg ist die DLL als binäre Ressource an die ausführbare Datei zu setzen. Am Laufzeit Sie diese binäre Ressource in eine temporäre Datei schreiben kann, und verwenden Sie diese für die Injektion.

Es ist möglich, auch Funktionen aus einer exe zu exportieren. Sie sollten also von GetProcAddress (hFoo, "bar"), gefolgt von Loadlibrary ( "foo.exe") in der Lage sein,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top