首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OMF16转换为OBJ32

将OMF16转换为OBJ32
EN

Stack Overflow用户
提问于 2011-04-25 13:37:40
回答 3查看 218关注 0票数 0

有没有办法从OMF 16位目标文件格式转换为COFF 32位目标文件格式?

EN

回答 3

Stack Overflow用户

发布于 2011-04-25 14:29:43

我非常怀疑有没有这样的人。设计为在16位环境中运行的代码与32位模式的二进制不兼容。例如,有一条指令告诉CPU为即将到来的指令翻转位大小。在16位模式中,需要这样的指令来使用32位指令。然而,在32位模式下使用16位指令需要相同的操作码。

假设一系列操作码是16位还是32位,在段描述符中指定。

无论如何,如果你有16位代码,你想在32位模式下使用,它没有操作系统依赖性,你可以使用IDA反汇编它,然后用32位汇编程序重新编译它。当然,只有在它的许可证允许的情况下。(虽然这可能是合理使用,但IANAL)。

如果代码还绑定到底层操作系统,这可能会更加困难,并且可能需要重写代码的重要部分。

票数 1
EN

Stack Overflow用户

发布于 2011-04-25 15:46:50

假设OMF16代码针对的是16位x86实模式或286保护模式?在这种情况下,目标文件格式实际上不是你的问题,代码本身是完全不兼容的,因为它使用不同的寄存器大小和不同的寻址方案。

此外,如果代码针对的是DOS、Win16或OS/2 (即使用OMF16的系统),那么将其针对32位目标不仅仅是转换目标文件格式的情况。

您需要从源代码重新构建,为问题提供标签的代码是C还是C++?要么就是你手上有一项重要的逆向工程任务!

票数 1
EN

Stack Overflow用户

发布于 2011-04-25 14:37:30

我在网上搜索过,发现了这些链接:第一个是工具的集合:

http://sourceware.org/binutils/

第二个是我认为您需要的工具:http://sourceware.org/binutils/docs/binutils/objcopy.html

它们并不是在所有情况下都能工作(上面的bazsi77),只是测试一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5775550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档