Ir a contenido


Foto
- - - - -

Elegir Lenguaje/plataforma De Desarrollo


  • Please log in to reply
11 replies to this topic

#1 Vaughamm

Vaughamm

    Photoshop Alchemist

  • Hentais
  • PipPipPipPipPipPipPip
  • 4916 Mensajes:

Escrito 28 November 2004 - 11:40 AM

La duda es la siguiente: ¿es más fácil hacer ingeniería inversa con un lenguaje que ejecute sobre máquina virtual como java o los de .NET o hay formas de proteger el código? Y en ese caso, si quieres dificultar la ing. inversa y necesitas un lenguaje moderno, ¿cuál elegir?
Una opción es C++, pero me da mucho asco. ¿Alguna otra?
Imagen enviada

#2 Maeghith

Maeghith

    Zidane

  • FL Vintage
  • 4997 Mensajes:

Escrito 28 November 2004 - 03:48 PM

Si te refieres a programas que te cojan un .class y te lo conviertan en un .java de texto más o menos legible supongo que como no pilles alguna librería de encriptación o algún ofuscador de código (o ambos), no vas a poder hacer nada para evitar el descompilado (personalmente no he usado ningun programa de estos para descompilar .class, te hablo de oidas, aunque también tengo entendido que el nivel de legibilidad de estos programas no es muy elevado).

No se si decirte que pruebes el programa de DRM que hace la empresa donde trabajo por que precisamente tiene algunas limitaciones con respecto a máquinas virtuales y código semiinterpretado. Búsqueda en google por activemark si le quieres echar un vistazo a la versión estandar, que es gratuita, y haces las pruebas que quieras.
Imagen enviada
||-- navega sin temor --||-- /dev/soma --||-- flickr --||-- last.fm --||-- twitter --||
A foreign substance is introduced into our precious bodily fluids without the
knowledge of the individual, and certainly without any choice.

#3 Dorgan

Dorgan

    Advanced Member

  • Hentais
  • PipPip
  • 342 Mensajes:

Escrito 28 November 2004 - 03:57 PM

Para eso están las arquitecturas multinivel, para que todo el codigo sensible se ejecute en servidores, y no en los clientes, donde solo debe haber componentes gráficos y código relacionado o que no importe sea visible.
Otra cosa muy distinta es que quieras ocultar el código a la empresa compradora del software, con los lenguajes interpretados, casi mejor venderles el fuente y los derechos, o confiar en la licencia (ya sea GPL o cualquiera).

Los decompiladores de Java funcionan, como pasa con los decompiladores de C/C++ (y supongo que muchos otros lenguajes). Pero no creas que te generan el java original, y olvidate de que traiga comentarios en el código.
¿Paranoico yo? ¿Simplemente por que piense que casi todo el mundo me odia?...
Y el resto....
Aun no me conoce.

#4 phib

phib

    bl3h~

  • Hentais
  • PipPipPipPipPipPip
  • 3615 Mensajes:

Escrito 28 November 2004 - 04:37 PM

Java y *.NET esta tirao de decompilar. Necesitas algun lenguaje que directamente prescinda de interprete o maquina virtual. Deberias detallar un poco lo ke kieres hacer y asi te podriamos ayudar un poco mejor. Igual delphi o vb te podrian servir.


Edit: Te habras tirao horas pa hacer esa firma eh? xDD

Este tema ha sido editado por phib: 28 November 2004 - 04:38 PM


#5 Vaughamm

Vaughamm

    Photoshop Alchemist

  • Hentais
  • PipPipPipPipPipPipPip
  • 4916 Mensajes:

Escrito 29 November 2004 - 12:05 AM

Ahora mismo lo tengo todo en el aire, pero en principio no necesito nada más que un buen manejo de objetos estándar en un lenguaje, por eso no he concretado.

Miraré eso de activemark y echaré un vistazo a Delphi que lo tengo por ahí, parece lógico prescindir de lenguajes interpretados.

Lo que ha comentado Dorgan es interesante, poner el programa en una máquina distinta a la que muestra el resultado es una forma de proteger incluso el ejecutable/compilado, aunque el programa no necesite por sí mismo tener una arquitectura distribuída. Lo tendré en cuenta por si puedo aplicarlo.

Muchas gracias por las respuestas
Imagen enviada

#6 jletelie

jletelie

    Leecher

  • Hentais
  • 9 Mensajes:

Escrito 07 December 2004 - 12:13 AM

Hola:
conversando la otra vez con un amigo, y analizando algunos programas he llegado a la siguiente conclusion:

Si utilizas Java es bastante fácil descompilarlo, inclusive estando ofuscado el código, lo malo es que el código queda asquerasamente ilegible y puedes perder mucho tiempo intentando entender que hace, el java queda sobre-cargado y con muchas funciones con el mismo nombre pero en distintas clases. Además algunas veces los algoritmos muy complejos no pueden ser generados y quedan incompletos.

La otra forma es que utilices WebServices (SOAP o XMLRPC) de esta forma toda la lógica de la base de datos (insertar datos, consultar datos, etc.) o cualquier proceso importante queda en un Servidor Web (Apache o IIS) y puedes hacer un cliente en cualquier lenguaje (Java, PHP, Visual Basic). nosotros aca utilizamos XMLRPC con Apache y con IIS, y los lenguajes de programacion que utilizamos son PHP, C, C++, VC++, java, por nombrar algunos.

Tambien puedes hacer una aplicación Web con PHP y regenerar los códigos fuentes en formato pre-compilado, segun tengo entendido, en ese formato es imposible volver atras, y si pierdes el código fuente estas frito. hay varias herramientas para hacer ese optimizado, adicionalmente debes instalar un módulo al Apache o al IIS. El pre-compilado de los códigos fuentes tambien sirve si haces una aplicación utilizando WebServices y XMLRPC.

Tambien hay otras herramientas para obfuscar o encriptar los archivos EXE, y de esa forma es más dificil hacer ingenieria inversa.

Espero que sirva mi aporte.

#7 phib

phib

    bl3h~

  • Hentais
  • PipPipPipPipPipPip
  • 3615 Mensajes:

Escrito 07 December 2004 - 12:16 AM

Tambien hay otras herramientas para obfuscar o encriptar los archivos EXE, y de esa forma es más dificil hacer ingenieria inversa.


Pero al final no sirve de nada, se lo pondras dificil a los n00bs y ya esta.

#8 Issun Boushi

Issun Boushi

    Advanced Member

  • Hentais
  • PipPip
  • 325 Mensajes:

Escrito 07 December 2004 - 01:33 AM

Tambien hay otras herramientas para obfuscar o encriptar los archivos EXE, y de esa forma es más dificil hacer ingenieria inversa.


Pero al final no sirve de nada, se lo pondras dificil a los n00bs y ya esta.

Bueno, un binario cifrado parcialmente con una clave RSA o AES de 2048 bits en un dongle serio (no los HASP, claro :)) no es algo que pueda manejar mucha gente, sean n00bs o no. Sobre todo si no tienen un ICE de PC hard (no es muy difícil burlar a SoftICE) tremendamente caro.

De todas formas y por lo que decís, parece como si metierás el decompilador y ya pudieras usar automáticamente el código... Ojalá :). El 99% de las veces es mucho más fácil y más barato poner a tres picateclas y a un analista a copiar esa feature desde cero que pelearse con lo que escupe el mejor decompilador del mercado.

La ingeniería inversa es el último recurso, un recurso caro, lento y doloroso, para proyectos infernales de reingeniería y poco más. En sistemas empotrados todavía tiene sentido protegerse de eso, pero en computadores personales pues...

Por otro lado, sólo es lícita en Europa si es con objeto de conseguir compatibilidad (Descifrar el formato del MS Word, por ejemplo) así que ya cuentas con protección legal :).

PS: en los viejos tiempos del modo real una forma divertida de protegerse de la ingeniería inversa era escribir tu propio manejador de la interrupción H03 ó H01, uno que borrase tablas de particiones p.ej. No era muy efectivo pero algunos picaban y, al correr el programa en el depurador... boom :)

#9 Maeghith

Maeghith

    Zidane

  • FL Vintage
  • 4997 Mensajes:

Escrito 07 December 2004 - 03:38 AM

Para nada de acuerdo con phib.

Precisamente el exe ya compilado se puede ofuscar, y encriptar y hacerle mil y una putadas más para que luego, cuando venga alguien a intentar desensamblarlo, le pete en las narices (y no estoy hablando de meter código malicioso, simplemente es tan enrevesado que equivocarse es tan fácil que a nada que te equivoques te jodes tú mismo).

Bueno, un binario cifrado parcialmente con una clave RSA o AES de 2048 bits en un dongle serio (no los HASP, claro :) ) no es algo que pueda manejar mucha gente, sean n00bs o no. Sobre todo si no tienen un ICE de PC hard (no es muy difícil burlar a SoftICE) tremendamente caro.

:eins: Me asusta lo que sabes, tio, ¿de donde has salido? :palito:

El 99% de las veces es mucho más fácil y más barato poner a tres picateclas y a un analista a copiar esa feature desde cero que pelearse con lo que escupe el mejor decompilador del mercado.

Terriblemente cierto. Pero si se habla de copiar la funcionalidad del programa completo, para eso te montas una empresa y sacas un proudcto que haga la competencia al que ya hay, y/o lo haces opensource XD
Imagen enviada
||-- navega sin temor --||-- /dev/soma --||-- flickr --||-- last.fm --||-- twitter --||
A foreign substance is introduced into our precious bodily fluids without the
knowledge of the individual, and certainly without any choice.

#10 phib

phib

    bl3h~

  • Hentais
  • PipPipPipPipPipPip
  • 3615 Mensajes:

Escrito 07 December 2004 - 04:03 AM

Bueno, un binario cifrado parcialmente con una clave RSA o AES de 2048 bits en un dongle serio (no los HASP, claro :)) no es algo que pueda manejar mucha gente, sean n00bs o no. Sobre todo si no tienen un ICE de PC hard (no es muy difícil burlar a SoftICE) tremendamente caro.

Pero el no va a poner eso para proteger su programilla xD

Precisamente el exe ya compilado se puede ofuscar, y encriptar y hacerle mil y una putadas más para que luego, cuando venga alguien a intentar desensamblarlo, le pete en las narices (y no estoy hablando de meter código malicioso, simplemente es tan enrevesado que equivocarse es tan fácil que a nada que te equivoques te jodes tú mismo).


Ay... se me ha ido el santo al cielo. Cuando ha hablado de encriptar exes y empakarlos enseguida he pensado en lo de toda la vida, crackear para sacar serials, etc xD

Si, sale mas a cuenta crear tu mismo el codigo ke hacerle ingenieria inversa para sacar algo en claro. Para lo ke si serian inutiles las protecciones de ejecutables es el evitar ke un programa se crackee o se sake un serial, etc (ke era a esto a lo ke me referia antes y se me escapo por deformacion "profesional" xD)

#11 Kazin

Kazin

    El yonki de Mimiru

  • FL Colaboradores
  • PipPipPip
  • 1746 Mensajes:

Escrito 07 December 2004 - 04:11 AM

ains phib siempre pensando en lo mismo xD
sin irse a soluciones tan leets como las que te ha dado issun, los empaquetadores tb son bastante putas, el otro dia mismamente preferi reinstalar windows (que tardas nada teniendo una imagen) para un programilla (del que no existe crack) que estaba empaquetado con armadillo 3.75
investigue un poco y no parecia extremadamente chungo de crackear, pero hubiese tardado bastante de todas formas (yo de cracking no llego al sufi)

#12 DeathScythe

DeathScythe

    Guru del foro-chat

  • Hentais
  • PipPipPipPipPip
  • 2777 Mensajes:

Escrito 07 December 2004 - 04:15 AM

Arquitectura por capas es lo mejor, todo el código importante queda en componentes en el servidor y asi no hay problema de que le hagan ingenieria inversa, otra opción podria ser ColdFusion, ya que las paginas .cfm las puedes encriptar con una herramienta que trae el servidor de ColdFusion y tengo entendido que no hay vuelta atras asi que si pierdes los fuentes ya te jodiste, aunque no es un lenguage orientado a objetos igual te puede servir, las licencias ya son tema aparte :silbar2:
Imagen enviada¡Viva México!




1 usuarios están leyendo este tema

0 miembros, 1 invitados, 0 usuarios anónimos