snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2764回复:18

修改MBR程序,修改INT13中断

楼主#
更多 发布于:2002-10-15 14:31
诸位好,在MBR被加载执行后,0:0000--0:00FF中的中断向量表关于BIOS的部分已经好了吗?还是DOS程序运行起来才设置中断向量
表。那么我想在实模式时钩INT13怎么办?

附个人理解,望大家指正
在WIN98的整个运行中,对磁盘的操作只有两种服务:1,INT13(实模式,IOS未被完全加载时)
2,IOS通过PDR(保护模式,所有的磁盘操作包括INT13,INT21中的磁盘操作都被转化为IOS请求)

最新喜欢:

fly_flyfly_fl...
wgqwdq
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-24 15:53
为什么?请指教
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-18 11:51
仁兄是不是有点武断了,WINDOWS 会检查的,比如修改了INT 13的地址值,在DOS VM 下它还和你没修改时的值相同,但是假如你修改了INT E0的值,则DOS VM下就是你的修改值
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-17 17:46
有影响!


不是有没有影响的问题。

DOS VM 就是用它。
[color=red]大头鬼! :P[/color]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-17 17:45
啥影响?
Tom_lyd
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-17 17:22
有影响!
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-17 16:01
我还在实验,我想有影响
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-17 15:10
你认为呢?大家认为呢?
Tom_lyd
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-10-17 14:38
请问这时的修该对WINDOWS的DOS VM有影响吗?
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-10-16 14:27
呵呵,我不依稀记得,如下:
1.计算你自己的int13大概多大,以K为单位。设刚好1K
2.减少高端内存数,以防DOS利用,并将新int 13的程序复制到此驻留。

push ds
mov ax, 40h
mov bx,13h
push ax
pop ds
mov ax,[bx]
dec ax  ;窃取1K
mov [bx],ax
mov cl,6
shl ax,cl ;呵呵,一个计算新高端段地址的巧妙方法
mov        es,ax
pop ds

; 开始拷贝
mov       si, offset new13; 假设为你的新程序的起始偏移
mov       cx, offset end_new13-offset new13;你的程序的实际大小
xor       di,di
;开始从DS:SI复制CX个字节到ES:DI
cld
repz      movsb
;搞定。

Tom_lyd
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-10-16 12:39
呵呵!看来大狗也是从玩DOS开始的高手啊!内存的位置我也忘记了!
cn18799
驱动老牛
驱动老牛
  • 注册日期2001-11-17
  • 最后登录2010-04-16
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望36点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-10-16 12:14
如果是在 MBR 里,简单的做法就是先把 BIOS 数据区里的内存大小
减小 n K,就可以把你的程序放到 640K 常规内存的高 n K 部分。
DOS 是不会再用这部分的,DOS 会报告常规内存为 640-n K。

内存大小的存储位置我记不清了(好多年了),找本 BIOS 或 DOS 的书,上面都应该会有的。

[img]http://www.danasoft.com/vipersig.jpg[/img] [img]http://www.driverdevelop.com/forum/upload/cn18799/2002-09-28_logo.gif[/img]
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-10-16 09:40
先谢过两位。
我还有一点不明白
我想在MBR中截获INT 13,并一直使自己的钩挂程序保留在内寸中,我应该在MBR运行时在哪里开辟一块内寸,可以常驻内寸,而不被后来的DOS冲掉?
cn18799
驱动老牛
驱动老牛
  • 注册日期2001-11-17
  • 最后登录2010-04-16
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望36点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-10-15 20:49
诸位好,在MBR被加载执行后,0:0000--0:00FF中的中断向量表关于BIOS的部分已经好了吗?还是DOS程序运行起来才设置中断向量
表。那么我想在实模式时钩INT13怎么办?

附个人理解,望大家指正
在WIN98的整个运行中,对磁盘的操作只有两种服务:1,INT13(实模式,IOS未被完全加载时)
2,IOS通过PDR(保护模式,所有的磁盘操作包括INT13,INT21中的磁盘操作都被转化为IOS请求)
 

在 MBR 里截获也行,在 DOS 启动后截获也行。都是实模式的。
[img]http://www.danasoft.com/vipersig.jpg[/img] [img]http://www.driverdevelop.com/forum/upload/cn18799/2002-09-28_logo.gif[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-10-15 17:25
我想有一点要明白,0x000-0x3FF处为中断向表不是DOS规定的,这是BIOS的规范。系统加电时,相关BIOS中断向量被初始化,19h肯定是在0x0:0x0064处。同时位于芯片中的BIOS程序被映射到了内存中的高端。如显存内存一般位于0xC800:0000等。
Tom_lyd
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-10-15 16:45
  Tom_lyd

    发表于: 2002/10/15 - 15:48
       开机自检后,Int 19h加载MBR到0:7c00处

///////////
我们都知道DOS时的内寸分配,在0:0000--0:00FF处是中断向量表
请问  “开机自检后,Int 19h ”就这时候中断向量表里19H*4=64H,
即0:0064处是Int 19h的CS:IP吗?
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-10-15 16:34
为什么什么也看不到
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-10-15 15:48
开机自检后,Int 19h加载MBR到0:7c00处,此时,所有BIOS中断已经设置妥当,如int 10, int 8, int 9等。但是所有分配给操作系统的中断不可用(这点很容易理解),MBR执行完毕后,BOOT程序被调入内存,其负责设置DOS相关中断,并改写有关BIOS中断,进行DOS实模式初始化。。。
Tom_lyd
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-10-15 14:43
其实我是想在WIN98整个运行期间监视所有对磁盘的读写操作,各位给出出主义。
游客

返回顶部