Перетворення виконуваного ELF (Linux) у PE.exe (Windows)


0

Я новачок, коли мова йде про використання файлів машинного коду !!!

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


це не спрацює. Який інструмент ви намагаєтеся конвертувати? Подивіться, чи вже є збірка Windows.
magicandre1981

1
Це звучить як проблема XY . Вам потрібно пояснити, що ви намагаєтеся зробити, а не як ви намагаєтеся це зробити. (Ви починаєте, кажучи "Мені потрібно використовувати ...", але не пояснюйте, для чого це потрібно робити. Це робить неможливим відповісти на ваше запитання.)
David Schwartz

1
Те, що ви просите зробити, неможливо. Однак ви можете змусити ELF працювати в Windows за допомогою Cygwin або пов'язаного інструменту, а EXE можна запускати в Linux за допомогою WINE. І звичайно, ви могли запустити все у вітринах.
Парфянський розстріл

Відповіді:


1

Хоча базовий об'єктний код може бути однаковим між платформами, нетривіальні власні програми не можуть бути бінарними сумісними між Windows та Linux.

Якщо виконуваний файл Linux, який ви намагаєтеся перетворити, динамічно пов'язаний, це вимагатиме наявності бібліотек, яких немає в Windows (цей список бібліотек ви можете побачити, працюючи ldd /path/to/programна машині Linux).

Навіть якщо ви перетворили всі бібліотеки у виконуваний формат PE або статично пов’язали їх, системні виклики до ядра NT та Linux ядра абсолютно різні. Між ними немає прямої кореспонденції.

Найкращим варіантом було б знайти вихідний код оригінальної програми, якщо це можливо. Якщо програма написана портативно, вона може компілюватись як у Windows, так і в Linux. Незважаючи на те, що системні виклики неоднакові між двома платформами, підмножина їхніх реалізацій бібліотеки С має стандартизовану поведінку.


0

Це майже точно не вийде. Linux та Windows не грають одна з одною добре. Додаток, який ви хочете "конвертувати", доведеться перебудовувати з джерела для Windows (що вимагатиме певного виправлення у Windows). При будь-якій удачі програма, яку ви намагаєтеся запустити, вже має порт Windows.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.