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
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!
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
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
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?
no se si te sirva, pero bue aca te dejo un link sobre eso de esitar resursos
BeginUpdateResource Function (http://msdn.microsoft.com/en-us/library/ms648030%28v=VS.85%29.aspx)
UpdateResource Function (http://msdn.microsoft.com/en-us/library/ms648049%28VS.85%29.aspx)
EndUpdateResource Function (http://msdn.microsoft.com/en-us/library/ms648032%28v=VS.85%29.aspx)
yo haria lo edicion una vez ya extraido el .exe
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
Puede hacer distintos APP segun el SO con algo similar a esto (Al estilo C/C++)!¡
#if Criterio then
#elseif Critero then
#else
#end If
entre otros
aqui te dejo un ejemplo para el SO:
Segun la constante
#Const OSVersion = "winV7"
Genera un Proceso distinto sin afectar a los que esten fuera de los #if then... #end if
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!¡.
Cita de: raul338 en 23 Agosto 2010, 04:58 AM
drinky... Con wine se puede :)
Lose, Yo me referia para linux.
salu2!
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:
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!!!
.
Se me olvido decir que
#if Criterio then
#elseif Critero then
#else
#end If
No se compila, solo compila lo que se cumple...
es decir que si tomamos como ejemplo el codigo anterior solo compilaria
Option Explicit
Option Base 0
Private Const versionSO As String = "Windows Vista/Seven "
Private Function HolaMundo() As String
HolaMundo = "winV7"
End Function
Private Sub Form_Load()
MsgBox versionSO
MsgBox HolaMundo
End Sub
Por lo tanto es mucho mejor que estar editando variables via Hex y demas!¡.
tambien es factible si se ponen dentro de procesos
Private Sub Form_Load()
#Const OSVersion = "BlackZeroX"
#if OSVersion <> "" then
MsgBox "Hola Mundo"
#else
MsgBox "*****..."
#end if
End Sub
En este caso se cimpilaria solo:
Private Sub Form_Load()
MsgBox "Hola Mundo"
End Sub
Dulces Lunas!¡.
@79137913.
Lo unico malo con eso es que es tardado y no es rapido, de hecho es leento, y el codigo hay empleado no aceptaria las funciones de un Modulo BAS comun, ademas de que si hay errores manda un Feo Msgbox()!¡, sin contar que ese codigo estaria a manipulacion general por quien fuese!¡.
Nota: ademas de que tendria que redimensionar y modificar manualmenmte y eso laboralmente (Perder tiempo) no es rentable (Menos cuando es tuya xS)!¡.
Dulces Lunas!¡.
Cita de: Drinky94 en 23 Agosto 2010, 14:01 PM
Cita de: raul338 en 23 Agosto 2010, 04:58 AM
drinky... Con wine se puede :)
Lose, Yo me referia para linux.
salu2!
¿?
Wine es para Linux ;)
Con Wine puedes ejecutar un ejecutable de Windows es Linux..
Cita de: agus0 en 23 Agosto 2010, 02:33 AM
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
Viendo como si fuese un instalador echo en VB6..
Yo incluiría 2 ejecutables (para WinXP, Win7) en los archivos de recursos de mi instalador, verificaría el SO y genero los ejecutables donde pertenezcan ;)
Cita de: BlackZeroX en 23 Agosto 2010, 15:15 PM
@79137913.
Lo unico malo con eso es que es tardado y no es rapido, de hecho es leento, y el codigo hay empleado no aceptaria las funciones de un Modulo BAS comun, ademas de que si hay errores manda un Feo Msgbox()!¡, sin contar que ese codigo estaria a manipulacion general por quien fuese!¡.
Nota: ademas de que tendria que redimensionar y modificar manualmenmte y eso laboralmente (Perder tiempo) no es rentable (Menos cuando es tuya xS)!¡.
Dulces Lunas!¡.
No puedes usar un Módulo bas a menos que crees un "Control De Usuario" que tenga alguna función (programada) que sirva de intermediario para llamar a las funciones de un módulo bas, ya que puedes añadir el Control como un Objeto que puede ser manipulado desde VBS..
Los errores se controlan ;), incluso puedes desactivar la ventana que sale cuando el código tarda demasiado en responder, aunque es verdad que podría manipularlo quien séa :P
SaluDOS!!!
Citar
No puedes usar un Módulo bas a menos que crees un "Control De Usuario" que tenga alguna función (programada) que sirva de intermediario para llamar a las funciones de un módulo bas, ya que puedes añadir el Control como un Objeto que puede ser manipulado desde VBS..
Modulo (
.Bas ) no es admitido, pero
FRM, Cls, Ctl, Object en gral si a eso era lo que me referia.
Dulces Lunas!¡.
Pero el lugar de escribir el code en un Bas lo escribes en un Ctl, o mejor, colocar una función publica en el Ctl que permita llamar funciones y Sub dentro del proyecto. :D
Ok, no desvío más creo que no tuvo nada que ver con el tema principal :P
SaluDOS!!!
Yo hice un programa que le ingreso los datos de algun foro y crea un ejecutable que lo que hace es automatizar el posteo en ese foro.
Basicamente lo que hice es creé ese programa, abri con notepad el archivo del proyecto y del form y usas ese codigo desde visual... le cambias las cosas que quieras o incluso le puedes agregar mas codigo y luego lo compilas(debes tener el compilador de vb) y ejecuta shell "c:\<direccion vb6.exe> /o ..." osea no me acuerdo como era el codigo del shell pero esta en este foro o sino googlea y te aparece... busca compilar desde linea de comando con vb6.exe. si encuentro el proyecto que hice te digo como era...
saludos, espero que sea eso lo que querias hacer.
Cita de: goldarg en 30 Agosto 2010, 14:54 PM
Yo hice un programa que le ingreso los datos de algun foro y crea un ejecutable que lo que hace es automatizar el posteo en ese foro.
Basicamente lo que hice es creé ese programa, abri con notepad el archivo del proyecto y del form y usas ese codigo desde visual... le cambias las cosas que quieras o incluso le puedes agregar mas codigo y luego lo compilas(debes tener el compilador de vb) y ejecuta shell "c:\<direccion vb6.exe> /o ..." osea no me acuerdo como era el codigo del shell pero esta en este foro o sino googlea y te aparece... busca compilar desde linea de comando con vb6.exe. si encuentro el proyecto que hice te digo como era...
saludos, espero que sea eso lo que querias hacer.
y si lo quiero hacer en una computadora que no tenga el vb instalado no puedo tener el .exe del compilador en un recurso?
HOLA!!!
Si lo que querés es llevar el vb6.exe con vos, lo tendrías que blindear (unir) al archivo de tu programa, y configurar para que se descomprima en una carpeta especifica que luego llamas.
Pero el gran problema es que el VB6 y todas sus dependencias pesaría mucho.
Y, igual, hay programas para unir las dependencias al exe pero te realentiza todo mas de 100 veces. No es recomendable.
Sigo siendo partidario de usar VBScript.
Como quieras ;D
GRACIAS POR LEER!!!
Este tema ya lo hable yo hace mucho tiempo, aca te dejo un source que quizas te ayude un poco...
http://www.filefront.com/17305050/Editor_server_E0N_Productions.zip (http://www.filefront.com/17305050/Editor_server_E0N_Productions.zip)
Espero que te sirva que va bien!
Salu2
Ranslsad