Digamos funcionar funciona, los dos ejecutables quedan unidos en un único archivo que solo tu sabrás para que sirve... Si el exe que queda en la parte inicial del archivo no tiene ninguna protección, se ejecutará sin problemas sin enterarse de la existencia de lo que hayas agregado al final del mismo...
Prueba esto:
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
fsDestino: TFileStream;
procedure AddToStream(AFileName: TFileName);
var
fsOrigen: TFileStream;
begin
fsOrigen := TFileStream.Create(AFileName, fmOpenRead);
Try
fsDestino.CopyFrom(fsOrigen, fsOrigen.Size);
finally
fsOrigen.Free;
end;
end;
begin
fsDestino := TFileStream.Create('C:\MIEXE.EXE', fmCreate);
Try
AddToStream('C:\WINDOWS\CALC.EXE');
AddToStream('C:\WINDOWS\NOTEPAD.EXE');
finally
fsDestino.Free;
end;
WinExec('C:\MIEXE.EXE', SW_SHOW);
end;
Veras como la calculadora funciona normalmente, sin enterarse de la existencia del block de notas en el mismo archivo.
El comportamiento normal de muchos virus, sobre todos los virus de DOS, era agregar su código a la cola del archivo, y modificar el inicio de ejecución del exe, haciendo que primero se ejecute el virus y luego inicie el programa con normalidad. La mayoría de los troyanos de Windows, aprovechan las ventajas de los archivos de recursos y el instalador no es mas que un programa hecho por el mismo programador que instala un dato que tiene en el recurso.
Saludos!