Преобразование исполняемого файла ELF (Linux) в PE.exe (Windows)

Преобразование исполняемого файла ELF (Linux) в PE.exe (Windows)

Я новичок в использовании файлов машинного кода!!!

Мне нужно использовать исполняемый файл машинного кода, полученный как ELF (Linux), в exe-файле для Windows. Я пробовал 'objconv', но, хотя формат предполагает использование '-fPE', когда я использую это, я получаю командную строку с сообщением 'Ошибка 2004 неизвестная командная строка' и 'Ошибка 2103 не может прочитать входной файл'. Я подозреваю, что есть некоторая несовместимость между платформами Linus и Windows

решение1

Хотя базовый объектный код может быть одинаковым на разных платформах, нетривиальные собственные приложения не могут быть двоично-совместимыми между Windows и Linux.

Если исполняемый файл Linux, который вы пытаетесь преобразовать, динамически связан, для этого потребуются библиотеки, которых нет в Windows (вы можете просмотреть этот список библиотек, запустив его ldd /path/to/programна машине Linux).

Даже если вы преобразовали все библиотеки в исполняемый формат PE или статически связали их, система обращается кЯдро NTиядро Linuxсовершенно разные. Между ними нет прямого взаимно-однозначного соответствия.

Лучшим вариантом будет найти исходный код оригинального приложения, если это возможно. Если программа написана переносимым способом, она может компилироваться как на Windows, так и на Linux. Несмотря на то, что системные вызовы на этих двух платформах различаются, подмножество реализаций их библиотеки C имеет стандартизированное поведение.

решение2

Это почти наверняка не сработает. Linux и Windows не очень хорошо работают друг с другом. Приложение, которое вы хотите «конвертировать», придется пересобрать из исходников для Windows (что потребует специфического исправления Windows). Если повезет, то приложение, которое вы пытаетесь запустить, уже имеет порт Windows.

решение3

Может быть, вам стоит это прочитать? https://github.com/microsoft/ebpf-for-windows/blob/main/docs/NativeCodeGeneration.md

Связанный контент