隐含文件的复制方法

Author: 张利生 Date: 1994-11-11

        为此,笔者分析了XCOPY.EXE文件,发现XCOPY进行文件复制时,采用了4EH和4FH两个DOS功能调用进行匹配文件的搜索,其中入口参数CX的低位字节存放的正是文件的属性值。由于XCOPY.EXE程序中没有让隐含文件参加匹配,因而对这类文件不能进行复制。
        下面是MS-DOS 3.30版本中XCOPY.EXE文件与“复制”有关的主要程序段:
        -U1406 1412
        6134:1406 BAC703        MOV  DX,03C7
        6134:1409 8BOE9004      MOV  CX,
        6134:140D EB03          JMP  1412
        6134:140F BAB104        MOV  DX,04B1
        6134:1412 E8D5FF        CALL 13EA
        -U13EA 13FE
        6134:13EA F606950401    TEST BYTE PTR ,01
        6134:13EF 7404          JZ   13F5
        6134:13F1 B44E          MOV  AH,4E
        6134:13F3 EB02          JMP  13F7
        6134:13F5 B44F          MOV  AH,4F
        6134:13F7 80269504FE    AND  BYTE PTR ,FE
        6134:13FC CD21          INT  21
        6134:13FE C3            RET
        弄清了问题的症结所在,自然也就有了解决的办法:只要将CX的低位字节改为07H,即可达到复制隐含文件的目的。
        修改的方法如下:
        A>REN XCOPY.EXE XCOPY
        A>DEBUQ XCOPY
        -8100 3081 8B 0E 90 04
        6134:1409
        -E409 B9 07 00 90
        -W
        -Q
        A>REN XCOPY XCOPY.EXE
        经过以上修改的XCOPY命令,就可以复制具有隐含属性的文件了。笔者曾对几种版本的XCOPY.EXE文件进行过修改,均达到了预期目的,而且对于不同的版本,其修改方法是完全一致的,只是指令地址不同而已。(张利生)