Vuelve el perro arrepentido con el mismo error en un programa

Iniciado por zalazar16, 12 Noviembre 2017, 15:13 PM

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

zalazar16

Buenas, tengo un problema, verán tengo una aplicación hermana de la otra que les había mencionado antes, esta presenta la misma falla, el supuesto "CÓDIGO FUENTE" sería traducido forzudamente con un programa de C# a VB, o no sé.

El programa lo abro con Visual Studio y me lanza errores, pero veo que el más grave, que no he podido solucionar, es que me dice declaración duplicada del miembro size y form.

Cito algo del Amigo Elektro  :D que fue la persona que me ayudó:

"En el código fuente que has compartido, el tamaño y posición de los controles se estaba especificando mediante una variable llamada "point", y otra "size", esta última entraba en conflicto con la propiedad Form.Size. Las referencias de los controles, así como la asociación de eventos de los controles, estaban definidos mediante propiedades, lo cual es muy típico de ver en conversores de código C# a VB.NET."

No se si me puedan ayudar o Elektro por favor me pueda echar una manito, estaría eternamente agradecido toda la vida y la otra. :-[ :-[ :-[

:o este es el supuesto código fuente:

https://www.mediafire.com/file/uaziq2tfgwzrfud/SISTEMA%20SUPUESTO%20CODIGO.zip

Eleкtro

#1
Cita de: zalazar16 en 12 Noviembre 2017, 15:13 PMCito algo del Amigo Elektro  :D que fue la persona que me ayudó:

"En el código fuente que has compartido, el tamaño y posición de los controles se estaba especificando mediante una variable llamada "point", y otra "size", esta última entraba en conflicto con la propiedad Form.Size. Las referencias de los controles, así como la asociación de eventos de los controles, estaban definidos mediante propiedades, lo cual es muy típico de ver en conversores de código C# a VB.NET."

Pero ese código fuente ya te lo reestructuré de forma completa, y este código fuente que ahora muestras no tiene nada que ver con el otro o al menos no lo parece, no tiene los mismos "errores" con Point y Size.

Aquí tienes, de mil nosecuantos errores de compilación te lo he dejado en unos 200, algo es algo:
http://www.mediafire.com/file/refb7gf660aqzsc/SISTEMA+SUPUESTO+CODIGO.zip

...el resto de referencias que quedan no se resolverlas, las que empiezan por "Me000.x" y tienen una cantidad variable de ceros ( en el código "reestructurado" les cambié el nombre por "Me._x" sin los ceros ), para eso habría que saber como trabaja el ofuscador con el que protejieron el code, o tomarse mucho tiempo en horas para ir revisando variable uno por uno de los casi 200... y eso ya no estoy dispuesto a hacerlo por tiempo, todo esto que ves "reestructurado" lo hice en 10 minutos.

En realidad la reestructuración del 90% del código es muy sencilla, son obviedades ("DateAndtime._get_Today()", "DateAndtime._get_TimeString()", etc, o métodos y variables cuyo nombre empiezan con un número, le añades un caracter válido al principio del nombre y lo arreglas), basta con hacerse una idea de como debería ser la sintaxis correcta y hacer unos cuantos reemplazamientos de string globales desde el propio Visual Studio, no hace falta nada más, pero esas referencias que empiezan por "Me0000000" no lo consigo descifrar.

Saludos.








zalazar16

#2
 :¬¬ Creo que la parranda fue que me ofuscaron el anterior código, y por eso es completamente diferente :-( :-( :-( :-(

Esta es el CF sin OFUSCAR

https://www.mediafire.com/file/4krh72s22i7ebt4/SISTEMA%20NO%20OBFUSCADO.zip

CREO QUE PUDE SACAR ALGUNOS ERRORES, AHORA TENGO ERRORES DE DATETIME, y Size y Point, ahora si, era que estaba Ofuscado el bendito programa, Dios, le voy a dar un premio al que lo hizo  :rolleyes: ojala me puedan ayudar con este bendito dolor de cabeza

GRACIAS AMIGO ELEKTRO POR TU AYUDA, ERES LO MÁXIMO QUE UNO PUEDE ENCONTRAR POR LA INTERNET, PERSONAS COMO TU HACEN FALTA EN EL MUNDO!!!!!


ahora no tengo los Me000x y la infinidad de parecidos, solo DateTime y Size, el codigo creo que esta bien, el problema es al tratar de abrir el diseñador de Windows Forms

MOD: No hacer doble post. Usa el botón modificar.

Eleкtro

Cita de: zalazar16 en 13 Noviembre 2017, 22:23 PM
ahora no tengo los Me000x y la infinidad de parecidos, solo DateTime y Size

Si arreglaste todo eso supongo que te lo puedo mirar en un rato... ¿es este enlace?: https://www.mediafire.com/file/4krh72s22i7ebt4/SISTEMA%20NO%20OBFUSCADO.zip








zalazar16

Si ese mismo, el que dice NO OFUSCADO, Si lo revisas seria lo mejor de este mundo, te monto un altar

tincopasan

si ese supuesto codigo fuente lo conseguiste desensamblando un exe con alguna herramienta tipo dnspy,reflector, etc pone el exe y lo veo para sacar el ofuscador antes de ver el código fuente, sino es así, perdón por meterme.

zalazar16

#6

Sabes, haciendo pruebas pase el programa por varios decompiladores, telerik, skater, etc

Pero al pasarlo por NetReflector si me arroja parte exacta del código el problema es que el diseñador de Windows Forms lo da en código, y lanza errores, porque creo que ese programa no fue ofuscado de alguna manera, bueno es que el programa aveces es un asco, pero este tiene unos pequeños avances ajajajaja

Eleкtro

#7
Bueno, ya he analizado el "SISTEMA NO OFUSCADO". Si sigues al pie de la letra las siguientes indicaciones, arreglarás todos los errores de compilación y del diseñador de Forms.




Para arreglar los errores de compilación, estos son los reemplazamientos globales de texto en la clase Form1.vb que se debe hacer:

(primero el string original, abajo el reemplazamiento)

Citar
CitarDim date As DateTime
Dim [date] As DateTime

CitarDateAndTime.get_Now
DateAndTime.Now

CitarDateAndTime.get_Today
DateAndTime.Today

CitarDateAndTime.get_TimeString
DateAndTime.TimeString

CitarDateAndTime.DateAdd(4
DateAndTime.DateAdd(DateInterval.Day

CitarAs Timer
As System.Windows.Forms.Timer

CitarNew Timer
New System.Windows.Forms.Timer

CitarPrivate Overridable Property
Private Property

Y en la clase Cliente.vb
Citar
CitarPublic Custom Event
Public Event

CitarNew Thread(New ThreadStart(AddressOf Me.LeerSocket)).Start
Dim t As New Thread(New ThreadStart(AddressOf Me.LeerSocket))
t.Start




Para arreglar el error del diseñador de forms: "Duplicate declaration of member 'size'"

Dentro del método 'Initialize' de la clase 'Form1.vb', eliminas esta linea:
Dim size As New Size(&H100, &H124)

Y esto lo dejas así:
Me.CheckedListBox1.Size = New Size(&H100, &H124)

Y luego nos quedarán 555 errores de compilación en lineas como esta:
Citar
size = New Size(280, &H98)
Me.CheckedListBox2.Size = size

Basicamente tienes que ponerle el valor de la variable "size" correspondiente a cada linea:
Me.CheckedListBox2.Size = New Size(280, &H98)

Se puede automatizar la tarea de reemplazamiento con el siguiente código de una aplicación de consola:

Código (vbnet) [Seleccionar]
Public Module Module1

   Public Sub Main()

       Dim filepath As String = "...\SISTEMA NO OBFUSCADO\LOTERIA\Form1.vb"
       Dim sb As New StringBuilder()
       Dim size As String = String.Empty
       Dim control As String = String.Empty
       Dim lines As IEnumerable(Of String) = File.ReadLines(filepath, Encoding.Default)

       For Each line As String In lines
           If line.TrimStart().ToLower().StartsWith("size = new size") Then
               size = line.Substring(line.IndexOf("=") + 1).TrimStart() ' "New Size(width, height)"
               Continue For
           End If

           If line.TrimStart().ToLower().Contains(".size =") Then
               If Not String.IsNullOrEmpty(size) Then
                   control = line.Substring(0, line.LastIndexOf("=") + 1).TrimStart() ' "Me.ControlName.Size ="
                   Debug.WriteLine(control & size)
                   sb.AppendLine(control & size) ' "Me.ControlName.Size = New Size(width, height)"
                   size = String.Empty
                   control = String.Empty
                   Continue For
               End If
           End If

           sb.AppendLine(line)
       Next line

        File.WriteAllText(".\Form1_SizeFixed.vb", sb.ToString())

   End Sub

End Module





Para arreglar el error del diseñador de forms: "Duplicate declaration of member 'point'", el procedimiento es el mismo que con 'size'.

Dentro del método 'Initialize' de la clase 'Form1.vb', eliminas esta linea:
Dim point As New Point(&H10, &H80)

Y esto lo dejas así:
Me.CheckedListBox1.Location = New Point(&H10, &H80)

Y luego nos quedarán 555 errores de compilación en lineas como esta:
Citar
point = New Point(280, &H98)
Me.CheckedListBox2.Location = point

Basicamente tienes que ponerle el valor de la variable "point" correspondiente a cada linea:
Me.CheckedListBox2.Location = New Point(280, &H98)

Se puede automatizar la tarea de reemplazamiento con el siguiente código de una aplicación de consola:

Código (vbnet) [Seleccionar]
Public Module Module1

   Public Sub Main()

       Dim filepath As String = "..\SISTEMA NO OBFUSCADO\LOTERIA\Form1.vb"
       Dim sb As New StringBuilder()
       Dim point As String = String.Empty
       Dim control As String = String.Empty
       Dim lines As IEnumerable(Of String) = File.ReadLines(filepath, Encoding.Default)

       For Each line As String In lines
           If line.TrimStart().ToLower().StartsWith("point = new point") Then
               point = line.Substring(line.IndexOf("=") + 1).TrimStart() ' "New Point(x, y)"
               Continue For
           End If

           If line.TrimStart().ToLower().Contains(".location =") Then
               If Not String.IsNullOrEmpty(point) Then
                   control = line.Substring(0, line.LastIndexOf("=") + 1).TrimStart() ' "Me.ControlName.Location ="
                   Debug.WriteLine(control & point)
                   sb.AppendLine(control & point) ' "Me.ControlName.Location = New Point(x, y)"
                   point = String.Empty
                   control = String.Empty
                   Continue For
               End If
           End If

           sb.AppendLine(line)
       Next line

       File.WriteAllText(".\Form1_PointFixed.vb", sb.ToString())

   End Sub

End Module





Para arreglar los errores del diseñador de forms: "The type 'System.Windows.Forms.Form' has no property named 'xxxxx'"

Tienes que hacer estos reemplazamientos de string SOLAMENTE en el bloque del método 'Initialize' de la clase 'Form1.vb':

Me.Button         -> Me._Button
Me.CheckBox       -> Me._CheckBox
Me.CheckedListBox -> Me._CheckedListBox
Me.ComboBox       -> Me._ComboBox
Me.DateTimePicker -> Me._DateTimePicker
Me.GroupBox       -> Me._GroupBox
Me.Label          -> Me._Label
Me.ListBox        -> Me._ListBox
Me.PrintDocument  -> Me._PrintDocument
Me.TextBox        -> Me._TextBox
Me.Timer          -> Me._Timer


...o dicho de otro modo: tienes que añadirle un guión bajo al principio del nombre de cada control.




Para arreglar el último error del diseñador de forms: "The variable 'manager' has no property is either undeclared or was never existed"

Simplemente elimina estas lineas dentro del método 'Initialize':

Dim manager As New ResourceManager(GetType(Form1))
Me.Icon = DirectCast(manager.GetObject("$this.Icon"), Icon)

...Por que el icono de la aplicación supongo que te dará completamente igual arreglarlo o no...

Saludos.








zalazar16

#8


tengo ese solo problemilla, esos 12 errores

MOD: Imagen adaptada a lo permitido.

Eleкtro

Te lo dije aquí:
Citar
DateAndTime.DateAdd(4
por:
DateAndTime.DateAdd(DateInterval.Day

...ese "4" lo tienes que eliminar. El valor 4 = DateInterval.Day.

saludos