⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuanli.txt

📁 关于黑客的论坛的下载资料
💻 TXT
字号:

由 USTC 别扭整理, jazzman 再次整理

一. 病毒要传播,其媒介便是 DISK 喽 !
大家都知道磁盘的存储单位是面,磁道,簇,扇区(从大到小)。我们常见的
5(1/2)英寸的高密盘是双面 80 道,每道 15 扇区。容量为2x80x15x512=1200Kb。
小盘参数只是每道 18 个扇区。硬盘的单位分为磁头,磁道(柱面),簇,扇区。
不同类型的硬盘参数差别较大。每一个参数都从0开始编号。
dos 对磁盘的每一个扇区都有一个逻辑扇区号和一个绝对扇区号。容易理解
的是绝对扇区号。它的编号规则是0面0道1扇区是1号绝对扇区,将0道上的扇区排
完后,在排1面0道的扇区,再0面1道,1面1道......,对于硬盘来讲,面这一单
位被磁头代替,因为硬盘的磁头远不止2个。
而 dos 使用的基本都是逻辑扇区号,它的编号如下:从每个 dos 分区开始
的第一个扇区为0逻辑扇区。为什么说是从每个dos分区开始呢? 对软盘来讲,实
际就是1号绝对扇区。 但是硬盘它有一个很特殊的主引导分区。这一扇区(0头0柱
面1扇区)并不规 dos 管理。而且0头0柱整整一个柱面都不由dos管理。因此dos将
主引导分区称为隐含扇区,而将0柱面上的其它扇区称为隐藏扇区。dos的0号逻辑
扇区(boot区)就是隐藏扇区后的第一个扇区。紧跟其后的是FAT表和根目录区。绝
对扇区号和逻辑扇区号的关系如下:

逻辑扇区号 = 绝对扇区号 - 隐含扇区数 - 隐藏扇区数。

如果你使用了 pctools 的 edit 功能查看某一文件的内容,它会显示一个 ABSOLUTE
SEC.NO。其实这个“绝对扇区”号实际是一个逻辑扇区号。
另外,大家在编写汇编程序是会看到写盘的中断调用有两个 int 13h 的2号
子功能和 int 25h(磁盘绝对写);大家可不要对 int 25h 的名称信以为真,int 25h
写盘时用的参数 A 面 B 道 C 扇区 ,如果用绝对扇区号的编号方法对其编号。
A*X1+B*X2+C,X1:track/face,X2: sec/track。这个结果正好是此扇区的逻辑扇
区号。所以它是 dos 分区的绝对写。
真正的磁盘绝对写是 int 13h,它的调用参数于实际的物理编号相同。所以
如果你要读出主引导分区的内容只能用 int 13h,如果使用 int 25h,那么你读
到的内容将是 dos 的 boot 区的内容。
今天就到此为止。下一次我们谈谈簇号于逻辑扇区号的对应。

非常欢迎Ocat Na 来virus主"砍"病毒之基本知识篇, 但(1) 中有一个名词容易
混淆, main boot sector一般叫做 保留扇区.

多谢! 多谢 ! 请您接着"砍"

bear --
* Origin: 中国科大BBS站

不对,现在保留扇区往往是 0 面 0 道的所有扇区,另外应该 0 面 0 道 1 扇开始。

别扭 --
* Origin: 中国科大BBS站

不是吧,至今为止,我看到过的所有main boot 的内容里,保留扇区数都是1,而隐藏扇区
数等于每道扇区数.所以,隐藏扇区应该是0面0道 的所有扇区,

bear --
* Origin: 中国科大BBS站

的确是我弄错了, 隐藏扇区数是 DOS 分区前的所有扇区数, 保留扇区是不能用于
文件系统的扇区, 现在保留扇区一般只包含了 boot 区, 所有保留扇区数一般是 1

别扭 --
* Origin: 中国科大BBS站

开篇之前,先要多谢板主bear和Jun Fang两位的指正.后查资料,方知bear所言未错.小子
我日后定当注意.锣声已响,众位听我再讲:

(二)
1. 绝对扇区号于磁头号,磁道号,扇区号的对应关系.
这里扇区号指的是每一磁道内的扇区的排列序号(从1开始编号),

扇区号 = 绝对扇区号 MOD 每道扇区数 + 1 ;
磁头号 = (绝对扇区号 / 每道扇区数) MOD 磁头数;
磁道号 = (绝对扇区号 / 每道扇区数) / 磁头数;

2. dos 里有一个比磁道小,比扇区大的单位: 簇. dos 的文件基本单位就是簇,
高密盘的每簇扇区数为1,而硬盘的每簇扇区数变化较多,有2,4,8等等;一个文件
即使只有1个bytes,它也要一个簇的磁盘空间来存放它,因此造成浪费.有的磁盘
压缩软件往往自己内部将磁盘的每簇扇区数=1,再采用一些压缩算法对文件进行
压缩.
dos里簇号是从2开始的,因为dos 分区的boot区和FAT表要占有一部分磁盘空间
0,1俩簇就是留作此用的.
目前的软盘都用12比特来存储簇号,而硬盘使用16比特,那么簇号与逻辑扇区号
的关系如下:
逻辑扇区号 = (簇号 - 2 )*每簇扇区数+该分区的起始逻辑扇区号.
每一分区的起始逻辑扇区号在分区表里都有记录.分区表从main boot sector偏移
1BE处开始,在此基础上,内容如下:
_________________________________________________________
START : 1BEH 长度 描述:
_________________________________________________________
00H BYTE 引导指示符(通常为80h)
01H BYTE 分区引导记录磁头号
02H WORD 分区引导记录扇区号及道号
04H BYTE 系统指示符(ver no.)
05H BYTE 分区结束磁头号
06H WORD 分区结束扇区号及道号.
08H DWORD 分区前扇区数
0CH DWORD 分配给分区的扇区数
_______________________________________________________________

另外将dos分区内的磁盘描述参数罗列如下:
_______________________________________________________________
偏移量(H) 长度(BYTE) 描述
_______________________________________________________________
03 8 标识
0B 2 字节数/扇区
0D 1 扇区数/簇
0E 2 保留扇区数
10 1 FAT表个数
11 2 目录大小
13 2 总扇区数
15 1 介质描述符
16 2 扇区数/FAT表
18 2 扇区数/磁道
1A 2 磁头数
1C 2 隐藏扇区数
_____________________________________________________________

这些参数在病毒传染时相当重要,病毒根据它们在磁盘内精确的定位一个扇区,
并且将一些数据或PROGRAM 写入.过程是,先在FAT表中找到一个空簇,然后根据
以上公式计算出它的逻辑扇区号,再计算它的绝对扇区号,再定位到磁头号,磁道
号以及扇区号.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -