
Ejecutar un ejecutable solamente desde otro ejecutable
#1
Escrito 05 octubre 2010 - 01:09
Saludos.
#2
Escrito 05 octubre 2010 - 01:14
Saludos!
#3
Escrito 05 octubre 2010 - 01:17
Y porque no probar si la otra aplicación esta creada, de lo contrario terminar esta.
Saludos!
NO es lo que quiero, lo que pasa es que ese modulo puede ser ejecutado fuera de su lugar e incluso sacar beneifico sobre ella, quiero evitar que sea ejecutado directamente sino desde mi programa principal.
Saludos.
#4
Escrito 05 octubre 2010 - 01:19
Y porque no probar si la otra aplicación esta creada, de lo contrario terminar esta.
Saludos!
NO es lo que quiero, lo que pasa es que ese modulo puede ser ejecutado fuera de su lugar e incluso sacar beneifico sobre ella, quiero evitar que sea ejecutado directamente sino desde mi programa principal.
Saludos.
Pero, porque no la haces parte del ejecutable principal....
Salud OS
#5
Escrito 05 octubre 2010 - 01:21
Pero, porque no la haces parte del ejecutable principal....
Salud OS
Porque es un módulo, se comercializa por separado

Saludos.
#6
Escrito 05 octubre 2010 - 01:23
Algo así:
Menu.exe
1. modulo1.exe par1 par2
2. modulo2.exe par1 par2
Salud OS
#7
Escrito 05 octubre 2010 - 01:25
Pero, porque no la haces parte del ejecutable principal....
Salud OS
Porque es un módulo, se comercializa por separado.
Saludos.
Ah caray, pues lo que yo haría es generar una licencia donde diga que modulos puedes ejecutar, no veo de otra.
Salud OS
#8
Escrito 05 octubre 2010 - 01:28
program TuPrograma; uses Controls, Forms, ....................... {$R *.res} var h: HWND; // No estoy seguro si aqui se declara la variable de esta forma begin Application.Initialize; h := FindWindow(nil, 'Título Ventana Principal'); if h <> 0 then begin Application.CreateForm(TTuFormulario, TuFormulario); Application.Run; end else begin Application.Terminate; end; end.
Algo asi...
Saludos!
#9
Escrito 05 octubre 2010 - 01:38
Podrías mirar de ejecutar esa aplicación pasándole un parámetro. Desde modulo1.exe compruebas ese parámetro y, si no es correcto, lo cierras.
También podrías usar un truco que hay en Trucomanía. Desde el principal escribes y desde el modulo lees. Si no hay nada escrito... cierras.
No se, son ideas

Nos leemos
#10
Escrito 05 octubre 2010 - 03:48
Salud OS
#11
Escrito 05 octubre 2010 - 04:15
Aqui hay un ejemplo para saber si tu ejecutable esta llamado desde el IDE de delphi, pero las funciones que ponene te pueden servir. Sobre todo "GetParentProcessIDForNT"
http://groups.google...767c0461c1e80c3
Aunque creo que al final lo mejor va a ser el sistema de licencias

#12
Escrito 05 octubre 2010 - 06:09
Saludos!
#13
Escrito 05 octubre 2010 - 06:32
Estoy de acuerdo con cadetill y felipe.....
Ejecutandolo desde tu priemer exe y pasandole parámetros, donde el segundo exe los valide y si no son los que tu definiste termines la ejecución del programa.
Los o el parámetro que manejes solo tu lo sabes y está dentro de tus aplicaciones.
#14
Escrito 06 octubre 2010 - 02:49
program CmdSpy; {$APPTYPE CONSOLE} uses Windows, SysUtils; var i: Integer; begin for i:= 0 to ParamCount do Writeln(ParamStr(i)); Readln; end.
Y la coloca en vez de tu aplicación. Solo tiene que llamar el proceso desde la aplicación principal y ya conoce los parámetros "secretos".
PD: Yo nunca lo he hecho


#15
Escrito 06 octubre 2010 - 03:35
Lo de los parámetros esta muy bien hasta que alguien te hace una aplicación como esta:
delphi
program CmdSpy; {$APPTYPE CONSOLE} uses Windows, SysUtils; var i: Integer; begin for i:= 0 to ParamCount do Writeln(ParamStr(i)); Readln; end.
Y la coloca en vez de tu aplicación. Solo tiene que llamar el proceso desde la aplicación principal y ya conoce los parámetros "secretos".
PD: Yo nunca lo he hecho... tenia este código aquí por casualidad
¿ Cuanta gente sabría hacer esto ?, ¿ y cuanta la haría ?.
En todo caso, a esta gente se lo puedes poner mucho más difícil aún : simplemente pasando dos parámetros. El primero será la fecha-hora actual y el segundo esa misma fecha-hora encriptada (usando un algoritmo cualquiera de clave privada). El módulo comprueba que la fecha-hora sea correcta (no sea que esten utilizando una fecha-hora anterior, para la que han capturado su encriptación) y comprueba que el segundo parámetro corresponda a su valor encriptado según nuestra clave privada. Solo una vez comprobado esto, ejecutará el módulo externo.
Saludos.
#16
Escrito 06 octubre 2010 - 04:57
Lo de los parámetros esta muy bien hasta que alguien te hace una aplicación como esta:
jejejeje, claro, nada es infalible, por eso se crakea el Delphi, el Windows, el AutoCAD,.....


También, para más seguridad, puedes hacer una combinación de las propuestas dadas. Controlar parámetros, encriptados, y el truco de Trucomanía y mirar si la otra app está en ejecución

No obstante, nada te asegura que alguien, con tiempo, ganas y conocimientos, se te salte la protección. Ya hemos dicho muchas veces que el nivel de protección tiene que ser proporcional a lo crítico que pueda ser la aplicación

Nos leemos
#17
Escrito 06 octubre 2010 - 07:38
Fecha, peso, crc, cualquier atributo de tu archivo ejecutable.
Si hay diferencia, pues no envías la ejecución.
Y más drastico, existe la ingenieria inversa.
#18
Escrito 06 octubre 2010 - 01:45
Lo de los parámetros esta muy bien hasta que alguien te hace una aplicación como esta:
delphi
program CmdSpy; {$APPTYPE CONSOLE} uses Windows, SysUtils; var i: Integer; begin for i:= 0 to ParamCount do Writeln(ParamStr(i)); Readln; end.
Y la coloca en vez de tu aplicación. Solo tiene que llamar el proceso desde la aplicación principal y ya conoce los parámetros "secretos".
PD: Yo nunca lo he hecho... tenia este código aquí por casualidad
¿ Cuanta gente sabría hacer esto ?, ¿ y cuanta la haría ?.
En todo caso, a esta gente se lo puedes poner mucho más difícil aún : simplemente pasando dos parámetros. El primero será la fecha-hora actual y el segundo esa misma fecha-hora encriptada (usando un algoritmo cualquiera de clave privada). El módulo comprueba que la fecha-hora sea correcta (no sea que esten utilizando una fecha-hora anterior, para la que han capturado su encriptación) y comprueba que el segundo parámetro corresponda a su valor encriptado según nuestra clave privada. Solo una vez comprobado esto, ejecutará el módulo externo.
Saludos.
Esta me parece la mejor solución, parámetros fecha-hora encriptados.
#19
Escrito 06 octubre 2010 - 02:15
Salud OS
#20
Escrito 06 octubre 2010 - 03:36
Podra ser una chapuza de principiante pero para simples mortales pienso que es suficiente.
En este ejemplo si no es llamado del primer programa el segundo no arranca.
No uso variables ni claves ni nada de eso.
El unico que podria abrirlo y ver como se hace es Seoane, sin ofender a nadie..


Pienso que aun sabiendo como se hace no podria correrse una vez que el primero se cierra.
A ver que opinais de lo hecho por un novato.
Saludos
PD: El codigo lo pongo luego, por ahora intentad abirlo.


No: Aqui lo dejo para que lo despedacéis..




