CN101246534B - 一种使U盘具有autorun病毒免疫功能的方法 - Google Patents

一种使U盘具有autorun病毒免疫功能的方法 Download PDF

Info

Publication number
CN101246534B
CN101246534B CN2008100570902A CN200810057090A CN101246534B CN 101246534 B CN101246534 B CN 101246534B CN 2008100570902 A CN2008100570902 A CN 2008100570902A CN 200810057090 A CN200810057090 A CN 200810057090A CN 101246534 B CN101246534 B CN 101246534B
Authority
CN
China
Prior art keywords
autorun
disk
root directory
usb flash
directory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008100570902A
Other languages
English (en)
Other versions
CN101246534A (zh
Inventor
谭毓安
王佐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TRUSDA INDUSTRIAL CO., LTD.
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN2008100570902A priority Critical patent/CN101246534B/zh
Publication of CN101246534A publication Critical patent/CN101246534A/zh
Application granted granted Critical
Publication of CN101246534B publication Critical patent/CN101246534B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种使U盘具有autorun病毒免疫功能的方法。通过对U盘的固件程序的修改,使其能够识别并且阻止计算机在U盘根目录创建autorun.inf文件的操作,从而实现对autorun病毒免疫。在U盘加电时,固件程序从磁盘参数表和文件分配表中获取根目录所占用的全部扇区的逻辑块地址,作为识别写请求是否改写U盘根目录的依据;在接收到计算机对U盘的写请求时,固件程序判断该写请求是否试图在U盘根目录创建autorun.inf目录项;如果是,拒绝执行该写请求并向计算机返回错误状态;在磁盘参数表或者文件分配表被改写时,固件程序需要重新确定根目录所占用的全部扇区的逻辑块地址,并且读取根目录所占用的全部扇区,检查其中是否存在autorun.inf目录项,找到autorun.inf目录项后将其删除。

Description

一种使U盘具有autorun病毒免疫功能的方法
技术领域
本发明涉及移动存储设备领域,具体的说是提供了一种使U盘具有autorun病毒免疫功能的方法。
背景技术
随着U盘的广泛应用,U盘已成为“自动运行类”病毒(以下称autorun病毒)传播的一种主要载体。这类病毒在U盘驱动器的根目录下建立一个autorun.inf文件,将病毒程序写入U盘。用户在Windows操作系统资源管理器中双击U盘驱动器图标时,操作系统按照autorun.inf文件中的设定,自动运行病毒程序,从而感染计算机系统。
针对autorun类型病毒依赖于autorun.inf文件才能自动运行的特点,在U盘的根目录创建一个具有特殊保护属性的autorun.inf文件或同名目录,阻止病毒创建或者覆盖autorun.inf文件,从而实现对autorun病毒的免疫功能。然而,病毒代码可以绕过文件系统,删除具有免疫作用的autorun.inf文件或目录,或者直接修改保存autorun.inf文件数据的扇区。另外,对U盘的格式化操作会删除具有特殊保护属性的autorun.inf文件,从而导致U盘丧失免疫功能。
考虑到单纯的软件免疫方法不能完全有效地免疫autorun病毒,本发明提供一种对autorun病毒具有免疫功能的U盘(以下称免疫U盘)设计。免疫U盘的特点是由U盘内的固件程序实现识别和免疫autorun病毒的功能。
发明内容
本发明的目的在于提供一种使U盘具有autorun病毒免疫功能的方法。
本发明的技术方案是:
对U盘的固件程序进行修改,使其能够识别并且阻止计算机在U盘根目录创建autorun.inf文件的操作,从而实现对autorun病毒免疫。
在U盘加电时,固件程序从磁盘参数表和文件分配表中获取根目录所占用的全部扇区的逻辑块地址,作为识别写请求是否改写U盘根目录的依据;在接收到计算机对U盘的写请求时,固件程序判断该写请求是否试图在U盘根目录创建autorun.inf目录项;如果是,拒绝执行该写请求并且向计算机返回错误状态;在磁盘参数表或者文件分配表被改写时,固件程序需要重新确定根目录所占用的全部扇区的逻辑块地址,并且读取根目录所占用的全部扇区,检查其中是否存在autorun.inf目录项,找到autorun.inf目录项后将其删除。
所述的autorun病毒指通过autorun.inf文件实现自动运行的病毒程序。
所述的固件程序指存放在USB控制芯片上的程序,即Frameware,U盘加电时被载入USB控制芯片运行。
U盘加电时,USB控制芯片载入并且运行存放在USB控制芯片上的固件程序。固件程序完成初始化操作后,先从磁盘参数表和文件分配表中获取根目录所占用的全部扇区的逻辑块地址,作为识别写请求是否改写U盘根目录的依据,然后再响应计算机对U盘的读写请求。对于计算机对U盘的读请求,固件程序从FLASH存储芯片读取请求的数据并且返回给计算机。对于计算机对U盘的写请求,固件程序判断该写请求是否试图在U盘根目录创建autorun.inf目录项。如果是,固件程序拒绝执行该写请求并且向计算机返回错误状态;否则将请求的数据写入FLASH存储芯片。针对某些病毒采取扩展根目录而不是在根目录创建autorun.inf目录项的做法,在磁盘参数表或者文件分配表被改写时,固件程序需要重新确定根目录所占用的全部扇区的逻辑块地址,并且读取根目录所占用的全部扇区,检查其中是否存在autorun.inf目录项,找到autorun.inf目录项后将其删除。
本发明的有益效果是:
1)设计新颖。免疫U盘的固件程序识别并且中止autorun病毒在U盘根目录中创建autorun.inf文件的操作,对autorun病毒具有免疫功能。
2)有效性。U盘被格式化后,仍具有免疫功能。此外,autorun病毒无法绕过文件系统在U盘上创建autorun.inf文件。
附图说明
图1 FAT文件系统布局;
图2 FAT文件系统BPB表格式;
图3 目录项格式;
图4 FAT12、FAT16文件系统根目录示例;
图5 FAT32系统根目录示例;
图6 执行WRITE命令的流程;
图7 检查并删除根目录中autorun.inf目录项的流程。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细描述。本发明不仅限于以下实施例,凡是利用本发明的设计思路,做一些简单变化的设计都应进入本发明的保护范围之内。
一、FAT文件系统
1)FAT文件系统布局
U盘上的FAT文件系统布局如图1所示。U盘的存储空间以扇区(块)为单位,每一个扇区都有一个逻辑块地址(Logical BlockAddress,以下简称LBA),LBA从0开始顺序编号。
FAT文件系统也可以不使用主引导扇区(Main Boot Record,以下简称MBR扇区)和隐藏扇区,这时,引导扇区(DOS Boot Record,以下简称DBR扇区)的LBA等于0。使用MBR扇区时,从MBR扇区中的分区表可取得DBR扇区的LBA。
2)磁盘参数表
在DBR扇区中的偏移000BH处,保存一个磁盘参数表(BIOSParameter Block,以下简称BPB表),BPB表的格式如图2所示。
3)确定根目录所占用的扇区
在FAT12、FAT16文件系统中,根目录所能容纳的最大文件(子目录)数是固定的,由BPB表中的根目录项数来确定,而FAT32文件系统没有这种限制。
对于FAT12、FAT16文件系统,设LROOT为根目录的所占用的第一个扇区的LBA,LROOT的计算方法为:LROOT=隐藏扇区数+保留扇区数+(每个FAT占的扇区数)×FAT个数。根目录占用从LROOT开始的若干连续扇区,NROOT为根目录所占用的扇区数,NROOT=根目录项数÷16。
对于FAT32文件系统,根目录占用的扇区不一定连续,根目录占用若干个簇。根目录的第1个簇的簇号(起始簇号)保存在BPB表中,其它簇号则保存在FAT表中。根据起始簇号和FAT表,可获得所有根目录占用簇的簇号,这些簇对应的扇区范围为MROOT[i]~MROOT[i]+NCLUSTER-1,MROOT[i]表示根目录第i个簇的扇区号,NCLUSTER为每簇扇区数,CROOT为根目录所占用的簇数,0≤i≤CROOT-1。
4)目录项
在根目录占用的扇区中,每一个文件(或子目录)对应一个目录项,每一个目录项占32个字节,包括文件名、扩展名、属性、创建或修改时间、起始簇号等信息,目录项的格式如图3所示。目录项文件名的第一个字节为OE5H时,标记该目录项被删除。在目录项中,字母采用大写形式,文件名小于8个字节、扩展名小于3个字节时用空格补足。例如,下面的32个字节数据为autorun.inf文件在某FAT32文件系统中的目录项。偏移0000H处的文件名为“AUTORUN”,0008H处的扩展名为“INF”。
41 55 54 4F 52 55 4E 20 49 4E 46 20 18 9C 0A 76  AUTORUN INF.?v
2C 38 2C 38 00 00 2E 79  2C 38 03 00 23 01 00 00  ,8,8...y,
8..#...
二、识别并中止在根目录中创建autorun.inf文件的操作
文件系统驱动程序将格式化、创建文件、修改文件、写入文件、重命名文件等所有文件操作转换为对U盘扇区的读、写操作。固件程序接收到对U盘的写请求后,检查这个写请求是否会导致在根目录中创建一个autorun.inf目录项,上述检查满足时则中止该请求。
(1)确定文件系统及根目录所占用的扇区
U盘加电时,固件程序从U盘中读出DBR扇区,确定采用的文件系统格式为FAT12、FAT16或者FAT32。对于FAT12、FAT16文件系统,根据DBR扇区中的BPB表,计算出根目录所占用的扇区范围(LROOT~LROOT+NROOT-1);对于FAT32文件系统,从BPB表和FAT表中获得根目录所占用的簇数CROOT,以及这些簇对应的扇区范围(MROOT[i]~MROOT[i]+NCLUSTER-1),MROOT[i]表示根目录第i个簇的扇区号,0≤i≤CROOT-1,NCLUSTER为每簇扇区数。
图4表示FAT12、FAT16文件系统根目录所占用的NROOT个扇区。根目录的第1个扇区的LBA等于LROOT,最后一个扇区的LBA等于LROOT+NROOT-1。
图5表示某个FAT32文件系统根目录所占用的3个簇。根目录的起始簇号保存在BPB表中,其起始簇号一般为2。在FAT表中,簇号2指示的下一个簇号为X,簇号X指示的下一个簇号为Y,簇号Y所指示的下一个簇号为0,所以,根目录占用了3个簇,它们的簇号为2、X、Y。再根据BPB表中的参数求出这3个簇的起始扇区MROOT[0]、MROOT[1]、MROOT[2],每个簇占用NCLUSTER个连续扇区,NCLUSTER=8。
(2)检查写请求
计算机向U盘发出写请求后,写请求包含SCSI写命令(WRITE命令)和要写入U盘的数据。固件程序从SCSI命令描述块(CommandDescriptor Block,CDB)中获得扇区地址D和扇区数S。
图6为执行WRITE命令的流程。对于每一个写请求,固件程序检查它是否会在根目录中生成autorun.inf目录项。对于写请求要写入的每一个扇区LWRITE(D≤LWRITE≤D+S-1),检查是否属于根目录的扇区范围。对于FAT12、FAT16,检查LROOT≤LWRITE≤LROOT+NROOT-1是否满足; 对于FAT32,检查根目录的任何一个簇(一共CROOT个)是否包含了扇区LWRITE,即MROOT[i]≤LWRITE≤MROOT[i]+NCLUSTER-1(0≤i≤CROOT-1)。如果上述条件不满足,说明写请求不是对根目录的写操作,固件程序继续执行正常的写入操作。如果条件满足,说明扇区LWRITE属于根目录所占用的扇区,固件程序检查要写入该扇区的512字节数据。上述512字节数据包括了16个目录项,每个目录项32字节。检查每一个目录项中的文件名、扩展名。如果文件名等于“AUTORUN”(或者“autorun”)并且扩展名等于“INF”(或者“inf”),中止写请求并且向计算机返回错误信息。
对U盘进行格式化操作时,计算机生成新的DBR扇区写入U盘,可能会改变根目录扇区的相关参数。因此,固件程序在接收到写入DBR扇区的请求后,应根据新的BPB表,更新LROOT、NROOT或者MROOT、CROOT
对于FAT32文件系统,根目录可以被扩展,以容纳更多的文件或目录。固件程序在收到写入FAT表的请求后,应检查根目录在FAT中的链表是否发生变化,链表被改变时应更新MROOT、CROOT
(3)检查并删除根目录扇区中的autorun.inf目录项
病毒代码可以绕过操作系统中的文件系统驱动程序,尝试直接向免疫U盘写入autorun.inf文件。病毒代码先向U盘的数据区写入autorun.inf目录项,由于上述数据区不属于根目录所占用的扇区范围,该操作可以通过固件程序的检查。随后,病毒代码试图重新设置BPB表中的参数或者修改FAT表,将上述数据区作为根目录的一部分,达到在根目录中创建autorun.inf目录项的目的。
针对病毒代码可能采取的上述做法,在BPB表和FAT表被写入时,固件程序除了需要更新LROOT和NROOT(对于FAT12、FAT16文件系统)、或者CROOT和MROOT(对于FAT32文件系统)外,还要检查根目录扇区中是否存在autorun.inf目录项。固件程序读入根目录的全部扇区,检查这些扇区中是否包含autorun.inf目录项。autorun.inf目录项存在时,将该目录项的第1个字节修改为0E5H,即删除状态,再写入该扇区。检查并删除autorun.inf目录项的流程如图7所示。
三、免疫功能的一种简化实现
固件程序检查对免疫U盘的所有写请求(包括修改根目录扇区的写请求,修改文件分配表的写请求和修改DBR扇区的写请求),能够保证U盘不被autorun病毒感染,但需要一定的时间开销和内存空间。为避免上述开销,固件程序可以不检查写请求,仅在U盘加电时检查根目录扇区,找到autorun.inf目录项时将其删除。根目录扇区检查完成后,再响应计算机的读写请求。
采用这种简化实现,病毒代码可以将autorun.inf写入免疫U盘,但是该U盘插入计算机时,autorun.inf目录项将被固件程序自动删除,不会感染该计算机。

Claims (2)

1.一种使U盘具有autorun病毒免疫功能的方法,其特征在于:在U盘加电时,固件程序从磁盘参数表和文件分配表中获取根目录所占用的全部扇区的逻辑块地址,作为识别写请求是否改写U盘根目录的依据;在接收到计算机对U盘的写请求时,固件程序半段该写请求是否要在U盘根目录创建autorun.inf目录项,如果是,拒绝执行该写请求并且向计算机返回错误状态;在磁盘参数表或者文件分配表被改写时,固件程序需要重新确定根目录所占用的全部扇区的逻辑块地址,再读取根目录所占用的全部扇区,检查其中是否存在autorun.inf目录项,找到autorun.inf目录项后将其删除。
2.如权利要求1所述的一种使U盘具有autorun病毒免疫功能的方法,其特征在于:autorun病毒免疫功能的实现不需要计算机上任何软件的辅助,U盘内置的固件程序能够独立识别并且阻止计算机在U盘根目录创建autorun.inf文件的操作,从而实现对autorun病毒免疫。
CN2008100570902A 2008-01-29 2008-01-29 一种使U盘具有autorun病毒免疫功能的方法 Expired - Fee Related CN101246534B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100570902A CN101246534B (zh) 2008-01-29 2008-01-29 一种使U盘具有autorun病毒免疫功能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100570902A CN101246534B (zh) 2008-01-29 2008-01-29 一种使U盘具有autorun病毒免疫功能的方法

Publications (2)

Publication Number Publication Date
CN101246534A CN101246534A (zh) 2008-08-20
CN101246534B true CN101246534B (zh) 2011-09-07

Family

ID=39946976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100570902A Expired - Fee Related CN101246534B (zh) 2008-01-29 2008-01-29 一种使U盘具有autorun病毒免疫功能的方法

Country Status (1)

Country Link
CN (1) CN101246534B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593308A (zh) * 2013-10-10 2014-02-19 福建升腾资讯有限公司 基于扇区写保护的u盘写保护方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833622B (zh) * 2010-05-10 2012-07-18 深圳市五巨科技有限公司 一种终端移动存储设备查杀木马的方法和装置
CN102541969B (zh) * 2011-03-29 2015-04-29 深圳市江波龙电子有限公司 基于fat文件系统的文件保护方法、系统及存储器
CN104484289B (zh) * 2014-12-19 2017-11-14 武汉长江通信智联技术有限公司 一种基于扇区的嵌入式系统写保护的装置以及方法
CN107577966B (zh) * 2017-09-19 2023-09-29 中国南方电网有限责任公司超高压输电公司南宁监控中心 一种移动储存的防病毒方法及防病毒安全器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593308A (zh) * 2013-10-10 2014-02-19 福建升腾资讯有限公司 基于扇区写保护的u盘写保护方法
CN103593308B (zh) * 2013-10-10 2016-08-17 福建升腾资讯有限公司 基于扇区写保护的u盘写保护方法

Also Published As

Publication number Publication date
CN101246534A (zh) 2008-08-20

Similar Documents

Publication Publication Date Title
US20220129374A1 (en) Memory system, data storage device, user device and data management method thereof
US8626987B2 (en) Flash memory system and defragmentation method
US8065473B2 (en) Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US7861311B2 (en) Apparatus and method of managing hidden area
TWI420305B (zh) 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
US20120265792A1 (en) Data storage access device
US20120084272A1 (en) File system support for inert files
CN106909313A (zh) 存储器系统及控制方法
CN101246534B (zh) 一种使U盘具有autorun病毒免疫功能的方法
JP2010026933A (ja) メモリシステム、ホスト装置
US8566543B2 (en) Computer system and reclamation control method
JP2005122439A (ja) デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
JP2012113789A (ja) ハードディスクドライブ装置およびその処理装置
WO2020024933A1 (zh) 一种数据写入方法和服务端
KR20210012085A (ko) 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치
KR20090031102A (ko) 이동식 저장 장치의 포맷 방법 및 장치
CN106709014A (zh) 一种文件系统转换方法及装置
JP5558093B2 (ja) 半導体装置及びメモリシステム
US11132134B2 (en) Flexible over-provisioning of storage space within solid-state storage devices (SSDs)
KR20150128714A (ko) 최적화된 파일 조작을 위한 파일 그룹화 기법
CN110837478A (zh) 文件管理方法、存储介质和电子设备
CN100419760C (zh) Fat文件系统中文件分割的方法及其装置
CN104657471A (zh) 一种fat文件系统的预分配文件建立方法及系统
US8200936B2 (en) Systems and methods for recording information to a memory card
KR20100011137A (ko) 고속 파일 복구가 가능한 fat 파일시스템을 사용한데이터 처리장치 및 데이터 처리방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: TRUSDA INDUSTRIAL CO., LTD.

Free format text: FORMER OWNER: BEIJING INSTITUTE OF TECHNOLOGY

Effective date: 20121217

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100081 HAIDIAN, BEIJING TO: 518112 SHENZHEN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20121217

Address after: 2 building, 2 floor, LIAN Science Park, Shenzhen Road, South Bay Street, Longgang District, Guangdong, 518112

Patentee after: TRUSDA INDUSTRIAL CO., LTD.

Address before: 100081 No. 5, Zhongguancun South Street, Haidian District, Beijing

Patentee before: BEIJING INSTITUTE OF TECHNOLOGY

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110907

Termination date: 20170129

CF01 Termination of patent right due to non-payment of annual fee