DOS子目录加密

Author: 浙江 陈国鎏 朱增光 Date: 1994-09-02

        一、目录不让PCSHELL显示出来
        用PCSHELL将目录属性改成只读(R)、隐含(H)、系统(S)、归档(A)属性或用DEBUG将目录属性改成37H,然后用PCSHELL或DEBUG给目录加上长度(一般改成FF FF FF FF),这样PCSHELL就显示不出来了,用时只要将长度变为0就可以了。
        二、让PCSHELL死机
        在根目录区第一个目录登记项位置,造一个没有名字的子目录(即子目录名为20 20 20 20 20 20 20 20 20 20 20),这可用DEBUG或PCSHELL来改。当PCSHELL去读这个加密盘的根目录时,就会出现死循环。此方法虽可达到加密目的,但要避免使用磁盘整理程序,以免造成损失。
        三、让PCSHELL不能进入子目录
        将目录名改成小写字母,PCSHELL虽然能列出目录里的文件,但绝对进不去。具体方法如下:用PCSHELL对要进行加密的子目录进行全盘寻找,找到后,进行磁盘编辑,记下扇区号与目录的起始簇号,将子目名改写成小写字母。改好后存盘。解密时,用PCSHELL或DEBUG进行磁盘编辑,先调出要编辑的扇区,将小写目录名改成大写目录名后存盘或直接用DEBUG修改常驻内存的COMMAND.COM相应部分。下面具体讲述用DEBUG修改内存的方法。
        DOS在处理目录时,专门辟有一内存区域用来存放各个盘的当前目录。机器上有几个驱动器(包括DBLSPACE的CVF)就有几个当前目录区域,每个区域占58个字节,偏移0~43为当前目录名(包括盘符),偏移44~47为盘标志符,偏移48的值为01,代表起始簇号,偏移49~4A为目录起始簇号,偏移4B~4E为DOS保留,值通常为FF,偏移4F值为02,代表结束,偏移50~57为DOS保留,值通常为00。现若DOS的当前目录内存区域起始地址为42D:0,则地址42D:0~42D:57为A盘当前目录区域,地址42D:58~42D:AF为B盘当前目录区域,地址42D:B0~42D:108为C盘当前目录区域,与此类推。这一当前目录区域可用DEBUG的S0:0L F000 'S:\'命令来找到。解密时只要将相应盘的目录区偏移0~43改为要进去的目录名(注意:这里应当用大写字母,目录后加零,以表目录结束),后将偏移49~4A的内容改为解密的起始簇号,后退出,这样就可以进行正常目录操作了。
        假设要对C盘的小写目录dos进行解密,dos的起始簇号为2AFB,则用以下几步:
        ①进入DEBUG
        ②E 42D:B0 'C:\DOS',0
        ③E 42D:F9 FB 2A
        ④退出DEBUG
        结合上面几种目录加密方法,就能起到很好的加密作用,让PCTOOL无能为力。
        (浙江 陈国鎏 朱增光)