Ingeniería inversa

No cabe duda de que a pesar de las consecuencias adversas, una de las mejores formas de evolución para la raza humana son las guerras, la segunda guerra mundial es probablemente la peor de ellas, pero también dio origen a muchas de las tecnologías que hoy conocemos, hablar de todas ellas me llevaría más tiempo del que tengo por lo que me centrare en un solo tema "la ingeniería inversa".

Podría afirmar que desde sus orígenes el hombre a usado la ingeniería inversa para aprender de su entorno, sin embargo el término nace formalmente durante la segunda guerra mundial, en aquellos días era usada para tratar de entender como funcionaban las armas, barcos, aviones y otras máquinas  empleadas por los ejércitos enemigos, incluso la criptografía moderna tiene sus orígenes en esta técnica.

La ingeniería inversa es un método de resolución para determinar como funciona un determinado producto, basándose en un profundo análisis de su funcionamiento y diseño; aunque sí bien es cierto que el propósito final de la ingeniería inversa es el desarrollo de nuevos productos basados en las conclusiones de dicho análisis, esto no siempre es del todo cierto y en muchas ocasiones este análisis se utiliza con otros fines como la reparación de laptops (como mi amigo el Ing. Brujo, a quien mando un saludo).

Sin embargo en el tema del software la ingeniería inversa juega sin duda alguna uno de los papeles fundamentales a la hora del desarrollo, porqué?, bueno como ustedes sabrán nuestro amigo Bill Gastes, es fanático de cobrar por todo su trabajo aunque este se haya basado en un robo (perdón en aplicar ingeniería inversa) y desarrollar su sistema operativo, como dicho sistema es de código cerrado había grandes problemas de compatibilidad con otros sistemas por lo que con un poco de análisis dio origen a proyectos de código abierto como samba, open office, wine, etc, etc, etc.

Bien empleada la ingeniería inversa puede dar origen a grandes proyectos, sin embargo no es del todo legal y ha dado mucho de que hablar sobre todo por los crackers, llegados a éste punto vale la pena aclarar que es un cracker, porque a muchos les causa confusión el asunto, un cracker es un programador que aplicando herramientas de ingeniería inversa, consigue evadir las protecciones de un determinado software comercial (la mayoría de las veces) con un propósito; la mayor parte de las veces evitar el pago por dicho software valiéndose de diversos métodos, de ahí que sea considerada una actividad ilegal, sin embargo no siempre es así y puede ser encaminado a la depuración de dicho software.

Nota: obsérvese que existe una clara diferencia entre cracker como concepto de persona y la aceptación común de crackear, la cual es usada coloquialmente para referirse al acto de obtener la contraseña de un archivo o red mediante un determinado software.

Aunque el cracking se usa principalmente en software de código cerrado (principalmente Windows) el desarrollo de software en nube ha hecho que últimamente se hable de cracking web, con el fin validar alguna aplicación o plugin de éste tipo y aunque es poco conocida ésta técnica la base de ella, es también la ingeniería inversa.

Otro de los resultados de la ingeniería inversa es el famoso y bien conocido jailbreak para ipod, iphone y ipad, el cual se basa en la modificación del firmware (equivalente al sistema operativo) a fin de extender las funciones del mismo permitiendo instalar software libre en un dispositivo cerrado (de ahí el término). Otro uso en los dispositivos móviles es también el flexeo, por medio del cual se puede cambiar de compañía telefónica a los teléfonos celulares, este no habría tenido origen de no ser por los contratos de exclusividad entre las compañías de teléfonos y los fabricantes de estos.

A propósito de estos contratos, fue gracias a la ingeniería inversa que se desarrollaron drivers para XP, en tiempos en los que Microsoft pretendió imponer su peor fracaso llamado "Vista", mediante contratos con empresas como HP, Compaq, Bluecode, entre otras, las cuales no ofrecían drivers para otro sistema que no fuera Vista, éste tipo de imposición le valió diversas demandas a estas empresas pero el golpe más duro fue que pese a esto se desarrollaron drivers libres basados en los de Linux.

La ingeniería inversa es sin duda una de las grandes paradojas de nuestro tiempo pues mientras ha demostrado contribuir a mejorar las tecnologías existentes por otra parte implica en muchas formas una violación a los derechos de autor y ha contribuido son duda alguna a la generación y fabricación de productos de baja calidad.

Linux es para mi sin duda el mejor ejemplo de éxito de la ingeniería inversa, pues en sus orígenes no contó con la aceptación de las grandes empresas desarrolladoras de software, pero por otra parte se sumaron al proyecto miles de desarrolladores independientes que lo han convertido en la mejor alternativa en sistemas operativos.

La ingeniería inversa es tan grande que podría decir (con temor de ser linchado por esto) es la esencia de todo hacker, sin ella no se puede entender el propósito de ser hacker y desde mi perspectiva esta es la razón por la cual se confunden los términos hacker, cracker y phracker en la actualidad, aunque exista una clara diferencia en los propósitos y especialización de cada uno.

En conclusión la ingeniería inversa es compleja y requiere un gran nivel de abstracción, una buena dosis de pasión y en algunos casos conocimientos técnicos,  sin embargo esta profundamente relacionada con nuestra vida diaria y cualquiera con curiosidad puede practicarla, que pasa frente a nosotros sin que lo notemos.

SaluDoS!

Comentarios

Entradas populares de este blog

Detener la sincronización de tiempo/fechas entre Host y Guest en Virtual Box

Extraer datos de un archivo.mdb (Access) con python

Solución al problema con odbc pgsql (postgresql) en Windows 7 de 64 bits