%20in%20eine%20PE.exe%20(Windows).png)
Ich bin ein Neuling, wenn es um die Verwendung von Maschinencodedateien geht!!!
Ich muss eine als ELF (Linux) erhaltene ausführbare Maschinencodedatei in eine EXE-Datei für Windows umwandeln. Ich habe „objconv“ ausprobiert, aber obwohl das Format die Verwendung von „-fPE“ vorschlägt, erhalte ich bei Verwendung dieses Befehls die Meldung „Fehler 2004 unbekannte Befehlszeile“ und „Fehler 2103 Eingabedatei kann nicht gelesen werden“. Ich vermute, dass zwischen den Linux- und Windows-Plattformen eine gewisse Inkompatibilität besteht.
Antwort1
Obwohl der zugrunde liegende Objektcode zwischen den Plattformen derselbe sein kann, können nicht-triviale native Anwendungen nicht binärkompatibel zwischen Windows und Linux sein.
Wenn die ausführbare Linux-Datei, die Sie konvertieren möchten, dynamisch verknüpft ist, erfordert dies das Vorhandensein von Bibliotheken, die unter Windows nicht vorhanden sind (Sie können diese Liste der Bibliotheken anzeigen, indem Sie sie ldd /path/to/program
auf dem Linux-Computer ausführen).
Auch wenn Sie alle Bibliotheken in das ausführbare PE-Format konvertiert oder statisch verknüpft haben, ruft das System dieNT-KernelUndLinux Kernelsind völlig verschieden. Es gibt keine direkte Eins-zu-eins-Entsprechung zwischen ihnen.
Am besten suchen Sie nach Möglichkeit den Quellcode der Originalanwendung. Wenn das Programm portierbar geschrieben ist, kann es sowohl unter Windows als auch unter Linux kompiliert werden. Auch wenn die Systemaufrufe auf beiden Plattformen nicht gleich sind, weist eine Teilmenge ihrer C-Bibliotheksimplementierungen ein standardisiertes Verhalten auf.
Antwort2
Das wird mit ziemlicher Sicherheit nicht funktionieren. Linux und Windows vertragen sich nicht gut. Die Anwendung, die Sie „konvertieren“ möchten, muss aus dem Quellcode für Windows neu erstellt werden (wofür Windows-spezifische Patches erforderlich sind). Mit etwas Glück verfügt die Anwendung, die Sie ausführen möchten, bereits über einen Windows-Port.
Antwort3
Vielleicht sollten Sie dies lesen https://github.com/microsoft/ebpf-for-windows/blob/main/docs/NativeCodeGeneration.md