Generar ".exe" Desde un Programa

Iniciado por agus0, 23 Agosto 2010, 02:33 AM

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

agus0

Buenas foro, Bueno, les paso a contar que me gustaría hacer un programa que genere otros programas dependiendo de ciertas variables, es decir, por ejemplo
Cuando Uno ejecuta el Programa, este revisa que S.O Tenemos y genera otro programa (.exe) acorde a nuestro S.O, ya teniendo en otro Form y Un Modulo ("Que nunca se ven en el Primer programa") compila el 2º programa editando le algunas cosas dependiendo del S.O.

No se si fui claro :S Cualquier cosa Díganme

Muchas Gracias

P.D: Vi algo en este post pero No Tuvo Respuesta y no lo quise revivir:
http://foro.elhacker.net/programacion_visual_basic/como_creo_un_exe_desde_el_propio_vb60-t301853.0.html

fary

Segun entendi, lo que quieres hacer no es posible. No puedes correr un .exe en linux, con lo cual no vas a poder comprovar... nose si me entendiste.

salu2!
Un byte a la izquierda.

agus0

Cita de: Drinky94 en 23 Agosto 2010, 03:58 AM
Segun entendi, lo que quieres hacer no es posible. No puedes correr un .exe en linux, con lo cual no vas a poder comprovar... nose si me entendiste.

salu2!

Bueno ya lo se lo del exe, pero me referia dentro de la gama de sistemas operativos Windows; 98, 2000, Xp, vista, Seven, Etc

raul338

drinky... Con wine se puede :)

Y... Agus... Lo que pides depende del numero de variables que cambien y su contenido. Anque lo comun es generar un exe generico, incluirlo dentro del generador como un recurso sabiendo los lugares que modificar (con un editor hexadecimal) y cambiar esos valores mientras se guarda el exe final

agus0

Cita de: raul338 en 23 Agosto 2010, 04:58 AM
drinky... Con wine se puede :)

Y... Agus... Lo que pides depende del numero de variables que cambien y su contenido. Anque lo comun es generar un exe generico, incluirlo dentro del generador como un recurso sabiendo los lugares que modificar (con un editor hexadecimal) y cambiar esos valores mientras se guarda el exe final

mmm Eso se ve mas difícil, aunque si es la única manera...

Como puedo editar el Recurso? es decir el .exe cuando es recurso o primero lo tengo que generar y después editar?

xkiz ™

no se si te sirva, pero bue aca te dejo un link sobre eso de esitar resursos

BeginUpdateResource Function
UpdateResource Function
EndUpdateResource Function

yo haria lo edicion una vez ya extraido el .exe

raul338

generas un exe generico (fijate que tan generico lo puedes hacer, por ahi necesites un exe para cada so o no se) luego con un editor hexadeimal buscas los strings(son mas faciles de encontrar) y guardas su posicion. Lueo, en el programa generador, escribes la copia del exe generico, y "on the fly" o una vez copiado reemplazas las variables...

Para hacerlo on the fly, suponiendo q la variable empieza en el byte 100 y mide 4 bytes, copias los 99 bytes iguales, escribes los 4 bytes de la variable cambiada y despues escribes el resto :)

Espero que te sirva

BlackZeroX

#7
Puede hacer distintos APP segun el SO con algo similar a esto (Al estilo C/C++)!¡

Código (vb) [Seleccionar]


#if Criterio then
#elseif Critero then
#else
#end If



entre otros

aqui te dejo un ejemplo para el SO:

Segun la constante

Código (Vb) [Seleccionar]


#Const OSVersion = "winV7"



Genera un Proceso distinto sin afectar a los que esten fuera de los #if then... #end if

Código (vb) [Seleccionar]


Option Explicit
Option Base 0

#Const OSVersion = "winV7"

#If OSVersion = "Win9X" Then
   Private Const versionSO         As String = "Windows 9X"
   Private Function HolaMundo() As String
       HolaMundo = "Win9X"
   End Function
#ElseIf OSVersion = "WinNT" Then
   Private Const versionSO         As String = "Windows 9X"
   Private Function HolaMundo() As String
       HolaMundo = "WinNT"
   End Function
#ElseIf OSVersion = "Win2K" Then
   Private Const versionSO         As String = "Windows 9X"
   Private Function HolaMundo() As String
       HolaMundo = "Win2K"
   End Function
#ElseIf OSVersion = "WinXP" Then
   Private Const versionSO         As String = "Windows XP"
   Private Function HolaMundo() As String
       HolaMundo = "WinXP"
   End Function
#ElseIf OSVersion = "winV7" Then
   Private Const versionSO         As String = "Windows Vista/Seven "
   Private Function HolaMundo() As String
       HolaMundo = "winV7"
   End Function
#Else
    Private Const versionSO         As String = "Error de Compilacion"
    Private Function HolaMundo() As String
        HolaMundo = versionSO
    End Function
#End If

Private Sub Form_Load()
   MsgBox versionSO
   MsgBox HolaMundo
End Sub



Dulce Infierno Lunar!¡.
The Dark Shadow is my passion.

fary

Cita de: raul338 en 23 Agosto 2010, 04:58 AM
drinky... Con wine se puede :)


Lose, Yo me referia para linux.

salu2!
Un byte a la izquierda.

79137913

HOLA!!!

Hola como andan, según lo que tengo visto, se puede compilar código OnTheFly desde vb6 sin un editor Hex, cuando estaba viendo el troyano de MFucker(IbArrA*) tenia la función de enviar un VBscript a la PC infectada, compilarlo, ejecutarlo, y te devolvía una variable.

Corrijanme si me equivoco.

Aca esta el codigo del compilador:

Código (vb) [Seleccionar]

Function Script(ByVal code As String) As String
FrmServer.Respuesta = ""
Dim o_Script As ScriptControl
Set o_Script = New ScriptControl
o_Script.Language = "VBScript"
o_Script.AddObject "FrmServer", FrmServer
On Error GoTo ErrSub:
o_Script.AddCode code
If FrmServer.Respuesta = "" Then
    Script = "Code executed without return of data..."
Else
    Script = FrmServer.Respuesta
End If
Exit Function
ErrSub:
Script = Err.Description
Err.Clear
End Function


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*