Página 1 de 1

Proteger código fuente Autoit

Publicado: 16 Nov 2010, 21:04
por dertin
NOTA DE LOS MODERADORES:

La licencia de uso de AutoIT estipula:
Reverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.

Lo que significa:
Ingeniería inversa. No está permitido realizar ingeniería inversa o desemsamblar el PRODUCTO SOFTWARE o scripts compilados que fueron creados con el PRODUCTO SOFTWARE .

El "Producto software" en este caso evidentemente son las herramientas del lenguaje AutoIT.

Por este motivo no está permitido en este foro público dar soporte o acceso a herramientas que permitan decompilar los programas generados con AutoIt, pues por razones obvias no podemos dar soporte a actividades ilegales.

No obstante el tema de cómo proteger nuestros propios códigos Autoit sí es lícito, así que se deja abierto este hilo para el debate. Es correcto que comentemos posibles métodos para evitar los decompiladores que puedan existir ¡pero no nombrar, dar enlaces, ni distribuir de ninguna manera dichos decompiladores!

En consecuencia se ha suprimido el el mensaje original, así como las referencias explícitas a herramientas concretas de decompilación o sugerencias de cómo realizar decompilaciones.


Re: Proteger código fuente Autoit

Publicado: 16 Nov 2010, 21:30
por Alastor
La decompilacion de scripts de AutoIt no está permitida:
Terminos de uso escribió: Reverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.

That clause covers both reverse engineering how AutoIt works (in order to create a working decompiler or a counter-measure to decompiling) as well as decompilation of compiled scripts.
Es una pena que no exista ninguna forma de evitar la decompilación...

Re: Proteger código fuente Autoit

Publicado: 16 Nov 2010, 21:51
por Chefito
Alastor escribió:Es una pena que no exista ninguna forma de evitar la decompilación...
La verdad es que si es una pena. Por desgracia hay un descompilador para cualquier lenguaje de programación :smt012 .
Yo no estoy muy deacuerdo con esta práctica, pero no se puede hacer nada.
Lo único que podemos hacer es complicar la vida al que descompile utilizando ofuscadores y cosas así. Si lo volvemos loco de alguna forma, puede que desista :smt005 .

Saludos.

Re: Proteger código fuente Autoit

Publicado: 16 Nov 2010, 21:59
por Alastor
Chefito escribió:
Alastor escribió:Es una pena que no exista ninguna forma de evitar la decompilación...
La verdad es que si es una pena. Por desgracia hay un descompilador para cualquier lenguaje de programación :smt012 .
Yo no estoy muy deacuerdo con esta práctica, pero no se puede hacer nada.
Lo único que podemos hacer es complicar la vida al que descompile utilizando ofuscadores y cosas así. Si lo volvemos loco de alguna forma, puede que desista :smt005 .

Saludos.
Lo que me fastidia es no encontrar ninguna forma de proteger un script de autoit (como mucho ofuscarlo, pero no siempre es posible y sigue siendo facil de deofuscar). Con Delphi/C/C++/etc. aun es posible proteger tus codigos (al menos contra gente no-experta), pero con AutoIt aun no he encontrado ninguna forma...
edit: Aunque se me acaba de ocurrir algo :) ahora toca hacer pruebas.

Re: Proteger código fuente Autoit

Publicado: 16 Nov 2010, 23:19
por dertin
Alastor escribió: Lo que me fastidia es no encontrar ninguna forma de proteger un script de autoit (como mucho ofuscarlo, pero no siempre es posible y sigue siendo facil de deofuscar). Con Delphi/C/C++/etc. aun es posible proteger tus codigos (al menos contra gente no-experta), pero con AutoIt aun no he encontrado ninguna forma...
edit: Aunque se me acaba de ocurrir algo :) ahora toca hacer pruebas.
Te cuento lo que puedes hacer y es bien utilizar Armadillo o Thermida, para proteger tus scripts compilados .EXE
(el .EXE encriptado, protegido va a tender a ocupar siempre más espacio en el disco)

El poder descompilar se intenta evitar por los desarrolladores de AutoIT, teniendo el código del compilador de AutoIT que es libre, reservado para miembros del equipo de desarrollo, ya que obteniendo el código, podemos programarlo al inverso y así descompilar.

Re: Proteger código fuente Autoit

Publicado: 16 Nov 2010, 23:35
por Alastor
dertin escribió: Te cuento lo que puedes hacer y es bien utilizar Armadillo o Thermida, para proteger tus scripts compilados .EXE
(el .EXE encriptado, protegido va a tender a ocupar siempre más espacio en el disco)

El poder descompilar se intenta evitar por los desarrolladores de AutoIT, teniendo el código del compilador de AutoIT que es libre, reservado para miembros del equipo de desarrollo, ya que obteniendo el código, podemos programarlo al inverso y así descompilar.
No, empaquetar el .exe (con Themida, Armadillo o cualquier packer) no sirve para nada, es cuestion de hacer un dump y decompilar igualmente.

Re: Proteger código fuente Autoit

Publicado: 17 Nov 2010, 01:36
por Chefito
Lo de proteger los ejecutables pienso que es algo dificil. Para un usuario normal no hay problema, pero para alguien que se empeñe y sepa de que va la cosa......pues a las malas puede acabar descompilando casi todo. Hay gente que se dedica casi en exclusiva a estudiar la ingeniería inversa de los programas :smt013 .
Este tema a mi me trajo de cabeza una vez, porque quería encontrar un lenguaje que no se puediese descompilar, pero parece algo casi imposible :smt012 .
No se mucho de este tema, pero si alguien encuentra alguna protección ideal para este lenguaje que haga el favor de compartirlo, sea un programa de encriptación bueno, alguna función, etc etc..

Saludos.

Re: Proteger código fuente Autoit

Publicado: 17 Nov 2010, 06:01
por XPyro
E probado encriptado con npack
Imagen
http://petools.org.ru/npack.shtml

Pero de repente se reconocen como virus y no quisiera que desconfiaran de mi :smt037

Se los dejo portable:
http://www.4shared.com/file/q31dhWS8/Po ... 02008.html

Re: Proteger código fuente Autoit

Publicado: 17 Nov 2010, 09:37
por Ximorro
Un lenguaje realmente compilado (como C++) es mucho más difícil de decompilar que AutoIt, a veces se hace la tarea más fácil si se deja que el compilador añada algo de info de debugging pero si se quita toda esa información sólo se puede desemsamblar (pasar el código máquina a instrucciones de un ensamblador).

Vaya, que en mi opinión, como ya habéis dicho, pensad que alguien con conocimientos suficientes será capaz de decompilar vuestro código. Y tampoco es cierto que un usuario poco experto pueda decompilar si no tiene las herramientas necesarias, no creo que sea tan fácil.

Nuestras opciones, si queremos ocultar nuestro código, van a pasar por ofuscar el código. No es un blindaje pero fastidia bastante al que quiera robar el código. Por cierto, a mí no me funciona el Obfuscator que viene con AutoIt, si lo uso me para los EXE el antivirus ¡y no voy a estar mandando a McAfee un aviso por cada EXE que haga!
¿Conocéis otro Obfuscator que esté bien y que no tenga esos problemas?

Si los creadores de AutoIt no quieren que el código se decompile, son ellos los que lo tienen más fácil para dificultar esa tarea, se trata de crear un código más enrevesado a la hora de generar la tokenización. Otra forma de protegerlo es hacerlo ilegal, y como Alastor nos ha copiado en la licencia del lenguaje está la prohibición de decompilar el código...

Me temo que como foro público no vamos a poder dar soporte a un decompilador, si los autores prohíben ese procedimiento vamos a tener que acatar la licencia... o convertirnos en un foro de hacking (cosa que no va a ocurrir ¿verdad?).

Re: Proteger código fuente Autoit

Publicado: 17 Nov 2010, 17:48
por Alastor
XPyro escribió:E probado encriptado con npack
Imagen
http://petools.org.ru/npack.shtml

Pero de repente se reconocen como virus y no quisiera que desconfiaran de mi :smt037

Se los dejo portable:
http://www.4shared.com/file/q31dhWS8/Po ... 02008.html
Ya he dicho que empaquetar no sirve, pero que tal si:
-Empaquetamos el .exe con cualquier packer/compresor ligero que no suelte falsos positivos
-En el mismo script borramos la parte de la memoria donde empieza la información del script, haciendo una busqueda en la memoria desde el mismo script, y haciendo los cambios tambien desde el mismo.

De esta forma creo que no se podria decompilar (excepto si se desempaqueta) ya que faltarian datos y no estaríamos en contra de ninguna norma.
Claro que esto es solo en teoría, cuando tenga tiempo lo investigaré un poco a ver si da resultado.

Re: Proteger código fuente Autoit

Publicado: 17 Nov 2010, 17:51
por BasicOs
Es posible obfuscar el código y hacerlo muy bien, ya que hay programadores enredados con esto y con mucha práctica, obfuscar o proteger es algo que varía en un continuo no los extremos (un si o no), aunque como todos sabemos, en informática, se conocen pocos programas o cosas que sean no-hackeables, si no diganselo a apple, microsoft, etc... Y si alguien consigue crear una herramienta para abrir el código es porque tiene los conocimientos. Creo que cuesta más, una vez que se abre el código, ASIMILAR y entender el código que se ha hecho, ya que ha sido pensado por otra mente de la que lo hizo, en todo caso es agradecible que alguien quiera entender el código hecho por uno. :smt017 :smt017 :smt017

Creo que la idea de proteger código y hacerlo secreto, con algunas excepciones muy específicas, es una idea que nos viene de cuando los programas se vendían en su caja con el manual y el precinto. Estais de acuerdo que para hacer ingenieria inversa o hackear un programa, muchas veces mirando el GUI e identificando los procesos internos y externos tienes el 90%, no necesitas acceder al código sino saber lo que realmente hace el programa, y tener imaginación para pensar como es la maquinaria, y los procesos-procedimientos, que son siempre unos IF, VARIABLES Y BUCLES, ETC.. :smt034 :smt034 :smt034
Hoy en día en la época de internet, en la era de GOOGLE, lo que interesa al programador es lo contrario que en la época de la caja de soft, lo que le interesa es utilizar las vias de comunicación y redes, el google, para que sus ideas (programas) sean asimilados por mentes ajenas, y que algunas de ellas sigan replicando, o bien utilice la idea para relanzarla como idea libre. Y que esa idea sea una IDEA o programa aceptado GLOBALMENTE (por cientos de miles de users) o usuarios que no saben casi nada de lo que hay detras pero les resuelve la vida. ¿No os gustaría que cientos de miles de personas usaran un programa tuyo?¿De estos cientos de miles habría algunos que te necesitarían para algo diferente?. Es como un cantante como Julio Iglesias, que cantara en la ducha secretamente, y no en el mundo. :smt035 :smt035 :smt035 :smt035

No se de nadie que haya "escondido" el código y haya vendido las copias del ejecutable para hacerse rico pero si conozco las historias de sqlite, antes MYSQL, y del mismo foro este phpbb, drupal, joomla, etc que son libres... :smt003
Creo que los que hacen música al final van a vivir de los conciertos, y lo que hacen programas van a vivir del soporte o las mejoras individualizadas sobre el soft. Es decir, ya no se vende una caja, sino que se vende el conocimiento global y la capacidad de solucionar problemas y ayudar, como dar cursos sobre el programa etc...

Creo que Bill Gates nos mintió con lo de la venta de código cerrado y oculto, y solo le benefició a el. Y que muy pocos se han hecho ricos (igual que los compositores o artistas), con la venta de miles de unidades de un programa cerrado, y si hay muchos que sacan dinero dando servicios. Bueno, no se si ahora con los app store, android, nokia etc... cambiará la cosa. :smt033
El hecho de estar codificado en Autoit, lo hace más exclusivo y que no cualquiera pueda abrir el código implicarse y mejorarlo si no ha invertido un tiempo mínimo en aprenderlo o tiene preparación, (que se puede dar y sería como una mente igual a nosotros que nos entiende, cosa que es fantástica).
Puede que me equivoque en algo. Pero la mejor manera de proteger un código puede ser publicarlo en varios foros y que haya personas que tengan posibilidad de que lo "rieguen como un arbol", aportando nuevas ideas, y a su vez sacando partido al programa instalandolo en sus clientes y compradores de servicios, y usandolo, dando PROTAGONISMO y créditos al que lo creó o lo mantiene, ¿cuantas veces hemos dado créditos a otros que ni conocemos?. :smt023

Si crees que debes cerrar el code, hay muchas maneras, hasta poner parte del código en PHP externamente, crear procesos o dlls con C, y otros programas, crear modulos especificos, etc...

Aquí está el código para incluir el obfuscator en el Scite y en el Compilar con Opciones, y un hilo que comentan:

http://www.autoitscript.com/forum/topic ... msearch__1

http://www.autoitscript.com/forum/index ... mMainBar=1

Salu22:)
PD: Suscribo lo que comentan Ximorro, Xpyro y Chefito como los demás que intervienen, la idea es no incluir ideas o soft del típo "llamemoslo como metáfora porno" o desviado de la norma, ya que no es la idea del foro abusar de ellas o saltarselas, aunque este foro es libre y abierto a todos, y que acepta todas las posturas e ideas de por sí. Algun límite tiene que haber aunque el mínimo y poco, para no coartar la creatividad.

Re: Proteger código fuente Autoit

Publicado: 18 Nov 2010, 10:12
por Ximorro
Alastor, no entiendo lo que quieres decir con "borramos la parte de la memoria donde empieza la información del script". Si borras la información del script... ¿cómo lo ejecuta?
Yo creo que debemos asumir que el código ejecutable es accesible si ofrecemos el programa para ser ejecutado (otra cosa es encriptarlo para que nadie lo pueda ver, pero entonces tampoco lo pueden ejecutar). Si se puede ejecutar, el código debe estar accesible para Windows de alguna manera, así que alguien capaz de hacer un decompilador también será capaz de leer ese código, pues Windows debe cargarlo en memoria para poder ejecutarlo...

Una manera de hacer un ofuscador sería hacer un cargador que cargue el código a trozos, que puede estar incluso encriptado. Ese código no sería extraído directamente por un decompilador... ¡aunque sí extraería el cargador!. A partir de ahí a través del cargador decompilado se podría extraer el código completo. Como veis tampoco se protege el código de alguien que se empeñe en verlo, pero ya es una capa más de ofuscación y requiere técnicas de cracking además de decompilación...

Quizás no podamos impedir técnicamente que accedan a nuestro código, o puede que sea extremadamente complicado tal como está hecho ahora AutoIt, pero sí podemos complicar las cosas a los ojos indiscretos.

Por cierto, otra manera de impedirlo es legalmente, tal como han hecho los de AutoIT. Si registras tu soft y le pones una licencia de código NO abierto nadie tiene que robártelo. Si te encuentras una burda copia modificada de tu programa siempre puedes ir a los tribunales... Suerte, pero es una opción.

Bastante de acuerdo con la exposición de BasicOS, aunque también comprendo que haya gente que quiera vivir de vender sus programas. ¿Dando cursos? Cualquiera puede dar cursos de tu programa, ¿querría vivir un constructor de coches de dar clases de conducción, pero regalar los coches? Además si extiendes la idea los que enseñan a conducir también podrían hacerlo gratis...

Está claro que estoy a favor del código libre, SIEMPRE RESPETANDO EL RECONOCIMIENTO AL AUTOR ORIGINAL, ¡¡por eso estoy en este foro!!. Muchos de los que participamos activamente en este foro aportamos códigos e incluso programas completos totalmente abiertos. Para mí es un placer si alguien aprende algo de un programa que haya hecho yo, pero no para que lo copie ciegamente ¡sino para que sepa más de lo que sabía!. Así la comunidad se enriquece y globalmente mejora técnicamente, algo de lo que todos nos beneficiamos. No me gusta que roben mis códigos, me gusta que aprendan con ellos para después hacer cosas PROPIAS... que también ofrezcan para que los demás las disfrutemos.

Si alguien en este foro postea un ejecutable AutoIT sin poner el fuente seguramente causará recelo, y yo por ejemplo me resistiría a ejecutarlo.

En principio entre los usuarios del foro no tiene sentido hablar de decompiladores o de ocultar código, si alguien quiere saber como he hecho algo en alguno de mis programas y no puede ver el código no necesita decompilarlo, sólo tiene que preguntarlo ¡y se lo digo! En cualquier caso respeto que haya gente que quiera proteger sus códigos, y en realidad el tema de la ofuscación me parece muy interesante.

Incluso el tema del decompilador me parece muy interesante técnicamente hablando, es todo un reto. Si es tema vetado es por las cuestiones legales expuestas en el post inicial de este hilo, que espero respetéis, por mucho que os interese el tema.
Pero si por ejemplo tenéis un lenguaje que no prohíba decompilación ¡no hay absolutamente ningún problema en discutir aquí cómo hacer un decompilador en AutoIT para ese lenguaje!. El problema es decompilar AutoIt (con un programa hecho en autoit o cualquier otro lenguaje), ¡no hacer un decompilador en AutoIT!

Pero si alguien quiere ponerse a hacer un decompilador en AutoIt (de otro lenguaje) pasadlo a otro hilo, que si no armaremos un follón. Dejemos este hilo para el tema de los métodos de ofuscación/antidecompilación y si queréis para las implicaciones filosóficas de la ofuscación/ocultación.

Re: Proteger código fuente Autoit

Publicado: 18 Nov 2010, 12:13
por BasicOs
Ximorro escribió:
Bastante de acuerdo con la exposición de BasicOS, aunque también comprendo que haya gente que quiera vivir de vender sus programas. ¿Dando cursos? Cualquiera puede dar cursos de tu programa, ¿querría vivir un constructor de coches de dar clases de conducción, pero regalar los coches? Además si extiendes la idea los que enseñan a conducir también podrían hacerlo gratis...


Si alguien en este foro postea un ejecutable AutoIT sin poner el fuente seguramente causará recelo, y yo por ejemplo me resistiría a ejecutarlo.

Sobre mentiras y clichés Esa es la idea que las compañias discográficas y de software (MS..) quieren hacer, igualar una "idea" o un programa o una música a algo físico para cobrar por el aire. Ciertamente lo que cuesta es la creación inicial de la idea, hipótesis, teorías, programas, música, pero una vez está creada se puede replicar un trillon de veces sin coste, ya que la copia tiene un coste despreciable, si tienes 10.000 usuarios del programa asiduos (porque es muy bueno), hay un porcentaje que va a necesitar de algo más, o de cursos o etc.. Creo que lo del código cerrado solo interesa a grandes corporaciones, e incluso no, a Google, a Microsoft no (ha incorporado Wordpress en sus páginas de Myspace) http://www.enriquedans.com/2009/11/refo ... right.html
Aquí hay un autor que lo explica mejor que yo, refiriendose a la música, software, etc:
http://www.enriquedans.com/?s=software&x=0&y=0
Trabajo en equipo sobre compartir el conocimiento ayudando a la salud: http://www.enriquedans.com/2010/08/alzh ... ctual.html
http://www.enriquedans.com/2010/11/la-p ... artir.html
Y que la “crisis de la música”, la “crisis del cine” o la “crisis del libro” no tiene nada que ver con que haya crisis de quien quiere de verdad hacer música, crear películas o escribir libros, y ganar dinero con ello. Que más de diez años después, no hay ni menos música, ni menos películas, ni menos libros, ni menos calidad en ninguno de los casos: es solo la crisis de quienes ya no generan valor en esas industrias, de los copistas que no se supieron reconvertir en otra cosa. Nos habríamos ahorrado mucho, muchísimo tiempo, esfuerzos y dinero no haciéndoles caso desde el primer momento, como de hecho nos indicaba nuestro sentido común antes de que su triste dialéctica de intoxicación informativa desarrollase su efecto.

http://www.enriquedans.com/2010/11/repi ... libro.html
http://www.enriquedans.com/page/2?s=pirata&x=0&y=0

La otra parte, de quien aprende puede hacerlo gratis, eso es así pero no es tan facil, y eso hace que el que inició el programa siga "activo", o sea que tiene que seguir investigando "sobre su idea", sino habrá otro que siga con el trabajo que se quedó a medias. Por ejemplo phpbb, openoffice, seguro que tienen clones, igual que joomla, o mysql tiene sqlite, porque los de la idea no siguieron trabajando en ello. O sea que o mantienes el programa o más vale que lo copien, si no se quedará en un cajón lleno de polvo. Esto va en contra de la idea de hacer una aplicación y vivir de las rentas, o que la aplicación dure 10 años, hay que seguir "manteniendo viva la evolución y el crecimiento de la aplicación, y la enseñanza y el contacto con los usuarios" nada de dormirse en los laureles.

Un programador sabe todo lo que se puede ocultar en un exe, y por eso el recelo a ejecutarlo dependiendo de la fuente y otros factores, pero a veces me quedo asombrado de lo que es capaz de ejecutar un usuario, así pasa lo de las bases de datos de información privada de internet que se usan para las tarjetas de crédito.

Salu22:)
PD: Este video no tiene desperdicio para ver como esto de lo digital no se entiende:
http://www.enriquedans.com/2010/11/este ... usion.html

Re: Proteger código fuente Autoit

Publicado: 20 May 2014, 09:42
por chekok
Estoy viendo maneras de proteger los ejecutables de autoit frente a la decompilación.

De momento tengo hecho algo, pero no sé lo fiable que puede llegar a ser. Un experto puede obtener el fuente sin problemas, pero un usuario que disponga del famoso decompilador para autoit quedará frenado (eso creo).

Podeis descargar el exe de prueba desde aquí: http://www.securityessentials.es/inicio.exe

Espero sugerencias y críticas al respecto. :smt023

P.D. El programa es simplemente un Msgbox que devuelve la suma de dos variables. Es una de las pruebas iniciales así que creo que la mayoría podréis llegar a ver el fuente o ver el "engaño" que utilizo. de todas maneras insisto que la idea simplemente es evitar el decompilado por usuarios normales, no por expertos.