提供的答案here是一个非常棒的技巧。仅仅为了我自己的启发,我想学习创建那种类型的程序。
是否有一个很好的库可以用来确保我的输出完全是ASCII?或者我将开始使用哪些工具来生成该类型的输出?我知道我可能会创建一个16位应用程序,但我也可以生成32位应用程序吗?
我发现MSFT的debug.exe
程序有一个可以使用它的汇编程序,但我收到的输出并不完全是ASCII。另外,当拆解谢继雷'Lenik的答案中提供的程序时,我看不到他在哪里呼叫int 21
写入屏幕。这种类型的程序是否有更多的文档?
其他人可以解决这些谜团吗?
答案 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文件的有效执行环境可能具有挑战性。