×

savekey 注册表 修改注册表

怎么用VB修改注册表里面的值?怎么样打开注册表运行什么命令

admin admin 发表于2022-06-07 07:40:48 浏览94 评论0

抢沙发发表评论

怎么用VB修改注册表里面的值


’修改注册表API:
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const ERROR_SUCCESS = 0&

Declare Function RegCloseKey Lib “advapi32.dll“ (ByVal Hkey As Long) As Long
Declare Function RegCreateKey Lib “advapi32.dll“ Alias “RegCreateKeyA“ (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteKey Lib “advapi32.dll“ Alias “RegDeleteKeyA“ (ByVal Hkey As Long, ByVal lpSubKey As String) As Long
Declare Function RegDeleteValue Lib “advapi32.dll“ Alias “RegDeleteValueA“ (ByVal Hkey As Long, ByVal lpValueName As String) As Long
Declare Function RegOpenKey Lib “advapi32.dll“ Alias “RegOpenKeyA“ (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib “advapi32.dll“ Alias “RegQueryValueExA“ (ByVal Hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegSetValueEx Lib “advapi32.dll“ Alias “RegSetValueExA“ (ByVal Hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Const REG_SZ = 1 ’ Unicode nul terminated string
Public Const REG_DWORD = 4 ’ 32-bit number

Public Sub savekey(Hkey As Long, strPath As String)
Dim keyhand&
r = RegCreateKey(Hkey, strPath, keyhand&)
r = RegCloseKey(keyhand&)
End Sub

Public Function getstring(Hkey As Long, strPath As String, strValue As String)

Dim keyhand As Long
Dim datatype As Long
Dim lResult As Long
Dim strBuf As String
Dim lDataBufSize As Long
Dim intZeroPos As Integer
r = RegOpenKey(Hkey, strPath, keyhand)
lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, “ “)
lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then
intZeroPos = InStr(strBuf, Chr$(0))
If intZeroPos 》 0 Then
getstring = Left$(strBuf, intZeroPos - 1)
Else
getstring = strBuf
End If
End If
End If
End Function

Public Sub savestring(Hkey As Long, strPath As String, strValue As String, strdata As String)
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(Hkey, strPath, keyhand)
r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
r = RegCloseKey(keyhand)
End Sub

Function getdword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String) As Long
Dim lResult As Long
Dim lValueType As Long
Dim lBuf As Long
Dim lDataBufSize As Long
Dim r As Long
Dim keyhand As Long

r = RegOpenKey(Hkey, strPath, keyhand)

’ Get length/data type
lDataBufSize = 4

lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize)

If lResult = ERROR_SUCCESS Then
If lValueType = REG_DWORD Then
getdword = lBuf
End If
’Else
’ Call errlog(“GetDWORD-“ & strPath, False)
End If

r = RegCloseKey(keyhand)

End Function

Function SaveDword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long)
Dim lResult As Long
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(Hkey, strPath, keyhand)
lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
’If lResult 《》 error_success Then Call errlog(“SetDWORD“, False)
r = RegCloseKey(keyhand)
End Function

Public Function DeleteKey(ByVal Hkey As Long, ByVal strKey As String)
Dim r As Long
r = RegDeleteKey(Hkey, strKey)
End Function

Public Function DeleteValue(ByVal Hkey As Long, ByVal strPath As String, ByVal strValue As String)
Dim keyhand As Long
r = RegOpenKey(Hkey, strPath, keyhand)
r = RegDeleteValue(keyhand, strValue)
r = RegCloseKey(keyhand)
End Function

怎么样打开注册表运行什么命令


运行注册表的命令是regedit
,用
WIN+R
快捷组合键打开“运行”窗口,输入:regedit
然后回车确认,即可打开注册表。当然你也可以:点击开始---运行---在窗口中输入
regedit---回车确认即可。

瑞星是什么


看到瑞星2008发布了所谓”超越传统HIPS”、“监控功能比传统HIPS的更全面“的功能,当时为之震惊,难道国产杀毒软件终于开发出了强大的HIPS功能了?
立刻下了测试版安装,打算进行测试

起初考虑,发布文章中说得如此强大的主动防御技术,是不是需要逆向分析才能清楚呢?
可惜,事实告诉我们,灰盒就够了

使用Rootkit Unhooker/Gmer工具对安装瑞星2008的机器进行扫描即可得出瑞星的保护究竟在哪了

(1)SSDT HOOK :使用了最原始也是最易恢复的SSDT挂钩方式
挂钩了入下函数:
ZwCreateThread、ZwWriteProcessMemory:用于防止远线程注入
ZwLoadDriver:拦截正规通过SCM的驱动加载
ZwSetValueKey、ZwCreateKey、ZwDeleteKey、ZwDeleteKey、ZwDeleteValueKey、ZwRenameKey:
用于拦截注册表操作
ZwTerminateProcess:保护进程不被结束

(2)ShadowTable挂钩:挂钩了两个GDI函数:
NtGdiSendInput、NtSetWindowsHookEx
分别用于拦截键盘鼠标模拟输入 和全局钩子

(3)Hook了Tcpip\Ntfs\FastFat\Cdfs等驱动的Dispatch Routine:
用于拦截网络操作、文件操作

(4)Hook了fsd的iat上的上几个函数,和主动防御基本无关

稍懂内核技术者
从上面就可以看出,这个所谓的保护全面、超越传统HIPS的所谓主动防御是多么的弱、多么的不足,多么的容易穿透、多么的可笑了

这个所谓的主动防御体系不但不能说超越所谓HIPS(使用的都是过时的技术)、另外监控非常的不足,可轻易突破,根本不具有主动防御的使用价值,可以说,根本不能称之为一个完整的、可靠的主动防御体系,不能称为IPS

这里就来随便说几点这个体系的一些弱点:

弱点1:鸡肋的自我进程保护:
瑞星在发布文章中说到“开启了瑞星2008的自我保护后,使用Icesword也无法结束其进程”,这句话大家去江民论坛上看看,几天前江民的2008测试版出来的时候,也是说了这么同样一句话,但是,江民是货真价实不能被结束,瑞星呢?
不用多说,拿ICESWORD测试一下可知,瑞星的所有进程都可以被轻易结束

为什么呢?因为瑞星只挂钩了ssdt上的NtTerminateProcess,这对于使用更底层的方式结束进程的Icesword是完全没有作用的,同时,只要这个钩子被恢复(在瑞星的全面保护下恢复此钩子也是非常容易的,见后面的弱点分析),使用任务管理器即可结束其所有进程(大家可以使用一些具有 SSDT恢复功能的工具例如超级巡警、gmer等试试)
这就是所谓强大的“自我保护”

弱点2:注册表监控的多个漏洞
(1)注册表监控使用全路径判断注册表写入键名的方式,这种方式使用一个小技巧就可以饶过:
先打开想要写入的键的上一层键,例如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\,得到句柄后再使用这个句柄+Run来操作这个注册表,即可完全饶过瑞星的所谓“注册表监控”,写入注册表

(2)没有拦截ZwSaveKey\ZwRestroeKey等方式写入注册表
该方法可以彻底饶过瑞星的注册表监控,SSM等专业的HIPS都已加入对这个写入注册表的保护,瑞星根本没有拦截这个关键的地方,居然还敢号称超越传统HIPS,实在是厚颜

(3)没有拦截直接操作HIVE注册表方式
该方法和方法2一样,SSM等也都有拦截

虽然瑞星拦截了ZwLoadDriver来阻止驱动加载,但是木马完全可以写入一个BOOT0的驱动注册表项,等待重启后自然启动,那就可以为所欲为了

弱点3:这个最为致命:没有拦截ZwSetSystemInformation和其他一些穿透主动防御的常用技术
入侵者可以通过ZwSetSystemInformation函数的LoadAndCallImage方法加载一个驱动
非常简单的就可以做想做的操作,比如恢复瑞星那些非常容易被恢复的SSDT钩子,这些网络上都有现成的代码,也有多个木马使用了该技术进行主动防御穿透

其他的弱点就不说了,免得被木马利用(上面所说的只是一些已被广泛公开的方法)

这么多缺点,保护极其薄弱的一个所谓的“主动防御”体系,瑞星也好意思说超越其他主动防御软件,国内杀毒软件厂商的浅薄及浮躁,不言自喻。奉劝瑞星还是好好做好技术,不要再等微点出完主动防御后几年,才出来吹这么一个根本算不上“主动防御”的东西
-修改注册表