Frage

Ich habe eine Anwendung (Win32 EXE -Datei) ohne Quellcode.

Ist es möglich, eine C# -Anwendung zu schreiben und eine Funktion in dieser Win32 .exe -Datei wiederzuverwenden?

War es hilfreich?

Lösung

Du kannst rennen

dumpbin.exe /exports [your-win32.exe]

Und sehen Sie, welche Funktionen es exportiert. Dann können Sie verwenden (was auch immer das C# Äquivalent von ist) Lastlibrary () und GetProcaddress () diese Funktionen anzurufen.

Natürlich müssen Sie die Signaturen dieser Funktionen kennen, um sie richtig anzurufen. dh Nummer und Reihenfolge der Parameter usw.

Andere Tipps

Ich weiß nicht, ob Sie dies suchen, aber wenn der andere Exe eine GUI hat, können Sie wahrscheinlich einige Sachen tun, indem Sie Nachrichten an sie senden. Führen Sie einfach Spy ++ aus, tun Sie mit der anderen App, was Sie wollen, und schauen Sie sich das Protokoll an, wenn Sie fertig sind. Wenn keine speziellen Steuerelemente verwendet werden, können Sie diese GUI bedienen, indem Sie die Griffe der gewünschten Steuerelemente erhalten und ihnen die entsprechenden Nachrichten senden. Wenn Sie nicht möchten, dass der Benutzer weiß, dass Sie die andere App ausführen, können Sie sie auf einem anderen Desktop ausführen.

Eine weitere Option, die Sie ausnutzen können, besteht darin, Ihren eigenen Thread im Prozess des anderen Exe auszuführen und in einer der verschiedenen verfügbaren IPC -Techniken an Ihre App zu kommunizieren. Viele Fragen wurden hier zur Remote -Thread -Injektion gestellt. Schauen Sie sich also einfach um.

Wenn Sie Glück haben, ist die Funktionalität, die Sie benötigen, tatsächlich auf einer der von der EXE verwendeten DLLs, entweder als exportierte Funktionen oder als COM -Schnittstelle. Schauen Sie sich die Laufzeit mit dem Prozess -Explorer oder so an und prüfen Sie, ob eines der Module interessant aussieht. In Bezug auf andere Module sind DLLs offensichtlich viel einfacher.

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