Führen Sie native DLLs zu exe zusammen


1

Ist es möglich, mehrere native DLLs zu einer Exe zusammenzuführen?

Ja, mir ist bewusst, dass dies mit .NET / Mono / Managed-DLLs problemlos möglich ist. Kann ich das auch mit nativen DLLs tun? Ich habe UPX gefunden , aber anscheinend können die Dateien nur gepackt und nicht zusammengeführt werden.

Antworten:


1

Dynamic Link Libraries können extern verwendet werden. Während es theoretisch möglich sein sollte, die darin enthaltenen Funktionen neu zu packen, besteht das Beste, was Sie zuverlässig tun können, darin, alles in ein selbstextrahierendes Archiv zu packen, das die ausführbare Datei und ihre DLLs in einen temporären Ordner extrahiert und dann die ausführbare Datei ausführt.

Wenn Sie den Quellcode in den Griff bekommen, können Sie ihn wahrscheinlich mit minimalen Änderungen an einer statischen Bibliothek (.lib) kompilieren, die mit dem Programm verknüpft sein könnte, das die DLLs benötigt, anstatt dass die DLLs extern sind.


2

Angenommen, Sie haben eine ausführbare Datei, die statisch aus einer DLL importiert wird, können Sie das Tool pefrmdllembed mit der Befehlszeilenoption "-impinj" verwenden. Es kann native DLL-Dateien in native EXE-Dateien (mit derselben Architektur) zusammenführen, während die Importe aufgelöst werden.

Beispiel: pefrmdllembed.exe -impinj myapp.exe ogg.dll myapp_injected.exe

Es funktioniert mit den meisten DLLs. Seien Sie vorsichtig mit speziellen NT Loader-Funktionen wie statischem TLS. Unter 64-Bit nicht unterstützt und unter 32-Bit möglicherweise keine guten Ergebnisse.


Vielen Dank für die Bewerbung. Es funktioniert großartig für mein Projekt. Leider ist es nicht mit UPX kompatibel. Weder Komprimierung vor noch Komprimierung nach dem Packen der Dateien in eine einzelne ausführbare Datei.
Julo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.