标题: [已解决]请问如何替换受系统保护的文件,谢谢!
[打印本页]
作者: lixin12345
时间: 2008-6-21 13:10
标题: [已解决]请问如何替换受系统保护的文件,谢谢!
我是新来的,对DOS批处理还真不懂!恳请各位帮忙!
就是XP在安装快结束或已装好,我想用批处理来替换OEM的四个文件和两个DLL文件。请问应该如何来实现,谢谢!
[
Last edited by lixin12345 on 2008-6-22 at 10:07 PM ]
作者: quya
时间: 2008-6-21 14:37
你可以研究一下我的盘
http://www.cn-dos.net/forum/viewthread.php?tid=41039&fpage=1
作者: lixin12345
时间: 2008-6-21 16:54
我是请高手来解决我的问题啊,哪能研究出你的盘!不过你的盘看样子做的不错!
要研究你盘还要下来那么大的一个ISO,唉!还是不下了!
作者: quya
时间: 2008-6-21 17:57
那么你为什么要替换这几个文件呢? 纳闷。
这几个文件可以替换的, 但dll 2个文件必须在安全模式下替换。
安装到最后替换,大多数情况下系统就进不去了。因为不能轻易替换这几个文件。
作者: lixin12345
时间: 2008-6-21 19:29
手工我知道怎么来替换的,而且已经成功了的!我现在想用一个批处理来达到同样的效果!但我对批处理真的不懂,所以才来请教的啊。
作者: quya
时间: 2008-6-21 20:55
那我贴一个以前我做的给你参考
@ECHO OFF
TITLE 修改VOL版Windows XP成OEM版----瞿亚设计
REM 修改OEMDIR值可以改成其他的OEM版本
set OEMDIR=\WXPOEM\IBM
if not defined SAFEBOOT_OPTION ECHO 请进入安全模式运行此程序!&GOTO END
ECHO 免责声明:您应该对使用本程序的结果自行承担风险。&ECHO.
ECHO 此批处理文件将把VOL版的XP改成IBM OEM 版本
ECHO 警告!必须修改对应BIOS的特征码,否则无法激活!
ECHO 如想改成其他品牌的OEM版本,请修改本文件再运行 &ECHO.
:answer
set/p cont=继续安装 (y/n)?
if %cont%==y goto setup
if %cont%==Y goto setup
if %cont%==n goto end
if %cont%==N goto end
goto answer
:setup
ECHO. &IF NOT EXIST %OEMDIR%\OEMBIOS.CAT GOTO ERROREND
REM 更新OEM文件到DllCache和SYSTEM32目录 共4个文件
attrib -a -s -r -h %SYSTEMROOT%\System32\Dllcache\oembios.cat
attrib -a -s -r -h %SYSTEMROOT%\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\oembios.cat
COPY %OEMDIR%\*.* %SYSTEMROOT%\System32\Dllcache /Y>nul
COPY %OEMDIR%\OEMBIOS.BIN %SYSTEMROOT%\System32 /Y>nul
COPY %OEMDIR%\OEMBIOS.DAT %SYSTEMROOT%\System32 /Y>nul
COPY %OEMDIR%\OEMBIOS.SIG %SYSTEMROOT%\System32 /Y>nul
COPY %OEMDIR%\OEMBIOS.CAT %SYSTEMROOT%\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} /Y>nul
COPY %OEMDIR%\OEMINFO\*.* %SYSTEMROOT%\System32 /Y>nul 2>nul
REM 更新激活验证文件(Dpcdll.dll、Pidgen.dll)
EXPAND -R Dpcdll.dl_ %SYSTEMROOT%\System32\Dllcache>nul
EXPAND -R Dpcdll.dl_ %SYSTEMROOT%\System32>nul
EXPAND -R Pidgen.dl_ %SYSTEMROOT%\System32\Dllcache>nul
EXPAND -R Pidgen.dl_ %SYSTEMROOT%\System32>nul
REM 导入OEM注册表文件
attrib +a +s +r +h %SYSTEMROOT%\System32\Dllcache\oembios.cat
attrib +a +s +r +h %SYSTEMROOT%\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\oembios.cat
REGEDIT -S OEM.REG
ECHO 导入完成,请重新启动计算机
GOTO END
:ERROREND
ECHO 未发现OEM版本相关文件,系统未作改动
:END
PAUSE
注意将OEM.REG,PIDGEN.DL_,DPCDLL.DL_ 放在上述批处理的同一个目录。
OEM.REG内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"ProductId"="55661-OEM-0011964-47775"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"ProductId"="55661-OEM-0011964-47775"
"DigitalProductId"=hex:a4,00,00,00,03,00,00,00,35,35,36,36,31,2d,4f,45,4d,2d,\
30,30,31,31,39,36,34,2d,34,37,37,37,35,00,2d,00,00,00,41,32,32,2d,30,30,30,\
30,31,00,00,00,00,00,00,00,3e,5c,43,0e,f2,25,4c,6e,07,bd,af,e0,91,6f,05,00,\
00,00,00,00,3d,1f,f1,40,99,a3,02,00,02,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,34,33,34,30,30,00,00,00,00,00,00,00,96,16,\
00,00,c2,b7,1a,38,00,01,00,00,8c,01,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,50,91,fe,62
"LicenseInfo"=hex:33,43,46,34,7e,d9,1f,26,2d,7c,f4,45,be,b3,26,ef,05,4b,17,21,\
10,86,9c,ff,5e,4c,06,86,00,cd,09,9d,f4,58,c5,d8,21,ed,11,f3,42,66,af,35,e5,\
99,1e,95,7d,58,26,8e,63,ce,68,d5
作者: lixin12345
时间: 2008-6-21 21:40
首先谢谢您的帮助!看了半天有点明白了这个批处理的运行过程:
1、设置要替换文件的目录和文件;
2、必须在安全模式下运行。
3、导入注册表文件(其实是一个XP的序列号,不知道是不是这样?)。
然后我的意思是这样的:
1、能不能不从安全模式下替换(重启到安全模式我个人认为一是慢二是不爽);
2、OEM.REG可以不导入的,应安装时已输入了序列号(是不是还需导入吗?)。
3、有一个DLL文件是没压缩的,还要自己给他压缩吗?
不知道有没有其他更好的办法(这个问题有点天真,呵呵)
比如说获得一个权限直接修改?
总之谢谢您了!
[
Last edited by lixin12345 on 2008-6-21 at 09:43 PM ]
作者: quya
时间: 2008-6-21 21:48
1. 正确
2. 必须
3. 其实是一个XP的OEM序列号
既然你在安装的时候已经输入了序列号,那么这个序列号已经决定了你需要什么样的6个文件,你要替换它们干什么??!!难道要搞死它?
DLL文件可以是没压缩的。但会出现个错误信息,稍微修改下可以屏蔽错误信息。
比如 EXPAND -R Dpcdll.dl_ %SYSTEMROOT%\System32\Dllcache>nul 2>nul
作者: lixin12345
时间: 2008-6-21 21:54
搞死它?不明白您的意思?
打个比方(可能不是很好):先前用PRO安装时却输了个某OEM的序列号,但没有激活,是不是可以这样了?
我只不过提出一个这样的问题看能不能解决而已,其他暂且不论它了。
唉!其实我的真实意思是这样的:
就是说能不能用一个批处理来获得一个足够大的权限来替换一个受系统所保护的文件,一方面能顺利替换,另一方面不会提示你插入光盘之类的提示而已啊!
[
Last edited by lixin12345 on 2008-6-21 at 10:04 PM ]
作者: quya
时间: 2008-6-21 22:26
Quote: |
Originally posted by lixin12345 at 2008-6-21 01:10 PM:
我是新来的,对DOS批处理还真不懂!恳请各位帮忙!
就是XP在安装快结束或已装好,我想用批处理来替换OEM的四个文件和两个DLL文件。请问应该如何来实现,谢谢! |
|
Quote: |
搞死它?不明白您的意思?
打个比方(可能不是很好):先前用PRO安装时却输了个某OEM的序列号,但没有激活,是不是可以这样了?
我只不过提出一个这样的问题看能不能解决而已,其他暂且不论它了。
唉!其实我的真实意思是这样的:
就是说能不能用一个批处理来获得一个足够大的权限来替换一个受系统所保护的文件,一方面能顺利替换,另一方面不会提示你插入光盘之类的提示而已啊! |
|
你的比方很不恰当,因为输错序列号无法继续安装的。比如本来是VOL版的输了个OEM序列号。
你的真实意思在顶楼就说了,很明显是想替换OEM的6个文件。怎么到最后变成其他文件了。
所以我确实怀疑你真实的动机。要想人家帮助你,请真心对待人家。谢谢。
[
Last edited by quya on 2008-6-21 at 10:27 PM ]
作者: lixin12345
时间: 2008-6-21 22:46
唉!我怎么不真心了?我就是没表达清楚我的意思而已,我说了不要在安全模式下替换,被您说的越糊涂了(其实在安全模式下替换也不需要这么复杂的批处理的),我说过了,在安全模式下我会替换的!我说过了比方是不好!
因为我要的结果没有,所以进一步说明而已,也用着这样吧!不愿帮无所谓的!
好象没有对您怎么样吧!唉!算了!有高手愿意帮就帮,不愿意帮也无所谓的,总是有办法的,实在搞不定那也没办法,只好不做了!如果说有对您不真心的话,在此说一声对不起了!再一次谢谢您 了!
我要的正常情况下能不能用批处理方式替换受系统保护的文件。
作者: quya
时间: 2008-6-21 23:23
就我目前的水平,我再也无法帮你了。因为我知道批处理不是万能的。
不过这儿的高手很多, 但愿有人能帮上你忙。
作者: fastslz
时间: 2008-6-22 03:50
http://www.cn-dos.net/forum/view ... ;highlight=Replacer
作者: Climbing
时间: 2008-6-22 08:40
我对这个研究不多,在XP环境下,有一个replace.exe命令,是用来替换系统文件的,但不是很好用。
作者: lixin12345
时间: 2008-6-22 08:55
谢谢13楼和14楼的网友!13楼给出的连接是老外的,我已经看过了,太长了,就我的水平也看不懂,呵呵!
14楼的命令倒是没注意过,查一下资料再说,再一次谢谢楼上的两位!
作者: quya
时间: 2008-6-22 09:46
我可以很负责地说, replace 命令对XP受保护的文件没有用。
replace 命令只对那些不是XP关键文件,但正在使用的文件才有用。
我已经上过这个当了。
至于那个老外写的是否有用,我不知道,实在太长了, 而且以我的水平我看不懂。年纪大了,理解力不行了,看一会就会头晕。
[
Last edited by quya on 2008-6-22 at 09:51 AM ]
作者: lixin12345
时间: 2008-6-22 10:15
刚才在这个地方:
http://www.diybl.com/course/hack/ha_h/2007616/56802.html
找到一篇文章,有兴趣的朋友也可以去看看。
“在Win2000/XP上安静地替换正在使用的系统文件”
作者: quya
时间: 2008-6-22 11:10
所以我说了批处理多半是不行的, 你看高手都用到C 语言了。
作者: Climbing
时间: 2008-6-22 15:50
基本上都不太可能实现。还是在PE或者纯DOS环境比较方便。
作者: fastslz
时间: 2008-6-22 19:17
你不用看懂replacer.cmd!说实话我也没看懂,也不必看懂,知道用法就行,简单说明用法(批量替换系统文件,单个的就不多说了)
先创建一个要被替换的文件列表list.txt,假使要替换shell32.dll,winlogon.exe此时list.txt内容为
;; ReplacerScript
shell32.dll
winlogon.exe
然后运行命令
echo y|"D:\Test\replacer.cmd" "D:\Test\list.txt"
OK了
需要注意的是新的shell32.dll和winlogon.exe文件放在D:\Test里(即:replacer.cmd同一目录)
作者: lixin12345
时间: 2008-6-22 22:03
太感动了,测试成功,真的谢谢啊,彻底解决了我的问题!!!!!!!
高手就是高手,一出手就解决了问题!再一次谢谢您!!!!!!
作者: Climbing
时间: 2008-6-23 09:15
呵呵,说实在的,刚开始偶看见Replacer那么长的代码,确实也感觉挺头疼的,不过耐下性子仔细看,原来原理非常的简单,如下:
在Windows下,你无法替换一个正在使用的文件,例如shell32.dll,但你却可以给这个文件改名,因为Windows在重新启动前会使用改名后的文件,这里你再将用来替换的文件用原名复制过来,重新启动后,Windows会重新使用替换后的文件。
作者: quya
时间: 2008-6-23 18:36
Quote: |
Originally posted by Climbing at 2008-6-23 09:15 AM:
呵呵,说实在的,刚开始偶看见Replacer那么长的代码,确实也感觉挺头疼的,不过耐下性子仔细看,原来原理非常的简单,如下:
在Windows下,你无法 ... |
|
我有个疑惑,我也曾经手工用改名的办法替换过,不过重启动以后还是不行。可能改名的办法不一定100%适用于所有的文件。