首页
社区
课程
招聘
[求助]从实模式切换到保护模式后的代码应该怎么调试
发表于: 2010-7-2 18:58 7978

[求助]从实模式切换到保护模式后的代码应该怎么调试

2010-7-2 18:58
7978
我在看于渊的《Orange'S...》这本书,我调试一个程序时却出现了问题,程序做的事情是首先从实模式切换到保护模式,然后在保护模式下读取0x00500000地址的内存,然后显示出来。

我在Bochs虚拟机下的FreeDos系统上用debug32调试的这个程序,可只能调试到这里:
mov    eax,cr0
or       eax,1
mov    cr0,eax          ;调试到这一句时,FreeDos会重启


麻烦大家给我指点一下,我要怎么样才能继续调试下去?我想跟到保护模式的代码里。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 35
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
jmp这句汇编有好几种类型 其中一种不常用的类型可以把实模式换倒到保护模式 那句jmp比较忽悠人 你看下机器码才会明白
2010-7-2 19:11
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我用的汇编编译器是Nasm,它允许在整个地址前加上DWORD,而不仅仅是偏移地址前,所以可以在16的代码段中编译出32位的地址,用jmp dword SelectorCode32:0这一句就可以设置好cs和eip了,没必要像Linux内核一样用db定义这个jmp了。

而且mov cr0,eax的下一句才是jmp dowrd SelectorCode32:0,现在还没执行到jmp,执行到mov这一句时FreeDos就已经重启了。我试着将这一句用nop填充掉,然后直接在debug32中用r cr0来修改cr0寄存器,但也是一样的,只要一回车DOS就崩掉了。

要怎么样才能打开cr0寄存器的PE位,并且使我能在DOS环境下继续调试后面的保护模式下的代码呢?
2010-7-2 19:25
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
已解决,感谢天杀老大指点的方法。

在Bochs的配置文件里加上一句magic_break: enabled=1,然后在程序里加上一句xchg bx,bx,运行到这条指令时会断到Bochs调试器里。这样就可以继续调试下去了。

在Bochsrc_sample.txt里有提到过的,我居然没有仔细看。
2010-7-2 20:06
0
雪    币: 198
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
xiilin,你好!
我遇到了和你同样的问题,deug32调式有问题。
但是我用你说的方法试了但还是没能返回bochs的调试,下面是我的操作流程,您帮着给看看拿步出问题了。
1.修改bochsrc文件
在文件末尾增加“magic_break: enabled=1”
2.pmtest.asm文件中增加语句chg        bx, bx,选了2个地方都没有成功
%include        "pm.inc"        ; 常量, 宏, 以及一些说明
;xchg        bx, bx
org        0100h
        ;xchg        bx, bx
        jmp        LABEL_BEGIN
3.启动bochs
bochs -f bochsrc
4.选择6
Please choose one: [6]
5.让bochs运行
<bochs:1> c  回车
6.在freedos中进入b盘,运行pmtest2.com
7.dos屏幕上显示处红色的打印字符串
未能成功的停在bochs中。
帮忙看看,我那里操作有问题阿?
谢谢!
2010-7-12 12:01
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我的Bochs版本是2.4.2,不知版本会不会有影响,因为你的步骤没问题。
我是把xchg bx,bx加在了org和jmp之间,程序运行后成功断下来了。
2010-7-14 14:06
0
雪    币: 198
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢回复!

问题找到了,原来是我没有把新编译生成的com文件拷贝到pm.img中。
比较低级的错误,惭愧。
2010-7-16 08:32
0
游客
登录 | 注册 方可回帖
返回
//