ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:19.17KB ,
资源ID:8352636      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8352636.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(usbzip+引导技术分析.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

usbzip+引导技术分析.docx

1、usbzip+引导技术分析usbzip+引导技术分析 通过对ultroiso的usbzip+启动方式的分析,现分享心得如下: 一.usbzip简介 ZIP一种软驱,在U盘广泛普及的今天很少用了,但是U盘也需要格式,象量产出的usb-cdrom光盘格式,格式化出的hdd硬盘格式,当然还有zip软盘格式. zip是一个软盘,他的结构是hdd的一个子集,很象hdd硬盘的一个卷,但没有mbr,不能分区,形式和硬盘其中的一个分区fat32分区完全一样. 二、usbzip+原理 usbzip+的目标是兼容usbzip和usbhdd两种格式,他的技术核心是启动扇区同时拥有硬盘分区和卷bpb表,这样他看起来即

2、是一个硬盘,又是一个软盘, 目的就是欺骗bios,试图(只是试图)让bios把他当软盘和硬盘都可以引导。这个设计是很棒的,但是实际测试效果却不太好。因为bios版本种类太多, 不是个个bios都会上当的。 注:BPB是Bios Paramater Block的缩写,在分区的第一个扇区,保存着卷的资料,有大量信息。 usbzip+的核心技术就是hdd硬盘分区表和软盘(卷)bpb表双格式,其他没有对zip增强什么。 三、usbzip+和usbhdd+的区别( 二者完全不同) usbzip+兼容zip和hdd,但usbhdd+反过来并不兼容zip,他们是完全不同的技术。usbhdd+是对usbhdd

3、的加强,他是一个c/h/s(磁头/道/扇区)老的硬盘访问方式和lba扩展访问方式的隐身中转者(拦截int 13),让老的读盘程序不知不觉的使用了新的读盘技术,并没有试图去兼容zip(不过如果有的bios只检验了引导区的55aa标志,usbhdd+还是有可能以zip方式启动的, 不过这时usbhdd也可以) 而usbzip+是在引导区格式上下功夫,兼容usbhdd,算是不同领域、各显其能。 四、usbzip+的来源 usbzip+在ultroiso中出现很晚,其实grub早就实现了这个双格式。很久前软盘流行的时候,grub由于比较大,不能安装在软盘,是一个缺点.grub就在设计上支持分区表和bp

4、b双格式,目的是把软盘格式化硬盘分区的结构,以安装体积较大的grub,正好和现在的zip+技术不谋而合(但是在windows版本的安装程序Grubinst中并没有实现这个安装功能),usbzip+的始作佣应该是Grub。 五、我们什么时候需要usbzip+ 从核心技术来看,zip+远没有hdd+精彩,而zip+的启动率也远没有hdd/hdd+高。但是某台机器需要U盘引导,但是只支持zip的情况下,就要用到usbzip,当你不想把usbhdd闪存重新格式化,就可以用ultroiso便捷启动写入usbzip+的MBR,以尝试兼容性启动。 附:分析代码seg000:7C00 jmp short lo

5、c_7C5E;按照分区引导代码的约定,下面是bpb表,存放着分区卷的各种数据.可以参考ms fat12/16/32说明查看,同时可以看到熟悉的mswin4.1标志seg000:7C00 EB 5C 90 4D 53 57 49 4E 34 2E 31 00 02 02 41 00 隲怣SWIN4.1.A.seg000:7C10 02 00 02 00 00 F8 FB 00 3F 00 FF 00 00 00 00 00 . .?. .seg000:7C20 C1 F7 01 00 00 01 29 C2 5F BE 90 4E 4F 20 4E 41 流.)耞緪NO NAseg000:7C3

6、0 4D 45 20 20 20 20 46 41 54 31 36 20 20 20 00 00 ME FAT16 .seg000:7C40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .seg000:7C50 00 00 00 00 00 00 00 00 00 00 55 53 42 2B FA 31 .USB+?;bpb表结束seg000:7C5Eseg000:7C5E loc_7C5E: ; CODE XREF: seg000:7C00jseg000:7C5E cli ;关中断seg000:7C5F xor ax, axseg000

7、:7C61 mov ds, axseg000:7C63 mov es, axseg000:7C65 mov ss, axseg000:7C67 mov sp, 7C00hseg000:7C6A stiseg000:7C6B cldseg000:7C6C mov si, spseg000:7C6E mov di, 600hseg000:7C71 mov cx, 100hseg000:7C74 rep movswseg000:7C76 jmp far ptr 0:67Bh ;传送自身全部200字节去600处,把此处空间留给分区引导代码-seg000:067B mov ds:byte_65D, dl

8、 ;备份bios参数,dl代表驱动器类型seg000:067F mov si, 787h ;调用显示子程序显示启动信息seg000:0682 call sub_72Dseg000:0685 test dl, 80h ;00H7FH:软盘;80H0FFH:硬盘seg000:0688 jz short loc_6A8 ;是硬盘则转6a8seg000:068A mov ah, 8 ;否则取磁盘参数seg000:068C stcseg000:068D int 13h ; DISK - DISK - GET CURRENT DRIVE PARAMETERS (XT,AT,XT286,CONV,PS)se

9、g000:068D ; DL = drive numberseg000:068D ; Return: CF set on error, AH = status code, BL = drive typeseg000:068D ; DL = number of consecutive drivesseg000:068D ; DH = maximum value for head number, ES:DI - drive parameterseg000:068F jb short loc_6A8 ;这段是zip方式启动的处理 seg000:0691 and ah, ahseg000:0693 j

10、nz short loc_6A8seg000:0695 mov al, dhseg000:0697 inc alseg000:0699 jz short loc_6A8seg000:069B and cx, 3Fhseg000:069F jz short loc_6A8seg000:06A1 mov ds:word_61A, axseg000:06A4 mov ds:word_618, cxseg000:06A8seg000:06A8 loc_6A8: ; CODE XREF: seg000:0688jseg000:06A8 ; seg000:068Fj .seg000:06A8 mov si

11、, 7BEh ;si指向分区表seg000:06AB xor ax, ax ;ax清0seg000:06AD mov cx, 4 ;分区表项计数器seg000:06B0seg000:06B0 loc_6B0: ; CODE XREF: seg000:06BCjseg000:06B0 test byte ptr si, 80h ;是活动分区吗seg000:06B3 jz short loc_6B8 ;是转6b8seg000:06B5 inc ax ;不是,计数器+1,继续查seg000:06B6 mov bp, siseg000:06B8seg000:06B8 loc_6B8: ; CODE X

12、REF: seg000:06B3jseg000:06B8 add si, 10h ;指向下一个分区项seg000:06BC loop loc_6B0 ;循环查seg000:06BE dec ax ;ax-1=0的话,只有一个活动分区,正常,转6c3seg000:06BF jz short loc_6C3 ;否则报告bios boot异常seg000:06C1 int 18h ; TRANSFER TO ROM BASICseg000:06C1 ; causes transfer to ROM-based BASIC (IBM-PC)seg000:06C1 ; often reboots a c

13、ompatible; often has no effect at allseg000:06C3seg000:06C3 loc_6C3: ; CODE XREF: seg000:06BFj;查测扩展int 13功能是否存在 AH = 41h; BX = 55AAh; DL = 驱动器号seg000:06C3 mov dl, ds:byte_65Dseg000:06C7 mov ah, 41h ; Aseg000:06C9 mov bx, 55AAhseg000:06CC int 13h ; DISK -seg000:06CE jb short loc_6E1seg000:06D0 cmp bx

14、, 0AA55h ;如果BX = AA55h则存在seg000:06D4 jnz short loc_6E1 ;不存在转6e1seg000:06D6 test cl, 1 ;cl是返回的每磁道扇区数seg000:06D9 jz short loc_6E1 ;为1转6e1seg000:06DB mov ax, 4200h ;这里是用lba方式读盘seg000:06DE mov ds:word_782, ax ;782存成0042seg000:06E1seg000:06E1 loc_6E1: ; CODE XREF: seg000:06CEjseg000:06E1 ; seg000:06D4j .

15、seg000:06E1 call loc_73C ;73c是读分区引导公用子程序, ;由于zip是软盘方式,不一定支持lba int 13,不支持的话刚才跳过2条指令seg000:06E4 jb short loc_725 ;读盘失败,进行死循环seg000:06E6 mov ax, ds:7DFEh ;seg000:06E9 cmp ax, 0AA55h ;判断是不是正常分区标志seg000:06EC jnz short loc_725 ;没有标志55aa,死循环seg000:06EE mov ax, ds:word_61A ;传递一些bpb参数给读出来的分区扇区bpb表中seg000:06

16、F1 mov ds:7C1Ah, axseg000:06F4 mov ax, ds:word_618seg000:06F7 mov ds:7C18h, axseg000:06FA mov dl, ds:byte_65Dseg000:06FE mov si, 7C24hseg000:0701 cmp byte ptr ds:7C10h, 0seg000:0706 jz short loc_713seg000:0708 cmp word ptr ds:7C16h, 0seg000:070E jnz short loc_713seg000:0710 mov si, 7C40hseg000:0713s

17、eg000:0713 loc_713: ; CODE XREF: seg000:0706jseg000:0713 ; seg000:070Ejseg000:0713 mov si, dlseg000:0715 or byte ptr ds:word_782+1, 1seg000:071A call loc_73Cseg000:071D mov si, bpseg000:071F cliseg000:0720 jmp far ptr 0:7C00h ;放出控制权seg000:0725 ; -seg000:0725seg000:0725 loc_725: ; CODE XREF: seg000:0

18、6E4jseg000:0725 ; seg000:06ECjseg000:0725 mov si, 7AAhseg000:0728 call sub_72Dseg000:072Bseg000:072B loc_72B: ; CODE XREF: seg000:loc_72Bjseg000:072B jmp short loc_72Bseg000:072Dseg000:072D ; = S U B R O U T I N E =seg000:072D ;显示功能子程序seg000:072Dseg000:072D sub_72D proc near ; CODE XREF: seg000:0682

19、pseg000:072D ; seg000:0728p .seg000:072D lodsbseg000:072E and al, alseg000:0730 jz short locret_73B;al如果为零,不显示返回seg000:0732 mov ah, 0Ehseg000:0734 mov bx, 7seg000:0737 int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)seg000:0737 ; AL = character, BH = display page (alpha modes)seg00

20、0:0737 ; BL = foreground color (graphics modes)seg000:0739 jmp short sub_72Dseg000:073B ; -seg000:073Bseg000:073B locret_73B: ; CODE XREF: sub_72D+3jseg000:073B retnseg000:073B sub_72D endpseg000:073Bseg000:073C ; -seg000:073C ;由于zip/hdd兼容方式的局限,有可能是不支持的lba 读盘的, ;这里把读盘子程序独立出来,作为公用seg000:073C loc_73C: ; CODE XREF: seg000:loc_6E1pseg000:073C ; seg000:071Apseg000:073C

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1