终于搞定bochsdbg调试dos下保护模式程序

本文介绍了一种在保护模式下调试操作系统的技巧。通过设置一个特殊的段并填充shellcode实现跳转回到原始代码执行点的方法,避免了死循环或修改EIP等传统调试手段带来的不便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-----------------------------------------------------牢骚,不用看-----------------------------------

最近又回到了操作系统的研究,搞来搞去,发现自己基本啥都会,精的不多。这是好,还是不好,我现在也不知道,反正不能克制自己,看到有意思的东西就想弄弄。 主要的目标还是定于底层,照目前的发展来看,以后应用层肯定是web的天下,web式的操作系统应该是主流。但支持这个系统的底层系统也会不少,按我个人情况,写写c和汇编应是强处。快奔三的人了,感觉还是一玩是处,虽然一直在努力,也是一直没啥突破。

----------------------------------------------------正文开始---------------------------------------

相信很多人都被这个东东给困扰了吧,有看到网上其他高手提出的方案,死循环改eip之类,试了下,感觉不爽,昨天晚上在床上想了一下,白天利用上班时间给实现了,(嘿嘿),首先给图,这是调试,已在调试状态进入了保护模式。

bochs

代码:

LABLE_BEGIN:
        mov  dx, cs
        mov  cx, 400h  ;;400h,自己乱定的,可以改,这个就是调试时用的断点
        mov  ds, cx
        mov  byte [ds:0], 00eah    ;;ea是jmp的机器码,加下面两句就是 jmp offset:seg,也就是跳回
        mov  word [ds:1],LABLE_REAL_START
        mov  word [ds:3], dx
        jmp  400h:0h           ;;跳到断点
LABLE_REAL_START:
        原来的代码

原理很简单,自己先设一个段,这个段可以用bochsdbg能断下来的,然后在段里面填shellcode,(也就是机器码) jmp offset:seg,跳回去,执行原来的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值