使用debug修改16位exe文件

一、使用软件

debug.exe、masm.exe、link.exe

二、前提条件

1.对汇编语言有一定的了解。
2.对于debug.exe这个软件有一定的操作基础。

三、预备知识

  • 1.EXE文件结构

    每个exe文件包含一个文件头和一个可重定位程序的映像。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映像中可重定位段地址的指针链表。exe文件的文件头结构如表所示:

偏移量含义
00h~01hMZ,exe文件标记
02h~03h文件长度除以512的余数
04h~05h文件长度除以512的商
06h~07h重定位项的个数
08h~09h文件头除以16的商
0ah~0bh程序运行所需最小段数
0ch~0dh程序运行所需最大段数
0eh~0fh堆栈段的段值(SS)
10h~11h堆栈段的段值(SP)
12h~13h文件校验和
14h~15h装入模块入口时的IP值
16h~17h装入模块代码相对段值(CS)
18h~19h重定位表,开始位置,以位移地址表示
1ah~1bh覆盖号(程序驻留为零)
1ch重定位表,起点由偏移18h~19h给出,项数由06h~07h标明
  • 2.debug.exe的w命令
    将文件或特定分区写入磁盘。使用不含参数的 w 将从 CS:100 开始写入。BX:CX寄存器中存储着要写入的字节数。在这里因为使用本命令就涉及到这两个点因此命令解释较为简单,如有需要自行百度。

四、思路

我们在跟踪debug的过程中发现debug在初始化过程中有解压缩的过程,所以我们在修改程序过程中需要避开这个加压缩的过程。我的思路就是修改解压缩过程中不会改变的部分,将这个部分的某一部分移动到debug解压缩过程不会涉及的地方。
我在这里写入了两段程序。第一段程序主要起到一个跳转和写入的功能,第二段程序就是需要写入的程序。debug过程结束后开始执行第一段程序,写入第二段程序从而实现修改debug的功能。

五,最后

成品及资料我都上传到了本人资源,大家如果有需要请移步下载具体内容修改过程都在里面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值