从文本创建COM文件

时间:2011-03-21 22:03:56

标签: windows com assembly ascii

提供的答案here是一个非常棒的技巧。仅仅为了我自己的启发,我想学习创建那种类型的程序。

是否有一个很好的库可以用来确保我的输出完全是ASCII?或者我将开始使用哪些工具来生成该类型的输出?我知道我可能会创建一个16位应用程序,但我也可以生成32位应用程序吗?

我发现MSFT的debug.exe程序有一个可以使用它的汇编程序,但我收到的输出并不完全是ASCII。另外,当拆解谢继雷'Lenik的答案中提供的程序时,我看不到他在哪里呼叫int 21写入屏幕。这种类型的程序是否有更多的文档?

其他人可以解决这些谜团吗?

4 个答案:

答案 0 :(得分:4)

text-to-com文件是一个非常巧妙的技巧。它利用了16位加载器将图像加载到偏移量0x0100并开始在该地址执行的事实。

exe文件包含无法表示为文本的binary header。因此,您无法创建严格文本的32位或64位可执行文件。

答案 1 :(得分:4)

仅使用可打印字符的.COM文件的典型示例是EICAR,这是用于测试防病毒的文件。前段时间,在bugtraq上有一个discussion thread about EICAR

答案 2 :(得分:2)

除了小心使用所有映射到ASCII字符的机器代码之外,这里没有真正的“技巧”。我目前无法反汇编代码,但谢继雷'Lenik表示存在一些自修改代码。

答案 3 :(得分:2)

在MSDOS程序的那一天,简单程序是使用汇编编写的,或者可能编译并链接到.COM-虽然这不像直接汇编到.COM那样常见。

要知道该做什么(pre-www),我们获得了两本或三本参考书,包括Peter Norton's Programmer's Guide to the IBM PC,又名“粉红衬衫书”。

拉尔夫·布朗的中断名单是一个合理的替代品并且在线here

除非您有旧计算机,否则找到MSDOS .COM文件的有效执行环境可能具有挑战性。