可执行格式及如何利用它们

COM可执行格式非常简单,非常优雅。它们只是计算机将执行的指令包,放在DOS程序段前缀之后。没有重新定位,没有代码分析,也没有重新排序技巧-我们从今天复杂而混乱的格式中所期望的东西都没有。当然,这使得他们很容易受到恶意软件的攻击,但这也使得程序变得更小,更容易理解。我来告诉你我的意思。

所以,我写了两个程序来做同样的事情。一个被编译成一个COM文件,另一个被编译到一个DOS EXE中。程序集代码如下所示:

Image title

在编译时,COM文件是一个惊人的20个字节(!),而EXE是536字节。生成的二进制代码,只是为了比较:

Image title

左边的COM文件只包含说明。右边的EXE文件包含指令(文件末尾)、重定位和文件前28个字节中的程序信息。还有,有很多空旷的空间没有被利用。注意:如果您查看0x08和0x09,您将看到这些字节存储0x0020值(记住:PC也是小Endian)。这是为报头保留的16字节段落数,它将您带到地址0x0000200的可执行代码的开头。如果您正在编写病毒,则该信息为您提供了所有需要了解的信息,您可以在哪里填充代码以供以后执行。COM文件很容易被感染,而DOS EXE文件(或MZEXE文件,以文件前两个字节中神奇的数字命名)只是稍微困难一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值