Buscar valores en el Registro de windows....

Iniciado por **Aincrad**, 21 Julio 2018, 03:11 AM

0 Miembros y 1 Visitante están viendo este tema.

**Aincrad**

Hola foro, Como dice el titulo quiero Buscar valores en el regedit,

Ejemplo :

Virus >> wscript.exe //B "C:\Users\S4LXenox\AppData\Local\Temp\VirusUSB.vbs"

agrego un virus que se auto inicio. por medio una app quiero Que si en el valor:

wscript.exe //B "C:\Users\S4LXenox\AppData\Local\Temp\VirusUSB.vbs"

sea detectado por mi app y me pregunte si quiere que elimine esa entrada, para el vbs no se ejecute.




Bueno lo primero que imagino es listar en un listbox mis app que se auto inician, Bueno eso es facil ya que es casi lo mismo que la duda que tenia hace tiempo de como verificar los programas instalados
(link).




1)   En-listo mis apps que se auto inician:

Código (vbnet) [Seleccionar]
Imports Microsoft.Win32

Public Class Form1
    Private Sub ListarHKCU()
        Dim key As RegistryKey
        Dim valueNames As String()
        Dim currentUser As RegistryKey = Registry.CurrentUser
        Dim name As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
        Dim str2 As String = "Software\Microsoft\Windows\CurrentVersion\Runonce"
        Try
            key = currentUser.OpenSubKey(name, True)
            valueNames = key.GetValueNames
            Dim str3 As String
            For Each str3 In valueNames
                Try

                    ListBox1.Items.Add((str3 & " >> " & key.GetValue(str3).ToString))
                Catch ex As Exception
                End Try
            Next
        Catch ex As Exception
        End Try
        Try
            key = currentUser.OpenSubKey(str2, True)
            valueNames = key.GetValueNames
            Dim str3 As String
            For Each str3 In valueNames
                Try
                    ListBox1.Items.Add((str3 & " >> " & key.GetValue(str3).ToString))
                Catch ex As Exception
                End Try
            Next
        Catch ex As Exception
        End Try
    End Sub


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.Items.Clear()
        ListarHKCU()
    End Sub
End Class



Lo segundo seria Buscar en ese listbox la cadena de texto "Wscript.exe"

Bueno en esta parte ya he intentado con : FindMyString pero no logra reconocer ese string.

Busque una solución algo floja, osea use un textbox en vez de el Listbox. y para detectar el virus use el siguiente codigo:

Código (vbnet) [Seleccionar]
Dim APP_string As String() = {"wscript", "Cmd"}
        For Each elemento As String In APP_string
            If TextBox1.Text.Contains(elemento) Then
                'AQUI VA EL CODIGO DEL MENSAJE Y LA OPCION PARA BORRAR EL VIRUS DEL REGISTRO
            End If
        Next


Ahora Es la parte en la que necesito ayuda, es en la que borra el auto inicio del vbs, osea borra esa entrada del regedit.




Bueno he puesto como lo he intentado haber si me pueden echar una mano.

Basicamente lo que quiero es Buscar en donde inician las app por medio del regedit :

SOFTWARE\Microsoft\Windows\CurrentVersion\Run

y hay busca archivos script , Que por lo general usan en los valores : "CMD /C" o "wscript.exe //B" para ejecutarse y cuando encuentre ese string en el regedit elimine esa entrada.

Gracias de antemano. si logro hacerlo lo posteare.


PD: Si se preguntan para que estoy haciendo esto , es por que llevo ya un tiempo desarrollando un motor de antiviurs . y apenas he logrado esto :
https://ibb.co/geS69J Cuando lo termine , (si es q lo termino subire el codigo fuente aqui)






Eleкtro

#1
¿Buscar y eliminar valores del registro de Windows?, de nuevo te invito a que le eches un ojo a...:


concretamente en el año 2015...


Este código de aquí abajo lo he hecho usando mi librería comercial ElektroKit, lo comento por que los nombres de los miembros de la clase cambian un poco con la clase que publiqué en el año 2015 en ese post, pero supongo que se entenderá igualmente el modo de empleo que se debe aplicar:

Código (vbnet) [Seleccionar]
Imports Microsoft.Win32
Imports ElektroKit.Core.System.Types
Imports ElektroKit.Core.System.Tools


Código (vbnet) [Seleccionar]
Dim regInfos As IEnumerable(Of RegInfo) =
   RegistryUtil.FindValue(RegistryView.Default,
                          rootKeyName:="HKCU",
                          subKeyPath:="Software\Microsoft\Windows\CurrentVersion\Run",
                          valueName:="WScript",
                          matchFullValueName:=False,
                          ignoreCase:=True,
                          searchOption:=SearchOption.TopDirectoryOnly)

For Each regInfo As RegInfo In regInfos
   Dim sb As New StringBuilder()
   sb.AppendLine(regInfo.RootKeyName)
   sb.AppendLine(regInfo.SubKeyPath)
   sb.AppendLine(regInfo.ValueName)
   sb.AppendLine(regInfo.ValueData?.ToString())
   Console.WriteLine(sb.ToString())
Next regInfo


...eso devolvería cualquier valor que contenga el nombre "WScript". (ojo, el nombre a buscar no acepta el uso de *wildcards* como en la CMD)

Si quieres algo más sencillito, menos tedioso, pues... sinceramente solo con buscar en Google puedes encontrar miles de resultados sobre como buscar valores de registro en .NET.

Saludos!








**Aincrad**

Citar
Código (vbnet) [Seleccionar]
Dim regInfos As IEnumerable(Of RegInfo) =
    RegistryUtil.FindValue(RegistryView.Default,
                           rootKeyName:="HKCU",
                           subKeyPath:="Software\Microsoft\Windows\CurrentVersion\Run",
                           valueName:="WScript",
                           matchFullValueName:=False,
                           ignoreCase:=True,
                           searchOption:=SearchOption.TopDirectoryOnly)

For Each regInfo As RegInfo In regInfos
    Dim sb As New StringBuilder()
    sb.AppendLine(regInfo.RootKeyName)
    sb.AppendLine(regInfo.SubKeyPath)
    sb.AppendLine(regInfo.ValueName)
    sb.AppendLine(regInfo.ValueData?.ToString())
    Console.WriteLine(sb.ToString())
Next regInfo


Justo lo q necesitaba gracias de nuevo!

PD:  estaba apunto en hacer un post preguntando que era de ti? ya que es raro que te desaparezcas por tanto tiempo XD  ;D. me imagino que estarías muy ocupado! . Gracias por el code!  ;-)