Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#8331
Prueba a registrar las dll.

-> regsvr32

#8332
Los argumentos los puedes encontrar almacenados aquí: My.Application.CommandLineArgs

Ejemplo:
Código (vbnet) [Seleccionar]

   ' Loop through all the command line arguments given.
   For I As Integer = 0 To My.Application.CommandLineArgs.Count - 1
       ' If an argument equals "/m"
       If My.Application.CommandLineArgs.Item(I).ToLower = "/m" Then
           MsgBox("You have used /m")
       Else ' If it doesn't equal "/m"
           MsgBox("Incorrect CMD Argument.")
       End If
   Next


Si estás usando un WinForm y quieres recibir argumentos puedes hacer dos cosas:
1. Setear el proyecto como "ConsoleApp", lo cual adjuntará una molesta ventana del a CMD cada vez que inicies tu app.
2. Adjuntar una instancia de la consola manualmente si tu proyecto es llamado desde la CMD.

Código (vbnet) [Seleccionar]
   Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean
   Declare Function FreeConsole Lib "kernel32.dll" () As Boolean

   AttachConsole(-1) ' Attach the console
   System.Console.Writeline("I am writing from a WinForm to the console!")
   FreeConsole() ' Desattach the console


Para saber si tu aplicación se ha llamado desde la consola puedes hacer esto:

Código (vbnet) [Seleccionar]
#Region " App Is Launched From CMD? "

   ' [ App Is Launched From CMD? Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples:
   ' MsgBox(App_Is_Launched_From_CMD)
   ' If App_Is_Launched_From_CMD() Then Console.WriteLine("Help for this application: ...")

   Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean
   Declare Function FreeConsole Lib "kernel32.dll" () As Boolean

   Private Function App_Is_Launched_From_CMD() As Boolean
       If AttachConsole(-1) Then
           FreeConsole()
           Return True
       Else
           Return False
       End If
   End Function

#End Region


Saludos...
#8333
Cita de: Doddy en 27 Julio 2013, 21:39 PM
creo que electro ya hizo "algo asi" , cuanto tenga en tiempo hago lo mismo en delphi.

Hola Doddy,
si, creo que te refieres a esto: [SOURCE] Color.NET Autor: EleKtro H@cker

Un saludo!
#8334
Cita de: Ikillnukes en 27 Julio 2013, 17:21 PMSi me dieseis algún ejemplo o Snippet de como hacerlo os lo agradecería.


¿Quieres un masaje también nukes?,
todos los dias con el mismo cuento de copiar y pegar, lee un poco para variar:



1er Método:

-> Bitmap Class: Bitmap Constructor(Screen.Bounds) + GetPixel function(Color.FromArgb)



2do Método:

-> Bitmap Class: Bitmap Constructor(Screen.Bounds) + BitmapData(Bitmap.LockBits + Bitmap.UnlockBits)

#8335
Comprobar si un archivo es un archivo de registro válido (version 5.0)

Código (vbnet) [Seleccionar]
#Region " Is Registry File "

   ' [ Is Registry File Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' MsgBox(IsRegFile("C:\RegistryFile.reg"))

   ' IsRegistryFile
   Private Function IsRegFile(ByVal RegistryFile As String) As Boolean

       Dim Regedit_Signature As String = "windows registry editor version 5.00"
       Return IO.File.ReadAllText(RegistryFile).ToLower.Trim.StartsWith(Regedit_Signature)

   End Function

#End Region







El núcleo de mi programa REG2BAT, mejorado para soportar caracteres inválidos por Batch (para escaparlos)

Código (vbnet) [Seleccionar]
   #Region " Reg2Bat "
   
      ' [ Reg2Bat Function ]
      '
      ' // By Elektro H@cker
      '
      ' Examples :
      ' MsgBox(Reg2Bat("C:\Registry.reg"))

    Public Enum REG2BAT_Format As Int16
        BINARY = 1
        DWORD = 2
        QWORD = 3
        EXPAND_SZ = 4
        MULTI_SZ = 5
        REG_SZ = 0
    End Enum

    ' Reg2Bat
    Private Function Reg2Bat(ByVal Reg_File As String) As String

        ' Source Input
        ' Join he lines, delete the Regedit linebreaks characters: "\  ", and then split the lines.
        Dim RegFile() As String = Split( _
                                  String.Join("@@@Reg2Bat@@@", IO.File.ReadAllLines(Reg_File)) _
                                  .Replace("\@@@Reg2Bat@@@  ", "") _
                                  .Replace("@@@Reg2Bat@@@", Environment.NewLine), _
                                  Environment.NewLine)

        Dim RegLine As String = String.Empty ' Where the Regedit Line will be stored.
        Dim RegKey As String = String.Empty ' Where the Regedit Key will be stored.
        Dim RegVal As String = String.Empty ' Where the Regedit Value will be stored.
        Dim RegData As String = String.Empty ' Where the Regedit Data will be stored.

        Dim Batch_Commands As String = String.Empty ' Where the decoded Regedit strings will be stored.

        Batch_Commands &= ":: Converted with REG2BAT by Elektro H@cker"
        Batch_Commands &= Environment.NewLine & Environment.NewLine
        Batch_Commands &= "@Echo OFF"
        Batch_Commands &= Environment.NewLine & Environment.NewLine

        ' Start reading the Regedit File
        For X As Int64 = 0 To RegFile.LongLength - 1

            RegLine = RegFile(X).Trim

            Select Case True

                Case RegLine.StartsWith(";") ' Comment line

                    Batch_Commands &= Environment.NewLine
                    Batch_Commands &= String.Format("REM {0}", RegLine.Substring(1, RegLine.Length - 1).Trim)
                    Batch_Commands &= Environment.NewLine

                Case RegLine.StartsWith("[-") ' Key to delete

                    RegKey = RegLine.Substring(2, RegLine.Length - 3).Trim
                    Batch_Commands &= String.Format("REG DELETE ""{0}"" /F", RegKey)
                    Batch_Commands &= Environment.NewLine

                Case RegLine.StartsWith("[") ' Key to add

                    RegKey = RegLine.Substring(1, RegLine.Length - 2).Trim
                    Batch_Commands &= String.Format("REG ADD ""{0}"" /F", RegKey)
                    Batch_Commands &= Environment.NewLine

                Case RegLine.StartsWith("@=") ' Default Value to add

                    RegData = Split(RegLine, "@=", , CompareMethod.Text).Last
                    Batch_Commands &= String.Format("REG ADD ""{0}"" /V  """" /D {1} /F", RegKey, RegData)
                    Batch_Commands &= Environment.NewLine

                Case RegLine.StartsWith("""") _
                AndAlso RegLine.Split("=").Last = "-"  ' Value to delete

                    RegVal = RegLine.Substring(1, RegLine.Length - 4)
                    Batch_Commands &= String.Format("REG DELETE ""{0}"" /V ""{1}"" /F", RegKey, RegVal)
                    Batch_Commands &= Environment.NewLine

                Case RegLine.StartsWith("""") ' Value to add

                    ' Check data type:
                    Select Case RegLine.Split("=")(1).Split(":")(0).ToLower

                        Case "hex" ' Binary

                            RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.BINARY))
                            RegData = Get_Regedit_Data(RegLine, REG2BAT_Format.BINARY)
                            Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_BINARY"" /D ""{2}"" /F", RegKey, RegVal, RegData)
                            Batch_Commands &= Environment.NewLine

                        Case "dword" ' DWORD (32 bit)

                            RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.DWORD))
                            RegData = Get_Regedit_Data(RegLine, REG2BAT_Format.DWORD)
                            Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_DWORD"" /D ""{2}"" /F", RegKey, RegVal, RegData)
                            Batch_Commands &= Environment.NewLine

                        Case "hex(b)" ' QWORD (64 bIT)

                            RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.QWORD))
                            RegData = Get_Regedit_Data(RegLine, REG2BAT_Format.QWORD)
                            Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_QWORD"" /D ""{2}"" /F", RegKey, RegVal, RegData)
                            Batch_Commands &= Environment.NewLine

                        Case "hex(2)"  ' EXPAND SZ

                            RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.EXPAND_SZ))
                            RegData = Format_Regedit_String(Get_Regedit_Data(RegLine, REG2BAT_Format.EXPAND_SZ))
                            Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_EXPAND_SZ"" /D ""{2}"" /F", RegKey, RegVal, RegData)
                            Batch_Commands &= Environment.NewLine

                        Case "hex(7)" ' MULTI SZ

                            RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.MULTI_SZ))
                            RegData = Format_Regedit_String(Get_Regedit_Data(RegLine, REG2BAT_Format.MULTI_SZ))
                            Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_MULTI_SZ"" /D ""{2}"" /F", RegKey, RegVal, RegData)
                            Batch_Commands &= Environment.NewLine

                        Case Else ' REG SZ

                            RegVal = Format_Regedit_String(Get_Regedit_Value(RegLine, REG2BAT_Format.REG_SZ))
                            RegData = Format_Regedit_String(Get_Regedit_Data(RegLine, REG2BAT_Format.REG_SZ))
                            Batch_Commands &= String.Format("REG ADD ""{0}"" /V ""{1}"" /T ""REG_SZ"" /D ""{2}"" /F", RegKey, RegVal, RegData)
                            Batch_Commands &= Environment.NewLine

                    End Select

            End Select

        Next

        Return Batch_Commands

    End Function

    ' Get Regedit Value
    Private Function Get_Regedit_Value(ByVal Line As String, ByVal REG2BAT_Format As REG2BAT_Format) As String

        Dim str As String = Nothing

        Select Case REG2BAT_Format

            Case REG2BAT_Format.BINARY : str = Split(Line, "=hex:", , CompareMethod.Text).First
            Case REG2BAT_Format.DWORD : str = Split(Line, "=dword:", , CompareMethod.Text).First
            Case REG2BAT_Format.QWORD : str = Split(Line, "=hex(b):", , CompareMethod.Text).First
            Case REG2BAT_Format.EXPAND_SZ : str = Split(Line, "=Hex(2):", , CompareMethod.Text).First
            Case REG2BAT_Format.MULTI_SZ : str = Split(Line, "=Hex(7):", , CompareMethod.Text).First
            Case REG2BAT_Format.REG_SZ : str = Split(Line, """=""", , CompareMethod.Text).First
            Case Else : Return Nothing

        End Select

        If str.StartsWith("""") Then str = str.Substring(1, str.Length - 1)
        If str.EndsWith("""") Then str = str.Substring(0, str.Length - 1)
        Return str

    End Function

    ' Get Regedit Data
    Private Function Get_Regedit_Data(ByVal Line As String, ByVal REG2BAT_Format As REG2BAT_Format) As String

        Dim Data As String = Nothing

        Select Case REG2BAT_Format

            Case REG2BAT_Format.BINARY
                Return Split(Line, (Split(Line, "=hex:", , CompareMethod.Text).First & "=hex:"), , CompareMethod.Text).Last.Replace(",", "")

            Case REG2BAT_Format.DWORD
                Return "0x" & Split(Line, (Split(Line, "=dword:", , CompareMethod.Text).First & "=dword:"), , CompareMethod.Text).Last.Replace(",", "")

            Case REG2BAT_Format.QWORD
                Line = StrReverse(Split(Line, (Split(Line, "=hex(b):", , CompareMethod.Text).First & "=hex(b):"), , CompareMethod.Text).Last.Replace(",", ""))
                For Each [byte] In Line.Split(",") : Data &= StrReverse([byte]) : Next
                Return Data

            Case REG2BAT_Format.EXPAND_SZ
                Line = Split(Line, (Split(Line, "=Hex(2):", , CompareMethod.Text).First & "=hex(2):"), , CompareMethod.Text).Last.Replace(",00", "").Replace("00,", "")
                For Each [byte] In Line.Split(",") : Data &= Chr(Val("&H" & [byte])) : Next
                Return Data.Replace("""", "\""")

            Case REG2BAT_Format.MULTI_SZ

                Line = Split(Line, (Split(Line, "=Hex(7):", , CompareMethod.Text)(0) & "=hex(7):"), , CompareMethod.Text).Last.Replace(",00,00,00", ",\0").Replace(",00", "").Replace("00,", "")

                For Each [byte] In Line.Split(",")

                    If [byte] = "\0" Then
                        Data &= "\0" ' Line separator for multiline.
                    Else
                        Data &= Chr(Val("&H" & [byte]))
                    End If

                Next

                Return Data.Replace("""", "\""")

            Case REG2BAT_Format.REG_SZ
                Data = Split(Line, (Split(Line, """=""", , CompareMethod.Text)(0) & """="""), , CompareMethod.Text).Last
                Data = Data.Substring(0, Data.Length - 1)
                Return Data

            Case Else
                Return Nothing

        End Select

    End Function

    ' Format Regedit String
    Private Function Format_Regedit_String(ByVal str As String) As String

        str = str.Replace("%", "%%")
        If Not str.Contains("""") Then Return str

        str = str.Replace("\""", """")

        Dim strArray() As String = str.Split("""")

        For num As Long = 1 To strArray.Length - 1 Step 2

            strArray(num) = strArray(num).Replace("^", "^^") ' This replace need to be THE FIRST.
            strArray(num) = strArray(num).Replace("<", "^<")
            strArray(num) = strArray(num).Replace(">", "^>")
            strArray(num) = strArray(num).Replace("|", "^|")
            strArray(num) = strArray(num).Replace("&", "^&")
            ' strArray(num) = strArray(num).Replace("\", "\\")

        Next

        Return String.Join("\""", strArray)

    End Function
   
   #End Region
#8336
De alguna forma todo lo que se compila se debe poder descompilar para ser procesado por el engine del framework, sinó la app no se podría leer/ejecutar.
PD: Iba a pasarte un enlace sobre esto, era muy interesante, pero hace ya tiempo que me documenté y no recuerdo el enlace.

Lo que comentas del .NET Reflector, es inevitable, .NET Reflector no es un super programa que craquea las aplicaciones, no, es solo es una GUI para el reflector, otro ejemplo será el "simple assembly Explorer", deberías leer sobre el término "Reflection" para entenderlo mejor.

Con esto te quiero decir que... como es inevitable yo no perdería mucho el tiempo a la hora de buscar la protección perfecta, porque no existe, el mejor cracker siempre va a poder averiguar tus credenciales si se propone el reto.

No soy un experto en el tema de la ingenieria inversa, pero aquí va mi consejo:

Si estás tán convencido de querer usar tus credenciales pues, lo que te recomiendo es que añadas una protección mínima dentro del proyecto para las credenciales, por ejemplo usar algún tipo de hash como MD5 para tu contraseña, y luego, después de esa protección mínima, usar algún software profesional para proteger tu proyecto como por ejemplo "Crypto Obfuscator" o "Smart Assembly", por más códigos que encuentres con intención de hacer copy&paste para proteger tu app ninguno va a ser tán eficaz como este tipo de aplicaciones profesionales, que además de ofuscar, encriptan y comprimen, todo a niveles extremos ...tanto que si no lo usas bien podrías corromper el executable (pero siempre puedes volver a intentarlo usando niveles más bajos de protección :P).

Saludos...
#8337
Hola.

He hecho dos aplicaciones distintas, las dos son single-instance, y a la hora de intentar ejecutarlas al mismo tiempo no he podido.

No quería creermelo pero lo que sucedia parecia ser muy obvio así que lo primero que se me ha ocurrido es ir a las propiedades de los proyectos para comprobar si las GUIDS eran iguales, y ...efectívamente!! las dos aplicaciones tenian la misma GUID, toma ya!



¿Como es esto posible?

Las dos aplicaciones han sido creadas desde cero, quiero decir que no he copiado archivos sueltos de un proyecto a otro, y además son diferentes en todo menos en los recursos de imágenes utilizados, algunas subrutinas, y el nombre de la Class principal.

No entiendo como ha pasado esto.

Me gustaría que alguien me explicase que motivos pueden causar que VS use la misma GUID para dos aplicaciones complétamente distintas.

Un saludo!
#8338
Cita de: Ikillnukes en 25 Julio 2013, 22:35 PMtengo pensado hacer que cada 200 contactos la app se renicie y libere la memoria acumulada y siga con el proceso. :P

. . .

Parece que lo que te digan no sirve para nada, déjate de chorradas de reiniciar procesos o comprimir kiwis en la RAM,
lee de nuevo el comentario de Kubox, porque como último recurso no necesitas más, lee acerca de la class "GC" (garbage collector) http://msdn.microsoft.com/en-us/library/system.gc%28v=vs.80%29.aspx

...Encima ayer te pasé un código por privado, por skype, incluso te di instrucciones, era un snippet, y era muy eficaz, ¿Lo has intentado usar?.

Saludos...
#8339
Código (dos) [Seleccionar]
wmic os get name | More 1+

PD: Para separar el nombre puedes aprender a hacerlo tu mismo con Variable Substring o  For /F, es fácil.

Saludos
#8340
Cita de: ConradBCN en 25 Julio 2013, 18:06 PM
Gracias EleKtro, però cual es de los 400 que listas???

En el primer post, tienes un link de descarga con todos los snippets, en la carpeta "Hardware" están esos dos que te dije

Citar400 Snippets: http://elektrostudios.tk/Snippets.zip
(Incluye todos los snippets publicados por mi en este hilo.)