利用debug工具将exe文件转换为com文件

首先,配置DOSBox+masm虚拟环境,参考:xp中dosbox+masm环境的配置(自用)_stdlibLOL的博客-CSDN博客

准备一个简单的汇编程序,参照该博客提供的com代码,稍作修改:简易com病毒分析_孑曦曦孑的博客-CSDN博客

.model small
program segment
    assume cs:program, ds:program, ss:program, es:program
    org 0100h
    main proc near
        mov dx, offset message
        mov ah, 09h
        int 21h
        mov ah, 4ch
        int 21h
        ret
    main endp
    message db 0dh, 'This is a simple com program for a test', 0dh, 0ah, '$'
program ends
end

将上述代码保存为example.asm,利用DOSBox指令生成example.obj和example.exe文件,然后使用debug工具进行转换。

第一步:debug example.exe

                使用r指令查看寄存器内容,当前IP寄存器内容为0000,该地址读取的指令为ADD [BX+SI], AL,不是example.asm中要求执行的第一条指令MOV DX, OFFSET MESSAGE 。

第二步:通过-r指令改变IP寄存器中内容为0100H,再用-r查看

               该步骤的目的是检查程序是否预留100H空间,若预留了空间,才能转换为COM形式。

可见当前执行指令为第一条语句MOV DX, OFFSET MESSAGE,说明确实预留了100H空间。

第三步:转换为COM文件

-n change.com   //确定文件名,必须带后缀
-w              //保存
Writing 00137 bytes
-q             //退出debug模式

 完成上述步骤后,在当前路径成功生成了change.com文件,实现了转换。

猜你喜欢

转载自blog.csdn.net/weixin_45681165/article/details/123912890