阅读:2764回复:18
修改MBR程序,修改INT13中断
诸位好,在MBR被加载执行后,0:0000--0:00FF中的中断向量表关于BIOS的部分已经好了吗?还是DOS程序运行起来才设置中断向量
表。那么我想在实模式时钩INT13怎么办? 附个人理解,望大家指正 在WIN98的整个运行中,对磁盘的操作只有两种服务:1,INT13(实模式,IOS未被完全加载时) 2,IOS通过PDR(保护模式,所有的磁盘操作包括INT13,INT21中的磁盘操作都被转化为IOS请求) |
|
最新喜欢:![]() |
沙发#
发布于:2002-11-24 15:53
为什么?请指教
|
|
板凳#
发布于:2002-10-18 11:51
仁兄是不是有点武断了,WINDOWS 会检查的,比如修改了INT 13的地址值,在DOS VM 下它还和你没修改时的值相同,但是假如你修改了INT E0的值,则DOS VM下就是你的修改值
|
|
地板#
发布于:2002-10-17 17:46
有影响! 不是有没有影响的问题。 DOS VM 就是用它。 |
|
|
地下室#
发布于:2002-10-17 17:45
啥影响?
|
|
|
5楼#
发布于:2002-10-17 17:22
有影响!
|
|
6楼#
发布于:2002-10-17 16:01
我还在实验,我想有影响
|
|
7楼#
发布于:2002-10-17 15:10
你认为呢?大家认为呢?
|
|
|
8楼#
发布于:2002-10-17 14:38
请问这时的修该对WINDOWS的DOS VM有影响吗?
|
|
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 ;搞定。 |
|
|
10楼#
发布于:2002-10-16 12:39
呵呵!看来大狗也是从玩DOS开始的高手啊!内存的位置我也忘记了!
|
|
11楼#
发布于:2002-10-16 12:14
如果是在 MBR 里,简单的做法就是先把 BIOS 数据区里的内存大小
减小 n K,就可以把你的程序放到 640K 常规内存的高 n K 部分。 DOS 是不会再用这部分的,DOS 会报告常规内存为 640-n K。 内存大小的存储位置我记不清了(好多年了),找本 BIOS 或 DOS 的书,上面都应该会有的。 |
|
|
12楼#
发布于:2002-10-16 09:40
先谢过两位。
我还有一点不明白 我想在MBR中截获INT 13,并一直使自己的钩挂程序保留在内寸中,我应该在MBR运行时在哪里开辟一块内寸,可以常驻内寸,而不被后来的DOS冲掉? |
|
13楼#
发布于:2002-10-15 20:49
诸位好,在MBR被加载执行后,0:0000--0:00FF中的中断向量表关于BIOS的部分已经好了吗?还是DOS程序运行起来才设置中断向量 在 MBR 里截获也行,在 DOS 启动后截获也行。都是实模式的。 |
|
|
14楼#
发布于:2002-10-15 17:25
我想有一点要明白,0x000-0x3FF处为中断向表不是DOS规定的,这是BIOS的规范。系统加电时,相关BIOS中断向量被初始化,19h肯定是在0x0:0x0064处。同时位于芯片中的BIOS程序被映射到了内存中的高端。如显存内存一般位于0xC800:0000等。
|
|
|
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吗? |
|
16楼#
发布于:2002-10-15 16:34
为什么什么也看不到
|
|
17楼#
发布于:2002-10-15 15:48
开机自检后,Int 19h加载MBR到0:7c00处,此时,所有BIOS中断已经设置妥当,如int 10, int 8, int 9等。但是所有分配给操作系统的中断不可用(这点很容易理解),MBR执行完毕后,BOOT程序被调入内存,其负责设置DOS相关中断,并改写有关BIOS中断,进行DOS实模式初始化。。。
|
|
|
18楼#
发布于:2002-10-15 14:43
其实我是想在WIN98整个运行期间监视所有对磁盘的读写操作,各位给出出主义。
|
|