Board logo

标题: [原创]xcopy.exe/xcopy32.exe/xcopy.mod初探 [打印本页]

作者: willsort     时间: 2006-7-21 20:57    标题: [原创]xcopy.exe/xcopy32.exe/xcopy.mod初探

[原创]xcopy.exe/xcopy32.exe/xcopy.mod初探

测试环境
1、D6(VirtualPC下的MS-DOS6.22)
2、D7(VirtualPC下的MS-DOS7.10)
3、HX(VirtualPC下的MS-DOS7.10下的HX DOS Extender)
4、D8(VirtualPC下的WindowsME启动盘)
5、98(VirtualPC下的Windows98Se)
6、XP(WinXPsp2);

测试样本
1、98的xcopy.exe/xcopy32.exe/xcopy.mod,来自Win98SE中文版(OEM)CD;
2、ME(WindowsME)的xcopy.exe/xcopy32.exe/xcopy.mod,来自[[求WinME DOS下的xcopy与xcopy32.mod]];
3、D7的xcopy.exe,来自[[纯MS-DOS 7.10完整安装版]];
4、HX支持的xcopy.exe,来自[[在DOS下有哪个版本可以把长文件名正常COPY]];
5、XP的xcopy.exe,来自%systemroot%\system32\;
6、D6的xcopy.exe,来自DOS\;

通过使用fc对样本进行相似度验证,综合来自[[Bob Watson's Home Page]]的信息,各样本的相似性归纳如下:

1、95/97(Win95OSR2)的xcopy增加了xcopy32.exe,98/ME再增加了xcopy32.mod,XP则又向D6回归,只保留了全新的xcopy.exe;
2、98/ME的同版本的xcopy.exe/xcopy32.exe内容完全一致,98与ME版本之间则略有差别;
3、95/97的xcopy.exe和98/ME的xcopy.exe/xcopy32.exe的大小完全一致(3878),内容略有差别;
4、95/97的xcopy32.exe和98/ME的xcopy32.mod大小相近(分别为40960/41472/41472/41472),内容相似;
5、D6/D7/HX/XP的xcopy.exe互相之间、与其他样本之间大小和内容都有较大差别(大小分别为16850/24560/17408/30720);

通过在相应平台下的实地测试,各样本的依赖性归纳如下:

1、95/97的xcopy.exe依赖于xcopy32.exe;
2、98/ME的xcopy.exe/xcopy32.exe依赖于xcopy32.mod;
3、D6/D7的xcopy.exe未发现显式依赖的文件;
4、HX的xcopy.exe依赖于hdpmi32.dll等HX DOS Extender的支持库;
5、XP的xcopy.exe依赖于msvcrt.dll/ADVAPI32.dll/KERNEL32.dll/NTDLL.DLL/ulib.dll/ifsutil.dll等库文件

通过使用UltraEdit的观察,各样本的结构特征归纳如下:

1、98/ME的xcopy32.mod同时具有可执行程序的MZ段和PE段,且两段中均有较长的代码;
2、D7的xcopy.exe没有PE段代码,其MZ段与98的xcopy32.mod的MZ段具有很高的相似度;
3、HX的xcopy.exe的MZ段代码很短,其PE段与98的xcopy32.mod的PE段具有很高的相似度;
4、XP的xcopy.exe为普通的32位PE程序,其MZ段代码很短,其PE段与其它样本有较大差异;
5、D6的xcopy.exe为普通的16位MZ程序,没有PE段代码,其MZ段与其它样本有较大差异;

通过在相应平台下的实地测试和UltraEdit的观察,各样本的功能特征归纳如下:

1、D6的xcopy.exe支持的功能开关有:[/A | /M] [/D:date] [/P] [/S] [/E] [/V] [/W] [/Y | /-Y],不支持长文件名和隐藏、系统属性文件;
2、98的xcopy32.mod的MZ段支持的开关同1,但[/Y | /-Y]未在命令行帮助中列出,不支持长文件名和隐藏、系统属性文件;
3、ME的xcopy32.mod的MZ段支持的开关同2相比,增加了[/H],不支持长文件名,支持隐藏、系统属性文件(但命令行帮助中仍注明不支持);
4、98/ME的xcopy32.mod的PE段支持的开关同1相比,增加了[/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U] [/K] [/N],但[/V]未在帮助中列出,支持长文件名和隐藏、系统属性文件;
6、D7的xcopy.exe的功能特征同3;
7、HX的xcopy.exe的功能特征同4;
8、XP的xcopy.exe支持的开关同4相比,增加了[/EXCLUDE:file1[+file2][+file3]...] [/G] [/O] [/X],支持长文件名和隐藏、系统属性文件;

通过在相应平台下的实地测试,各样本的平台适应性归纳如下:
1、98/ME的xcopy32.mod改扩展名为.exe后,可在98/XP下正常运行;
2、HX的xcopy.exe,可在D6/D7/D8/98/XP下正常运行,但在以硬盘方式启动的D6/D7/D8下运行时会出现异常[[Exception 0D]];
3、其他的xcopy.exe/xcopy32.exe仅在相同版本的平台下可以正常运行,其它平台均显示错误的版本提示“Incorrect MS-DOS version”;
4、XP的xcopy.exe在D6/D7/D8下运行仅显示无法运行的提示信息“This program cannot be run in DOS mode. ”;
5、XP的xcopy.exe在98下运行弹出对话提示“找不到所需的 .DLL 文件 - ULIB.DLL”

根据以上信息,可以推断得出以下结论:
1、95/97的xcopy32.exe和98/ME的xcopy32.mod均属于DOS/WIN双栖性可执行程序,可分别在16位DOS环境下和32位WIN环境下独立运行;
2、95/97的xcopy.exe和98/ME的xcopy.exe/xcopy32.exe均属于寄生性可执行程序,调用xcopy32.exe和xcopy32.mod的代码运行;
3、D7的xcopy.exe为98的xcopy32.mod剪除PE段后的修改而得;
4、HX的xcopy.exe为98的xcopy32.mod缩略MZ段功能代码后修改而得;
5、xcopy的长文件名仅由PE段代码提供,同时需要相应库文件的支持;
6、xcopy的版本检查限制仅存在于MZ段代码中,可以通过搜索十六进制串[B4 30]并替换为[EB 1F]来解除;

权衡所有的xcopy版本,可以筛选出两个通用性和可用性都较强的版本:
1、ME的xcopy32.mod改扩展名为.exe并解除版本检查限制的版本,其优点是单一文件可独立运行,其缺点是在DOS下无法支持长文件名和PE扩展开关;此版本附件中已提供;
2、可在硬盘方式启动的DOS下运行的HX的xcopy.exe,其优点是支持所有的PE扩展开关和长文件名,其缺点是需要附加的库文件支持,文件体积较大;此版本需要Wengier兄进行修改后得到;

[[Bob Watson's Home Page]]
http://www.lagmonster.org/docs/DOS7/z-xcopy.html

  Quote:

File Name   Dos Ver.    Win Ver.    Size    Date        Source  
Xcopy.exe   7.0         Win95       3 878-1 11/07/95    win95_09.cab   
            7.1     Win95 (OSR2.x)  3 878-2 24/08/96    win95_14.cab   
                        Win98       3 878-3 11/05/98    win98_43.cab   
                        Win98 SE    3 878-3 23/04/99    win98_47.cab   
Xcopy32.exe 7.0         Win95       40 960  11/07/95    win95_09.cab   
            7.1     Win95 (OSR2.x) 41 472-4 24/08/96    win95_14.cab   
                        Win98       3 878-3 11/05/98    win98_43.cab   
                        Win98 SE    3 878-3 23/04/99    win98_47.cab   
Xcopy32.mod 7.1         Win98      41 472-5 11/05/98    win98_45.cab   
                        Win98 SE   41 472-6 23/04/99    win98_51.cab

[[Exception 0D]]

  Quote:
Exception 0D
EAX=00400000 EBX=0000008F ECX=00110000 EDX=00000000 ESI=00400080      
EDI=00005504 EBP=00005516 ESP=00226FF8 EFL=00090246 EIP=00002F21      
CS=0097 (00110000,0000554F,00FB) SS=00BF (00000000,FFFFFFFF,CFF3)      
DS=00BF (00000000,FFFFFFFF,CFF3) ES=00BF (00000000,FFFFFFFF,CFF3)      
FS=00E7 (00400040,00000FBF,00F3) GS=0000 (********,********,****)      
LDTR=0020 (FF809000,00000FFF,0082) TR=0018 (000066A8,00000067,008B)   
ERRC=0000 (********,********,****) PTE 1. Page LDT=00363467            
GDTR=03FF:FF802400 IDTR=07FF:FF802800 PTE CR2=00000006                 
CR0=80000033 CR2=00227000 CR3=0035B000 CR4=00000200 TSS:ESP0=00000804  
DR0-3=00000000 00000000 00000000 00000000 DR6=FFFF0FF0 DR7=00000400   
LPMS Sel/Cnt=0087/0001 RMS=C776:0200 open RMCBs=0000/0000 ISR=0000     
   [EIP]=FB E8 CA FE E8 E5 03 72 58 E8 9F 01                           
   [ESP]=0000 0000 0000 0000 ????                                      
terminate (c)lient or (s)erver now?

[[纯MS-DOS 7.10完整安装版]]
http://www.cn-dos.net/forum/viewthread.php?tid=2134
http://www.cn-dos.net/msdos71/msdos71f.zip
http://zhenlove.com.cn/cndos/msdos71/dos71cd.zip

[[求WinME DOS下的xcopy与xcopy32.mod]]
http://www.cn-dos.net/forum/viewthread.php?tid=19730
http://www.cn-dos.net/forum/atta ... e046&download=1

[[在DOS下有哪个版本可以把长文件名正常COPY]]
http://www.cn-dos.net/forum/viewthread.php?tid=21695
http://zhenlove.com.cn/cndos/soft/doscp.zip
附件 1: PA_Xcopy.zip (2006-7-21 21:48, 19.95 K, 下载附件所需积分 1点 ,下载次数: 149)

作者: fastslz     时间: 2006-7-21 21:20
无语...实在是佩服...佩服...
作者: darkradx     时间: 2006-7-22 03:23
同感
作者: chujiafu     时间: 2006-7-22 07:15
Willsort兄真是个有心人。佩服!
作者: SXBG     时间: 2006-7-22 08:07


  Quote:
[[Exception 0D]]
  Quote:
Exception 0D
EAX=00400000 EBX=0000008F ECX=00110000 EDX=00000000 ESI=00400080      
EDI=00005504 EBP=00005516 ESP=00226FF8 EFL=00090246 EIP=00002F21      
CS=0097 (00110000,0000554F,00FB) SS=00BF (00000000,FFFFFFFF,CFF3)      
DS=00BF (00000000,FFFFFFFF,CFF3) ES=00BF (00000000,FFFFFFFF,CFF3)      
FS=00E7 (00400040,00000FBF,00F3) GS=0000 (********,********,****)      
LDTR=0020 (FF809000,00000FFF,0082) TR=0018 (000066A8,00000067,008B)   
ERRC=0000 (********,********,****) PTE 1. Page LDT=00363467            
GDTR=03FF:FF802400 IDTR=07FF:FF802800 PTE CR2=00000006                 
CR0=80000033 CR2=00227000 CR3=0035B000 CR4=00000200 TSS:ESP0=00000804  
DR0-3=00000000 00000000 00000000 00000000 DR6=FFFF0FF0 DR7=00000400   
LPMS Sel/Cnt=0087/0001 RMS=C776:0200 open RMCBs=0000/0000 ISR=0000     
   [EIP]=FB E8 CA FE E8 E5 03 72 58 E8 9F 01                           
   [ESP]=0000 0000 0000 0000 ????                                      
terminate (c)lient or (s)erver now?  

7月17和21日的HX DOS Extender我也碰上同样的问题,而且是在vm中的虚拟光驱启动dos,问题出现在运行7za的时候,改用前版本的Hx dos Extender,问题解决。
作者: willsort     时间: 2006-7-22 19:06
Re SXBG:

      感谢你所提供的信息,我的测试中使用的HX是6月14日的版本,不知你使用的是哪个版本?是否可以上传以供测试。另外,据Weniger熊提供的消息,5月14日前的版本,对xcopy32的支持难以保证。

  Quote:
不行,那些我已试过发现都不行,包括HX下。Win9x中所带的支持长文件名的XCOPY32现在倒是可以在HX下运行(而且还是我向其作者提出后才能运行正常的)。



  Quote:
HX DOS Extender的最新测试版(2006.5.14更新)现在又有不少进展,比如Win32 Console版的UPX 2.0及其压缩过的程序、支持长文件名的Win9x中的XCOPY32等等都可以正常运行了,因此试试它应该还是不错的,你的Win32 Console程序通过它很可能也能在纯DOS下直接运行。以下是其作者提供给我的HX最新测试版下载地址:

http://www.japheth.de/Download/hxrtd.zip


作者: SXBG     时间: 2006-7-22 19:47
其间版本不少,我只保留了7月15日的,这个版本和之前的几个版本运行7za.exe都没有问题。
附件 1: HXRT.rar (2006-7-22 19:47, 108.94 K, 下载附件所需积分 1点 ,下载次数: 49)

作者: Wengier     时间: 2006-7-23 12:37


  Quote:
Originally posted by SXBG at 2006-7-22 07:47 PM:
其间版本不少,我只保留了7月15日的,这个版本和之前的几个版本运行7za.exe都没有问题。

是HDPMI 3.07x的问题,用之前的版本(比如那张DOS启动盘中的文件)就可以了。
作者: electronixtar     时间: 2006-7-23 15:29
专业~~~PFPF


都是高级用户在回帖,寒~~

[ Last edited by electronixtar on 2006-7-23 at 15:33 ]
作者: willsort     时间: 2006-7-23 17:43
Re SXBG & Wengier:

      起初的测试就是在挂载doscp.img引导的VPC中,后来的测试中,是使用VPC的VHD硬盘先引导成功后再挂载doscp.img,结果测试失败了。

      7月15日的版本也已作了测试,仍然有同样的问题。

      后来,使用实机硬盘引导至DOS后再测试,成功了。
作者: chenwei450     时间: 2006-8-3 15:03
佩服...佩服...
作者: troylees     时间: 2006-8-6 01:07
willsort和Wengier你好!
    我需要在DOS下能复制长文件名文件的xcopy,但是http://cndos.l009.com/soft/doscp.zip这网站我上不了。请问可以发到我邮箱吗?
harvardcookie@163.com。谢谢!!
作者: Wengier     时间: 2006-8-6 03:43


  Quote:
Originally posted by troylees at 2006-8-6 01:07 AM:
willsort和Wengier你好!
    我需要在DOS下能复制长文件名文件的xcopy,但是http://cndos.l009.com/soft/doscp.zip这网站我上不了。请问可以发到我邮箱吗� ...

没必要个别发送邮箱吧?下载地址已改为:
http://zhenlove.com.cn/cndos/soft/doscp.zip
作者: troylees     时间: 2006-8-6 08:33
To: Wengier
    已经下载了,十分感谢!!
作者: xjmxjm1234     时间: 2006-8-6 13:13
咿?楼主是怎么查看 32位的寄存器的啊?
作者: SXBG     时间: 2006-8-17 21:24
To: Willsort
你还有6月14日(2.5)的版本吗?我发现新近的几个版本包括我现在用的2.6版都常常出现那个问题,而主页并不提供历史版本下载。如果论坛不能上传,发到我的邮箱吧(hsz890@msn.com),谢谢!
作者: Wengier     时间: 2006-8-17 23:59


  Quote:
Originally posted by SXBG at 2006-8-17 09:24 PM:
To: Willsort
你还有6月14日(2.5)的版本吗?我发现新近的几个版本包括我现在用的2.6版都常常出现那个问题,而主页并不提供历史版本下载。如果论坛不� ...

现在2.7版都出了,我使用时并没有发现有这种问题呢。。
作者: SXBG     时间: 2006-8-18 22:50
不行呀,包括最新的测试版也一样,在virtual pc中用7z解压就会出现那个情况,而vmware却没有问题,莫名其妙呀。
作者: Wengier     时间: 2006-8-18 23:19


  Quote:
Originally posted by SXBG at 2006-8-18 10:50 PM:
不行呀,包括最新的测试版也一样,在virtual pc中用7z解压就会出现那个情况,而vmware却没有问题,莫名其妙呀。

那这是VPC自己的问题了,HX的文档中说过和VMware、Qemu等虚拟机兼容,从来就没有提到过VPC,所以有问题也是正常的,改用VMWare等虚拟机或在真实机中用就可以了。
作者: GOTOmsdos     时间: 2006-8-19 00:58
恩,这个工作很有意义!
不过,少了几个重要的程序:
xcopy16.exe
xxcopy.exe
acopy.com (国人写的,挺好的,除了键入的目录不能是长文件名外,能完整复制长文件名,其他的程序总是丢三落四..)
我曾经试过MSDOS7.1下用XCOPY,XCOPY16和XXCOPY复制整个XP
可是总是少这少那的..
作者: Wengier     时间: 2006-8-19 03:25
DOS版的xcopy16和xxcopy16都是不支持长文件名的,不推荐。

acopy是直接存取磁盘的,方式跟其它的都不同,故使用起来感觉有点不太好,而且用法不太灵活(选项实在少得可怜)。

而我给的那个DOS启动盘中的xcopy可以完全正常复制中英文长文件名,复制起来不会有任何问题,而且功能很多。
作者: GOTOmsdos     时间: 2006-8-19 19:50
那个DOS启动盘中的xcopy 跟 98的XCOPY 不一样吗?
我用过 XCOPY ,可是,好象隐藏和系统文件总是不复制,
你这个行吗?
作者: Wengier     时间: 2006-8-19 21:39


  Quote:
Originally posted by GOTOmsdos at 2006-8-19 07:50 PM:
那个DOS启动盘中的xcopy 跟 98的XCOPY 不一样吗?
我用过 XCOPY ,可是,好象隐藏和系统文件总是不复制,
你这个行吗?

当然行的,你试试就知道了(加/H)。
作者: GOTOmsdos     时间: 2006-10-5 02:40
发现Wengier提供的 Xcopy 是WIN32 控制台吧?
能在纯DOS运行?

他需要辅助的一些库吗?

我来试试。。。
作者: Wengier     时间: 2006-10-5 10:23


  Quote:
Originally posted by GOTOmsdos at 2006-10-5 02:40 AM:
发现Wengier提供的 Xcopy 是WIN32 控制台吧?
能在纯DOS运行?

他需要辅助的一些库吗?

我来试试。。。

你如果试过用我那张启动盘启动就会发现当然能运行!
作者: kfjinyang     时间: 2007-4-12 00:32
无语...实在是佩服...佩服...
作者: frankwz     时间: 2007-4-14 10:03
看一下
作者: zhlzq     时间: 2007-4-15 12:19
实在是佩服...佩服...
作者: COSMIC0062     时间: 2007-4-19 02:09
学习了,谢!
作者: yinshi123     时间: 2007-5-3 17:50
很好,下一个
作者: ieee520     时间: 2007-5-14 13:09
精彩!!!!
作者: wentaowen     时间: 2007-5-16 13:14
几天的潜水学习确实感觉收获颇丰,感谢Wengier为我们提供的学习平台.
作者: griffingl     时间: 2007-7-3 23:15
在哪可以下载到7Z的DOS版呢?
作者: jacksonxu2007     时间: 2007-11-27 09:50    标题: ss

DDD
作者: limingqiu5021     时间: 2010-6-18 10:24
很好 很不错i
作者: ringlys0     时间: 2010-8-22 14:33
纯支持一下 。
作者: mini2324     时间: 2010-8-25 16:17
好详细啊!
作者: joymusic     时间: 2010-9-11 16:37
好文章
作者: sununs     时间: 2010-10-7 09:54
学习来了。。。