PDA

Ver la Versión Completa : Como ocultar el codigo fuente despues de compilar


obum1
24-10-2014, 05:10:06
Hola amigos disuclpen que los siga molestando pero vi algo y realmente ne asusto, pues tenia la aplicacion, quise abrirlo con Notepad ++ y el block de nota.
Mi sorpresa fue que si se ve el codigo no todo pero se y lo que mas me dio pena es que lo importante del codigo, se puede ver ya compilado en ejecutable se puede ver ¿sera que existe una manera para evitar eso?, disculpen para que se incripte o algo asi para evitar que se pueda ver no todo el codigo y lo peor lo mas importante gracias.

Casimiro Notevi
24-10-2014, 10:04:55
Es normal que veas código, pero realmente es "basura", trozos de código que pueden ser tanto de tu programa como de otro proyecto que tenías abierto antes, etc.
O sea, son trozos de memoria "sucia" que quedan almacenados. Toda la vida ha sido así, con todos los compiladores y no se acaba el mundo por ello :)
Yo no me preocuparía, ni nunca me ha preocupado, pero si quieres puedes usar "compresores" como upx o herramientas similares.
Seguramente existen otras alternativas.

duilioisola
24-10-2014, 11:26:09
¿Qué es "lo importante del código" que se puede ver?
¿Qué quieres ocultar de ese código visible?
Normalmente solo quedan strings y algún recurso. Lo demás es "código máquina" que no le dice nada a nadie que no entienda asembler ;)

Neftali [Germán.Estévez]
24-10-2014, 13:37:16
Mi sorpresa fue que si se ve el codigo no todo pero se y lo que mas me dio pena es que lo importante del codigo, se puede ver ya compilado en ejecutable se puede ver

¿Puedes explicar exactamente qué es lo que ves? Incluso poner alguna imagen.
No creo que estés viendo código de tu programa, pues entre otras cosas, el código que tu has programado en Delphi, ni siquiera está en el EXE.
Lo que hay en el EXE es una traducción de tu código, por lo tanto de ahí mi afirmación. No puedes ver algo que no está.

Otra cosa es que veas referencias a strings, constantes o elementos definidos en los formularios (recursos), pero "código pascal" no puede ser (sólo se me ocurre que pueda estar si utilizas algún tipo de scripting).

Ñuño Martínez
24-10-2014, 14:18:58
De todas formas, si echas un vistazo a las opciones de configuración del compilador, desactivas todo lo que tenga que ver con la depuración y activas algunas optimizaciones, las posibilidades de que se vea el código fuente se reducen (y también el tamaño del ejecutable).

nlsgarcia
24-10-2014, 14:54:14
obum1,


...Como ocultar el código fuente después de compilar...

:rolleyes:

Revisa esta información:

¿por que los apps se descompilan facilmente? (http://www.clubdelphi.com/foros/showthread.php?t=84611&highlight=nelson+ofuscaci%F3n)
Espero sea útil :)

Nelson.

roman
24-10-2014, 16:03:30
Es normal que veas código, pero realmente es "basura", trozos de código que pueden ser tanto de tu programa como de otro proyecto que tenías abierto antes, etc.
O sea, son trozos de memoria "sucia" que quedan almacenados. Toda la vida ha sido así, con todos los compiladores y no se acaba el mundo por ello :)

¿Los compiladores hacen eso? :confused:

Yo más bien creo en lo que apunta Ñuño. Un ejecutable de Delphi guarda mucha información relativa a los objetos que se usan en la aplicación y quizá constantes y recursos como apunta Neftali.

// Saludos

Casimiro Notevi
24-10-2014, 17:01:56
¿Los compiladores hacen eso? :confused: Algunas veces que me ha dado por mirar, he encontrado en un ejecutable trozos de código fuente, scripts sql, etc. usados en un proyecto. Normalmente ha sido al final del fichero ejecutable.

mamcx
24-10-2014, 18:12:06
Ademas, igualmente un hacker/cracker le puede importar poco eso. Quien sabe assembler no necesita el codigo fuente.

No me parece que exista una razón de peso para encriptar codigo ni ofuscarlo.

Pa' rematar, la mayoría de los que intentan esconder tan brutalmente su código dificilmente hacen algo taaaaaan innovador que pudiera justificarlo, y los que saben de seguridad no ofuscan su codigo: Protegen los datos (ej: NO quemar claves en el exe!), usan las librerias de seguridad que provee el OS y/o librerias de terceros (pa' proteger datos) como http://nacl.cr.yp.to/, y la unica cosas que veo que hagan rara es hacer el codigo hostil para un cracker (reubicando direcciones de memoria y esas cosas).

Total, para el programador promedio? Es una total perdida de tiempo. Lo mismo digo de usar seriales, dongles y similares, aun si el programa es comercial y vale $$$$$$$$. En mi experiencia, lo mejor es:

0- Hacer un producto bueno. O por lo menos no malo
1- Tratar bien al cliente
2- No joderle la vida al cliente
2a - No hacer un proceso de instalacion, reinstalacion, que aumentara N veces los costos de soporte (seriales obtusos, "activaciones", dongles, etc)
2b- Tener un plan de que cobrar y como que sea lo mas simple y directo posible. Preferiblemente: Pagar no deberia demorar mas de 1min con tarjeta de credito en mano.
3- Registar los clientes

Yo diria que hasta aqui es lo mas practico para la mayoria de los programadores en general.


4- Autenticar a la hora de soporte (ej: si es telefonico, o requiere que personal se meta de fondo) y/o actualizar el software. Es mejor pedir clave/usuario cada vez que hay un update a que haya un serial.
5- Proteger datos mas que codigo (ej: Si es un ERP, con algo tan simple como encriptar un valor en la BD o la BD entera es mucho mas eficaz)
6- No inventarse ideas raras. Un experto en seguridad? NUNCA se inventa cosas raras.

Y lo mas importante:

7- Tratar bien al cliente

obum1
24-10-2014, 18:26:05
Amigos ya probe, pero como dice casimiro, es un codigo esta bien que muestre pero lo que me muestra son letras legibles de lo que tengo guardado tanto en en edit.text y mensajes eso lo muestra legiblemente, pues pense que solo era yo busque otros programas en delphi, he ize lo mismo lo abre con un block de notas el exe , y al ver su codigo esta mas codificado no se vei nada pero porque el que hago yo si pues segui buscando talves sea el encoding utf-8 eso me tira seria bueno que muestre un pedaso del codigo pero lo mas importante de mi programa lo muestra por eso necesito, que no sea incriptacion super mega, pero que almenos incripte lo que para mi es importante gracias

roman
24-10-2014, 18:35:26
lo que me muestra son letras legibles de lo que tengo guardado tanto en en edit.text y mensajes eso lo muestra legiblemente,

Si tú guardas texto en controles de edición y mensajes, ¿dónde más iba a almacenarse sino en el ejecutable?

Lo que estás viendo no es código sino el texto que tú mismo estás dejando en el ejecutable.

Lo que tendrías que hacer es colocar todos esos textos en otro archivo, como en un INI por ejemplo o en una base de datos, y hacer que tu programa los lea al inicio.

// Saludos

mamcx
24-10-2014, 18:43:59
Y que tiene de problema que se vea ese texto?

obum1
24-10-2014, 18:57:42
lo que sucede es que no quiero que se vea los textos o strings que ingreso ya que alli esta parte del funcionamiento principal del programa, por ello necesito que despues de compilar incripte la mayoria y lo mas importante eso por ello necesito de su ayuda.

mamcx
24-10-2014, 19:20:37
Y como pude ser que el texto contenga el funcionamiento ppal de un programa? Son SQLs?

nlsgarcia
24-10-2014, 19:34:06
obum1,


...no quiero que se vea los textos o strings que ingreso ya que allí esta parte del funcionamiento principal del programa...

:confused:


...si echas un vistazo a las opciones de configuración del compilador, desactivas todo lo que tenga que ver con la depuración y activas algunas optimizaciones, las posibilidades de que se vea el código fuente se reducen...


...Lo que tendrías que hacer es colocar todos esos textos en otro archivo, como en un INI por ejemplo o en una base de datos, y hacer que tu programa los lea al inicio...

:rolleyes:

Pregunto :

1- ¿Has considerado las opciones planteadas por Ñuño Martínez y roman?.

2- ¿Revisastes la información sugerida en el Msg #6?, te sugiero revisarla :cool:

3- ¿Has considerado que poner información sensible dentro del ejecutable sin ningún tipo de seguridad no es una buena practica?.

4- ¿Has considerado usar algún método de cifrado en tu aplicación?.

Revisa esta información:

Algoritmo de Encriptacion (http://www.clubdelphi.com/foros/showpost.php?p=482573&postcount=22)
Espero sea útil :)

Nelson.

obum1
24-10-2014, 19:39:27
no es sql, pero necesito incirptar para que no se puede abrir en un block de notas o que no se vea el text ya que al ingresar el text en un edit text lo guarda el programa pero al abrir el exe, se puede ver ese texto y eso es lo que quiero incriptaro o que no se vea

Casimiro Notevi
24-10-2014, 19:48:03
Creo que estás confundido, o no has entendido lo que se te ha explicado.

obum1
24-10-2014, 20:04:04
la verdad es cierto no entendi, nada pues solo el tuyo y el compresor pero lo unico que hacia era bajarle el peso nada mas pero en si se sigue viendo el codigo

Neftali [Germán.Estévez]
24-10-2014, 20:53:35
Para aclararnos a qué te refieres....
Puedes abrir con el bloc de notas tu programa, hacer una captura de pantalla y marcarnos lo que no quieres que se vea.

Sólo como ejemplo, porque me parece que todavía no hemos entendido a qué te refieres.
No es código, son strings, pero no sabemos qué strings...

obum1
24-10-2014, 21:18:47
muchas gracias ya pude gracias siempre al amigo casi miro que es el que siempre me ayuda y pienso que se enoja gracias tambien a ustedes, logre busque otros compresores con me ayuda que si se cambiara el codigo gracias amigos.

roman
24-10-2014, 21:37:16
gracias siempre al amigo casi miro que es el que siempre me ayuda y pienso que se enoja

Sí, es el gruñón del Club, pero le queremos porque es muy buena pieza :p :D :)

// Saludos

maeyanes
24-10-2014, 21:41:45
Hola...

A vamos, que los demás no te ayudaron... las cosas que hay que leer...


Saludos...

Casimiro Notevi
24-10-2014, 21:45:02
Es que sois unos celosos https://copy.com/F2DFJDMmj6Cpui0l

roman
24-10-2014, 21:59:12
- El piso de mi casa tiene unas grietas, ¿qué hago?

- Pon un tapete encima y ya estuvo

:D

// Saludos

obum1
25-10-2014, 23:58:02
disuclpen amigos, pues ahora vi otro problema el cual me rebienta la cabeza delphi 7 tiene, una cosa que dice run-attach algo asi y quise probarlo y cogi el programa que recien hize, para mi sorpresa fue que otra ves se ve lo que no quiero que se vea que son los strings intente buscar en google, pero no alle nada...
pues use un codigo para incriptar por base64 pero nada aun asi se logra ver los strings que le tengo al programa, ¿sera que hay?.
algo para que si una personas intente hacer eso no aparezca el string gracias amigos y disculpen que los moleste mucho soy novato en delphi 7.

duilioisola
26-10-2014, 09:58:46
Por favor dá ejemplos concretos. Si no sabemos que es lo que quieres ocultar y como tienes el código, no podremos darte soluciones concretas.

No se si el castellano es tu lengua nativa, por lo que espero que no te ofendas si te comento que:
- hallar se escribe con H,
- hice se escribe con C,
- reventar se escibe con V,
- vez se escribe con Z.
Además de esto están los acentos y las mayúscilas que no le hacen daño a nadie y sirven para visualizar comienzos de fraces en las oraciones y el sentido en las palabras.
Hacer fraces cortas y separadas por puntos agiliza y facilita la rápida comprensión del texto.
Ten en cuenta que tus mensajes son muy difíciles de leer/entender.
Si tu pones esfuerzo en preguntar nosotros pondremos esfuerzon en responder.

Te doy un ejemplo de como deberías redactar tu mensaje:

Tengo un programa que contiene procedimientos como este:

procedure ClaveCorrecta(Clave : string): boolean;
begin
if Clave = 'MiClave1234' then
Result := True
else
Result := False;
end;


Una vez compilado el programa, veo el string "MiClave1234" dentro del ejecutable.
¿Como hago para ocultar este string del ejecutable?

Julián
26-10-2014, 10:25:47
¡Pero que paciencia tenéis algunos!

escafandra
26-10-2014, 14:20:33
Desde mi punto de vista, no importa en absoluto que se vean cadenas salvo si una de ellas es un password. En ese caso la encripto para introducirla así en el código fuente y listo, no se ve.

El resto del código no se ve, salvo los nombres de ciertas funciones y la IAT ( Import Address Table), la tabla donde se almacenan las API importadas.


Saludos.

nlsgarcia
28-10-2014, 16:02:28
obum1,


...No se si el castellano es tu lengua nativa...

^\||/

Your email address indicates that you reside in France, maybe it is easier that you explain your problem in English and Spanish
simultaneously.

if you can give a specific example of your problem, would be ideal :rolleyes:

I ask : Could you read the Messages #6 and #15? :confused:

regards,

Nelson.