中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何对比系统文件,并替换. 上一主题 | 下一主题
babytv
新手上路





积分 3
发帖 3
注册 2009-4-2
状态 离线
『楼 主』:  如何对比系统文件,并替换.

想作一个批处理..
让文件夹中的文件与%windir%\system32下的系统文件作对比.
如果系统文件被修改过,则自动替换.

用什么命令可以实现?
如:fc ctfmon.exe %windir%\system32\ctfmon.exe

--------
因为这个批处理针对的不仅仅只有一台电脑
所以用时间来对照是否有被修改过,这个方法不可行.

至于MD5,貌似可以..

另外FC对比文件时,是否会返回值呢?
如果可以,直接用FC对照后,如果两者有区别

则用当前文件替换system32目录中的文件.

[ Last edited by babytv on 2009-4-6 at 04:28 ]

2009-4-3 02:48
查看资料  发送邮件  发短消息 网志  OICQ (155099540)  编辑帖子  回复  引用回复
freezing2688
新手上路




积分 8
发帖 8
注册 2008-11-13
状态 离线
『第 2 楼』:  

先说清楚你的意思啊。- -!
以system32为例
你是想比较system32里面的文件增加还是减少了?
还是想比较system32里面的具体的某一个对象。像cmd.exe是否被修改这样的?

2009-4-3 06:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 3 楼』:  

我有个想法:
做个文件时间记录表,如果最后修改时间不同了,则说明被修改过了,然后替换。



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-3 07:50
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 4 楼』:  

http://dyersweb.com/projects/MD5/
Usage: md5sum.exe [OPTIONS] <src1>[ src2...]

This utility is for displaying and verifying MD5 digests.

Using no arguments will allow you to input data directly into stdin
Argument Update v1.0.0+ RC: -v (little v) now outputs version, and -V toggles ve
rbose

OPTIONS:

  -h, --help                         Display this help and quit.
  -v, --version                      Output version and license info.
  -p, --plain-text <"text">          Output digest for "text" and close.

Note: the next two options are just for compatibility with other md5sum utilitie
s
  -t                                 Default type: read files in text mode.
  -b                                 Output signifying that files should be read
in binary mode.

These options are for md5 checking only, -v cannot be used on its own.
  -c, --check <md5file>              Checks if digest matches file.*
  -V, --verbose                      Must use with -c,--check: output in detail.


* = the md5 file should be in the same format (or of the format produced by the
Unix md5sum
tool)

EXAMPLES:

  md5sum.exe archive.tar.gz archive2.tar.gz *.txt
  md5sum.exe -cV digests.md5
  md5sum.exe --plain-text "hello, world"
将 md5 值保存到文本:
md5sum %windir%\system32\*.exe>system32_md5.txt
之后可以直接检测:
md5sum -c system32_md5.txt
[ Last edited by tireless on 2009-4-3 at 08:57 ]

2009-4-3 08:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 5 楼』:  

在我编辑的 ’计算机系统维护‘ 里就有这个功能 ,主要是对‘exe、dll、inf 程序快照比较 (检查是否被病毒修改)   文件是按修改时间,文件路径,文件大小记录的。快照比较后直接得到对照结果。
http://www.cn-dos.net/forum/viewthread.php?tid=46354&fpage=1

2009-4-3 09:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
babytv
新手上路





积分 3
发帖 3
注册 2009-4-2
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by freezing2688 at 2009-4-3 06:06:
先说清楚你的意思啊。- -!
以system32为例
你是想比较system32里面的文件增加还是减少了?
还是想比较system32里面的具体的某一个对象。像cmd.exe是否被修改这样的?

针对某个文件.

2009-4-6 04:30
查看资料  发送邮件  发短消息 网志  OICQ (155099540)  编辑帖子  回复  引用回复
babytv
新手上路





积分 3
发帖 3
注册 2009-4-2
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by ZJHJ at 2009-4-3 09:48:
在我编辑的 ’计算机系统维护‘ 里就有这个功能 ,主要是对‘exe、dll、inf 程序快照比较 (检查是否被病毒修改)   文件是按修改时间,文件路径,文件 ...

你那个程序我之前也曾找到并下载测试过.
它是记录修改时间.
与我的想法不符.

2009-4-6 04:31
查看资料  发送邮件  发短消息 网志  OICQ (155099540)  编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by babytv at 2009-4-3 02:48:
想作一个批处理..
让文件夹中的文件与%windir%\system32下的系统文件作对比.
如果系统文件被修改过,则自动替换.

用什么命令可以实现?
如:fc ctfmon.exe ...

这我就不明白了....你不是说了吗? (如果系统文件被修改过,则自动替换) 你不记录修改时间? 莫非要记录创建时间? 还是访问时间啊?.......

要检查文件是否被修改?只有记录修改时间,在你认为计算机程序正常的情况下,
按修改时间,路经,大小,程序名记录作为标准。一但你认为需要知道计算机程序是否被修改时,重新记录一次,就会自动比较出来。若文件内容被修改 1 修改时间会变. 2 文件大小也会变.

再说,文件记录下来会大于1GM. 如果被修改的程序很多,光用FC比较,或者用网络上找的简单代码来检查都不会达到满意的效果.(因为我做了这方面大量的研究)
如果你只用FC的返回值,当然就很简单.(那新装程序怎么办?)

[ Last edited by ZJHJ on 2009-4-6 at 06:57 ]

2009-4-6 06:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:  

@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
Set S=D:\test
Set D=C:\test
Pushd %S%
For /f "delims=" %%i in ('dir /A-D /B %D%') Do (
FC.exe /B "%D%\%%i" "%S%\%%i" 1>nul 2>nul
if !errorlevel! EQU 0 (Echo %%i 没有差异) else (if !errorlevel! EQU 1 (Echo %%i 有所变化) else (Echo %S%\%%i 不存在))
)
Popd
Pause



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-4-6 06:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: