关于BOCHS调试保护模式程序的思路

在DOS下调试保护模式程序不能用DEBUG或者TURBO DEBUGGER等调试器,而BOCHS则可以。因为我们不知道程序加载的时候其物理地址是多少,所以没办法在程序的指定物理地址下断点,但是我们可以把断点下到一个系统固定的地址,这个地址的数据应该是非关键的,然后我们把这个地址里的内容PATCH成RET(F),把我们要调试程序的入口代码加上一段跳转到这个地址,然后我们在BOCHSDBG里对这个地址下断点,代码断到这个地址后,继续执行一个RET(F)就跳回我们要调试的程序地址空间里去了。

 

转载别人的一段代码:

jmpseg   equ   40h      ;打算修改的段
mov      ax,jmpseg
mov    ds,ax               ;ds=打算修改的段
mov       ax,ds:[0]            ;修改 ds:0 的位置
push       ax               ;安全起见,在堆栈保存这个位置的值
mov      byte ptr ds:[0],0cbh      ;将这个位置设置为 retf
push      cs
push      offset    back            ;设置返回位置
db      0eah               ;远跳转
dw      0
dw      jmpseg
back:                  ;跳过去后马上回来
pop      ax
mov      ds:[0],ax            ;再恢复下面就是继续执行了

BOCHS中断系统的时候,用vb 0x40:0就可以对这个地址下断点了。

转载于:https://www.cnblogs.com/robinh00d/archive/2010/03/01/1675323.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值