Конвертировать OMF16 в OBJ32

Есть ли способ конвертировать из 16-битного формата объектного файла OMF в 32-битный формат объектного файла COFF?

3 ответа

Предположительно код OMF16 предназначен для 16-битного реального режима x86 или 286 защищенного режима? В этом случае формат объектного файла на самом деле не является вашей проблемой, сам код полностью несовместим, поскольку в нем используются разные размеры регистров и другая схема адресации.

Более того, если код предназначен для DOS, Win16 или OS/2 (то есть для систем, использующих OMF16), то нацеливание его на 32-разрядную цель - это не просто случай преобразования формата объектного файла.

Вам нужно пересобрать из исходного кода, который дает теги к вопросу, является ли C или C++? Либо это, либо у вас есть серьезная задача обратного инжиниринга в ваших руках!

Я серьезно сомневаюсь, что такой будет. Код, предназначенный для работы в 16-битной среде, двоично несовместим с 32-битным режимом. Например, есть инструкция, которая указывает ЦПУ перевернуть размеры битов для следующей инструкции. В 16-битном режиме такая инструкция необходима для использования 32-битных инструкций. Однако тот же код операции необходим для использования 16-битных инструкций в 32-битном режиме.

В дескрипторе сегмента указывается, следует ли считать последовательность кодов операций 16 или 32 битами.

В любом случае, если у вас есть 16-битный код, который вы хотели бы использовать в 32-битном режиме, который не имеет зависимостей от ОС, вы можете использовать его, дизассемблируя его с помощью IDA, а затем перекомпилируйте его с 32-битным ассемблером. Конечно, только если это разрешено его лицензией. (хотя это может быть справедливое использование, но IANAL).

Если код также привязан к базовой ОС, это может быть намного сложнее и потребует переписывания, возможно, значительных частей кода.

Я искал в сети и нашел следующие ссылки: Первая - это набор инструментов:

http://sourceware.org/binutils/

Второй инструмент, который, я думаю, вам нужен: http://sourceware.org/binutils/docs/binutils/objcopy.html

Они работают не во всех случаях (bazsi77 выше), просто проверьте это.

Другие вопросы по тегам