
La ingeniería inversa (también conocida como ingeniería hacia atrás ) es un proceso o método mediante el cual se intenta comprender, a través del razonamiento deductivo, cómo un dispositivo, proceso, sistema o software previamente creado realiza una tarea con muy poca (o ninguna) información sobre su funcionamiento exacto. Dependiendo del sistema en cuestión y las tecnologías empleadas, el conocimiento adquirido durante la ingeniería inversa puede ayudar a reutilizar objetos obsoletos, realizar análisis de seguridad o comprender cómo funciona algo. [ 1 ] [ 2 ] [ 3 ]
Aunque el proceso es específico del objeto sobre el que se realiza, todos los procesos de ingeniería inversa constan de tres pasos básicos: extracción de información, modelado y revisión. La extracción de información es la práctica de recopilar toda la información relevante para realizar la operación. El modelado es la práctica de combinar la información recopilada en un modelo abstracto, que puede usarse como guía para diseñar el nuevo objeto o sistema. La revisión es la prueba del modelo para asegurar la validez del modelo abstracto elegido. [ 4 ] La ingeniería inversa es aplicable en los campos de la ingeniería informática , la ingeniería mecánica , el diseño , la ingeniería eléctrica y electrónica , la ingeniería civil , la ingeniería nuclear , la ingeniería aeroespacial , la ingeniería de software , la ingeniería química , [ 5 ] la biología de sistemas [ 6 ] y más.
Descripción general
Existen muchas razones para realizar ingeniería inversa en diversos campos. La ingeniería inversa tiene sus orígenes en el análisis de hardware para obtener ventajas comerciales o militares. [ 7 ] : 13 Sin embargo, el proceso de ingeniería inversa no siempre se centra en crear una copia o modificar el artefacto de alguna manera. Puede utilizarse como parte de un análisis para deducir características de diseño de productos con poco o ningún conocimiento adicional sobre los procedimientos involucrados en su producción original. [ 7 ] : 15
En algunos casos, el objetivo del proceso de ingeniería inversa puede ser simplemente una redocumentación de sistemas heredados . [ 7 ] : 15 [ 8 ] Incluso cuando el producto sometido a ingeniería inversa es el de un competidor, el objetivo puede no ser copiarlo, sino realizar un análisis de la competencia . [ 9 ] La ingeniería inversa también puede utilizarse para crear productos interoperables y, a pesar de algunas legislaciones específicas de Estados Unidos y la Unión Europea, la legalidad del uso de técnicas específicas de ingeniería inversa para ese fin ha sido objeto de intensos debates en tribunales de todo el mundo durante más de dos décadas. [ 10 ]
La ingeniería inversa de software puede ayudar a mejorar la comprensión del código fuente subyacente para el mantenimiento y la mejora del software. Se puede extraer información relevante para tomar decisiones sobre el desarrollo del software, y las representaciones gráficas del código pueden proporcionar vistas alternativas del código fuente, lo que puede ayudar a detectar y corregir un error o vulnerabilidad del software. Con frecuencia, a medida que se desarrolla un software, su información de diseño y mejoras se pierden con el tiempo, pero esa información perdida generalmente se puede recuperar mediante la ingeniería inversa. El proceso también puede ayudar a reducir el tiempo necesario para comprender el código fuente, reduciendo así el costo total del desarrollo del software. [ 11 ] La ingeniería inversa también puede ayudar a detectar y eliminar código malicioso escrito en el software con mejores detectores de código. La inversión de un código fuente se puede utilizar para encontrar usos alternativos del código fuente, como detectar la replicación no autorizada del código fuente donde no fue diseñado para usarse, o revelar cómo se construyó un producto de la competencia. [ 12 ] Ese proceso se usa comúnmente para "craquear" software y medios para eliminar su protección anticopia , [ 12 ] : 7 o para crear una copia posiblemente mejorada o incluso una imitación , que suele ser el objetivo de un competidor o un hacker. [ 12 ] : 8
Los desarrolladores de malware suelen utilizar técnicas de ingeniería inversa para encontrar vulnerabilidades en un sistema operativo y crear un virus informático que pueda explotarlas. [ 12 ] : 5 La ingeniería inversa también se utiliza en criptoanálisis para encontrar vulnerabilidades en cifrados de sustitución , algoritmos de clave simétrica o criptografía de clave pública . [ 12 ] : 6
Existen otros usos para la ingeniería inversa:
- Juegos. La ingeniería inversa en el contexto de los juegos y los motores de juego se utiliza a menudo para comprender las mecánicas subyacentes, las estructuras de datos y los protocolos propietarios, lo que permite a los desarrolladores crear modificaciones , herramientas personalizadas o mejorar la compatibilidad. Esta práctica es particularmente útil al interactuar con sistemas existentes para mejorar la interoperabilidad entre diferentes componentes, motores o plataformas de juego. Plataformas como ResHax [ 13 ] proporcionan herramientas y recursos que ayudan a analizar los binarios de los juegos, diseccionar el comportamiento del motor de juego y, por lo tanto, contribuir a una comprensión más profunda de la tecnología de los juegos y permitir mejoras impulsadas por la comunidad.
- Interfaz. La ingeniería inversa se puede utilizar cuando se requiere que un sistema interactúe con otro y se debe establecer cómo negociarían ambos sistemas. Estos requisitos suelen existir para la interoperabilidad .
- Espionaje militar o comercial . Conocer las últimas investigaciones de un enemigo o competidor robando o capturando un prototipo y desmantelándolo puede dar como resultado el desarrollo de un producto similar o una mejor contramedida.
- Obsolescencia. Los circuitos integrados suelen diseñarse en sistemas propietarios y fabricarse en líneas de producción que quedan obsoletas en pocos años. Cuando los sistemas que utilizan esos componentes ya no pueden recibir mantenimiento porque ya no se fabrican, la única forma de incorporar la funcionalidad a una nueva tecnología es mediante la ingeniería inversa del chip existente y su posterior rediseño con herramientas más modernas, guiándose por los conocimientos adquiridos. Otro problema derivado de la obsolescencia que puede resolverse mediante la ingeniería inversa es la necesidad de dar soporte (mantenimiento y suministro para el funcionamiento continuo) a los dispositivos heredados que ya no cuentan con el respaldo de su fabricante original . Este problema es especialmente crítico en operaciones militares.
- Análisis de seguridad del producto. Este análisis examina el funcionamiento del producto determinando las especificaciones de sus componentes, estimando los costos e identificando posibles infracciones de patentes . También forma parte del análisis de seguridad del producto la obtención de datos confidenciales mediante el desmontaje y el análisis del diseño de un componente del sistema. [ 14 ] Otro objetivo puede ser eliminar la protección contra copias o eludir las restricciones de acceso.
- Inteligencia técnica competitiva. Se trata de comprender qué está haciendo realmente la competencia, en lugar de lo que dice que está haciendo.
- Ahorrar dinero. Averiguar qué puede hacer un aparato electrónico puede evitar que el usuario tenga que comprar otro producto.
- Reutilización . Los objetos obsoletos se reutilizan de una manera diferente pero útil.
- Diseño . Las empresas de producción y diseño aplicaron la ingeniería inversa a procesos de fabricación prácticos basados en la artesanía. Estas empresas pueden trabajar en colecciones de fabricación "históricas" mediante escaneo 3D, remodelación 3D y rediseño. En 2013, los fabricantes italianos Baldi y Savio Firmino, junto con la Universidad de Florencia, optimizaron sus procesos de innovación, diseño y producción. [ 15 ]
Usos comunes
Máquinas
A medida que el diseño asistido por computadora (CAD) se ha vuelto más popular, la ingeniería inversa se ha convertido en un método viable para crear un modelo virtual 3D de una pieza física existente para su uso en CAD 3D , CAM , CAE u otro software . [ 16 ] El proceso de ingeniería inversa implica medir un objeto y luego reconstruirlo como un modelo 3D. El objeto físico se puede medir utilizando tecnologías de escaneo 3D como CMM , escáneres láser , digitalizadores de luz estructurada o escaneo CT industrial (tomografía computarizada). Los datos medidos por sí solos, generalmente representados como una nube de puntos , carecen de información topológica y de la intención del diseño. La primera se puede recuperar convirtiendo la nube de puntos en una malla de caras triangulares . La ingeniería inversa tiene como objetivo ir más allá de producir dicha malla y recuperar la intención del diseño en términos de superficies analíticas simples cuando sea apropiado ( planos , cilindros , etc.), así como posiblemente superficies NURBS para producir un modelo CAD de representación de límites . La recuperación de dicho modelo permite modificar un diseño para satisfacer nuevos requisitos, generar un plan de fabricación, etc.
El modelado híbrido es un término comúnmente utilizado cuando se implementan conjuntamente NURBS y modelado paramétrico . La combinación de superficies geométricas y de forma libre puede proporcionar un método potente de modelado 3D . Las áreas de datos de forma libre se pueden combinar con superficies geométricas exactas para crear un modelo híbrido. Un ejemplo típico sería la ingeniería inversa de una culata, que incluye elementos fundidos de forma libre, como camisas de agua y áreas mecanizadas de alta tolerancia. [ 17 ]
Las empresas también utilizan la ingeniería inversa para incorporar geometrías físicas existentes a entornos de desarrollo de productos digitales, crear un registro digital en 3D de sus propios productos o evaluar los de la competencia. Se emplea para analizar el funcionamiento de un producto, sus funciones, sus componentes, estimar costes, identificar posibles infracciones de patentes , etc.
La ingeniería de valor , una actividad relacionada que también utilizan las empresas, consiste en descomponer y analizar productos. Sin embargo, el objetivo es encontrar oportunidades para reducir costes.
placas de circuitos impresos
La ingeniería inversa de placas de circuitos impresos consiste en recrear los datos de fabricación de una placa específica. Esto se realiza principalmente para identificar un diseño y conocer sus características funcionales y estructurales. También permite descubrir los principios de diseño que sustentan un producto, especialmente si esta información no está fácilmente disponible.
Las placas de circuito impreso (PCB) obsoletas suelen ser objeto de ingeniería inversa, especialmente cuando desempeñan funciones críticas como alimentar maquinaria u otros componentes electrónicos. La ingeniería inversa de estas piezas antiguas permite reconstruir la PCB si realiza alguna tarea crucial, así como encontrar alternativas que cumplan la misma función o actualizar la PCB antigua. [ 18 ]
La ingeniería inversa de PCB sigue en gran medida la misma serie de pasos. Primero, se crean imágenes dibujando, escaneando o fotografiando la PCB. Luego, estas imágenes se transfieren a un software de ingeniería inversa adecuado para crear un diseño rudimentario de la nueva PCB. La calidad de estas imágenes, necesaria para una ingeniería inversa adecuada, es proporcional a la complejidad de la PCB. Las PCB más complejas requieren fotografías bien iluminadas sobre fondos oscuros, mientras que las PCB relativamente simples se pueden recrear simplemente con un dimensionamiento básico. Cada capa de la PCB se recrea cuidadosamente en el software con el objetivo de producir un diseño final lo más parecido posible al inicial. Finalmente, se generan los esquemas del circuito utilizando una herramienta apropiada. [ 19 ]
Software
En 1990, el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) definió la ingeniería inversa (de software) (SRE) como «el proceso de analizar un sistema en estudio para identificar sus componentes y sus interrelaciones, y crear representaciones del sistema en otra forma o con un mayor nivel de abstracción», donde el «sistema en estudio» es el producto final del desarrollo de software. La ingeniería inversa es un proceso de examen únicamente, y el sistema de software en cuestión no se modifica, lo que constituiría una reingeniería o reestructuración. La ingeniería inversa puede realizarse desde cualquier etapa del ciclo de vida del producto, no necesariamente desde el producto final funcional. [ 11 ]
La ingeniería inversa consta de dos componentes: la redocumentación y la recuperación del diseño. La redocumentación consiste en la creación de una nueva representación del código informático para facilitar su comprensión. Por otro lado, la recuperación del diseño implica el uso de la deducción o el razonamiento a partir del conocimiento general o la experiencia personal con el producto para comprender completamente su funcionalidad. [ 11 ] También puede considerarse como "retroceder a través del ciclo de desarrollo". [ 20 ] En este modelo, el resultado de la fase de implementación (en forma de código fuente) se somete a ingeniería inversa para volver a la fase de análisis, invirtiendo así el modelo tradicional en cascada . Otro término para esta técnica es comprensión de programas . [ 8 ] La Conferencia de Trabajo sobre Ingeniería Inversa (WCRE) se celebra anualmente para explorar y ampliar las técnicas de ingeniería inversa. [ 12 ] [ 21 ] La ingeniería de software asistida por ordenador (CASE) y la generación automatizada de código han contribuido enormemente al campo de la ingeniería inversa. [ 12 ]
La tecnología de protección contra manipulaciones de software, como la ofuscación, se utiliza para disuadir tanto la ingeniería inversa como la reingeniería de software propietario y sistemas basados en software. En la práctica, surgen dos tipos principales de ingeniería inversa. En el primer caso, el código fuente del software ya está disponible, pero se descubren aspectos de alto nivel del programa, que pueden estar mal documentados o documentados pero ya no son válidos. En el segundo caso, no hay código fuente disponible para el software, y cualquier esfuerzo por descubrir un posible código fuente se considera ingeniería inversa. El segundo uso del término es más familiar para la mayoría de las personas. La ingeniería inversa de software puede utilizar la técnica de diseño de sala limpia para evitar la infracción de derechos de autor.
En relación con esto, las pruebas de caja negra en ingeniería de software tienen mucho en común con la ingeniería inversa. El evaluador generalmente tiene la API , pero su objetivo es encontrar errores y características no documentadas atacando el producto desde fuera. [ 22 ]
Otros propósitos de la ingeniería inversa incluyen la auditoría de seguridad, la eliminación de la protección contra copias (" crackeo "), la elusión de las restricciones de acceso que suelen estar presentes en la electrónica de consumo , la personalización de sistemas integrados (como los sistemas de gestión del motor), las reparaciones o adaptaciones internas, la habilitación de funciones adicionales en hardware "limitado" de bajo coste (como algunos conjuntos de chips de tarjetas gráficas) o incluso la mera satisfacción de la curiosidad.
Software binario
La ingeniería inversa binaria se realiza cuando el código fuente de un software no está disponible. [ 12 ] Este proceso a veces se denomina ingeniería inversa de código , o RCE. [ 23 ] Por ejemplo, la descompilación de binarios para la plataforma Java se puede realizar utilizando Jad. Un caso famoso de ingeniería inversa fue la primera implementación no IBM de la BIOS de PC , que lanzó la histórica industria de PC compatibles con IBM que ha sido la plataforma de hardware de computadora abrumadoramente dominante durante muchos años. La ingeniería inversa de software está protegida en los EE. UU. por la excepción de uso justo en la ley de derechos de autor . [ 24 ] El software Samba , que permite que los sistemas que no ejecutan sistemas Microsoft Windows compartan archivos con sistemas que sí lo ejecutan, es un ejemplo clásico de ingeniería inversa de software [ 25 ] ya que el proyecto Samba tuvo que realizar ingeniería inversa de información no publicada sobre cómo funcionaba el uso compartido de archivos de Windows para que las computadoras que no son Windows pudieran emularlo. El proyecto Wine hace lo mismo para la API de Windows , y OpenOffice.org es una de las partes que lo hace para los formatos de archivo de Microsoft Office . El proyecto ReactOS es aún más ambicioso en sus objetivos, ya que se esfuerza por proporcionar compatibilidad binaria (ABI y API) con los sistemas operativos Windows actuales de la rama NT, lo que permite que el software y los controladores escritos para Windows se ejecuten en una contraparte de software libre ( GPL ) desarrollada mediante ingeniería inversa en un entorno limpio.
Técnicas de software binario
La ingeniería inversa de software se puede realizar mediante diversos métodos. Los tres grupos principales de ingeniería inversa de software son:
- El análisis mediante la observación del intercambio de información, muy común en la ingeniería inversa de protocolos, implica el uso de analizadores de bus y analizadores de paquetes , por ejemplo, para acceder a un bus o conexión de red informática y revelar los datos de tráfico. El comportamiento del bus o la red se puede analizar para producir una implementación independiente que imite dicho comportamiento. Esto es especialmente útil para la ingeniería inversa de controladores de dispositivos . En ocasiones, la ingeniería inversa en sistemas embebidos se ve facilitada en gran medida por herramientas introducidas deliberadamente por el fabricante, como puertos JTAG u otros medios de depuración. En Microsoft Windows , son populares los depuradores de bajo nivel como SoftICE .
- El desensamblaje mediante un desensamblador consiste en leer y comprender el código máquina del programa en su forma original, únicamente con la ayuda de mnemónicos . Funciona con cualquier programa informático, pero puede llevar bastante tiempo, sobre todo para quienes no están familiarizados con el código máquina. El Desensamblador Interactivo es una herramienta especialmente popular.
- La descompilación mediante un descompilador es un proceso que intenta, con resultados variables, recrear el código fuente en algún lenguaje de alto nivel para un programa que solo está disponible en código máquina o bytecode .
Clasificación del software
La clasificación de software es el proceso de identificar similitudes entre diferentes binarios de software (como dos versiones distintas del mismo binario) para detectar relaciones de código entre muestras de software. Tradicionalmente, esta tarea se realizaba manualmente por diversas razones (como el análisis de parches para la detección de vulnerabilidades e infracciones de derechos de autor ), pero ahora puede realizarse de forma semiautomática para un gran número de muestras.
Este método se utiliza principalmente para tareas de ingeniería inversa extensas y exhaustivas (análisis completo de un algoritmo complejo o un programa informático de gran tamaño). En general, la clasificación estadística se considera un problema difícil, al igual que la clasificación de software, por lo que existen pocas soluciones o herramientas que aborden esta tarea con eficacia.
Código fuente
Varias herramientas UML se refieren al proceso de importar y analizar el código fuente para generar diagramas UML como "ingeniería inversa" .
Si bien UML es un enfoque para la "ingeniería inversa", los avances más recientes en las actividades de estandarización internacional han dado como resultado el desarrollo del Metamodelo de Descubrimiento de Conocimiento (KDM). Este estándar proporciona una ontología para la representación intermedia (o abstracta) de las construcciones de lenguajes de programación y sus interrelaciones. KDM, un estándar del Object Management Group (en proceso de convertirse también en un estándar ISO), ha comenzado a afianzarse en la industria con el desarrollo de herramientas y entornos de análisis que permiten la extracción y el análisis de código fuente, binario y de bytes. Para el análisis de código fuente, la arquitectura granular de los estándares KDM permite la extracción de flujos de sistemas de software (mapas de datos, control y llamadas), arquitecturas y conocimiento de la capa de negocio (reglas, términos y procesos). El estándar permite el uso de un formato de datos común (XMI), lo que posibilita la correlación de las distintas capas de conocimiento del sistema para un análisis detallado (como la causa raíz y el impacto) o un análisis derivado (como la extracción de procesos de negocio). Aunque los esfuerzos por representar las construcciones del lenguaje pueden ser interminables debido a la cantidad de lenguajes, la continua evolución de los lenguajes de software y el desarrollo de nuevos lenguajes, el estándar permite el uso de extensiones para admitir el amplio conjunto de lenguajes, así como su evolución. KDM es compatible con UML, BPMN, RDF y otros estándares, lo que permite la migración a otros entornos y, por lo tanto, aprovechar el conocimiento del sistema para iniciativas como la transformación de sistemas de software y el análisis de la capa de negocio empresarial.
Protocolos
Los protocolos son conjuntos de reglas que describen los formatos de los mensajes y cómo se intercambian: la máquina de estados del protocolo . Por consiguiente, el problema de la ingeniería inversa de protocolos se puede dividir en dos subproblemas: la ingeniería inversa del formato de los mensajes y la ingeniería inversa de la máquina de estados.
Tradicionalmente, los formatos de mensajes se han descifrado mediante un tedioso proceso manual, que implicaba el análisis de cómo las implementaciones de protocolo procesan los mensajes, pero investigaciones recientes han propuesto varias soluciones automáticas. [ 26 ] [ 27 ] [ 28 ] Por lo general, los enfoques automáticos agrupan los mensajes observados en clústeres utilizando diversos análisis de agrupamiento , o bien emulan la implementación del protocolo rastreando el procesamiento de los mensajes.
Se ha trabajado menos en la ingeniería inversa de máquinas de estados de protocolos. En general, las máquinas de estados de protocolo se pueden aprender mediante un proceso de aprendizaje fuera de línea , que observa pasivamente la comunicación e intenta construir la máquina de estados más general que acepte todas las secuencias de mensajes observadas, y aprendizaje en línea , que permite la generación interactiva de secuencias de sondeo de mensajes y la escucha de las respuestas a dichas secuencias. En general, se sabe que el aprendizaje fuera de línea de máquinas de estados pequeñas es NP-completo , [ 29 ] pero el aprendizaje en línea se puede realizar en tiempo polinomial. [ 30 ] Un enfoque automático fuera de línea ha sido demostrado por Comparetti et al. [ 28 ] y un enfoque en línea por Cho et al. [ 31 ]
Otros componentes de los protocolos típicos, como el cifrado y las funciones hash, también pueden ser objeto de ingeniería inversa de forma automática. Por lo general, los métodos automáticos rastrean la ejecución de las implementaciones del protocolo e intentan detectar búferes en la memoria que contienen paquetes sin cifrar. [ 32 ]
Circuitos integrados/tarjetas inteligentes
La ingeniería inversa es una forma invasiva y destructiva de analizar una tarjeta inteligente . El atacante utiliza productos químicos para eliminar capa tras capa de la tarjeta y toma fotografías con un microscopio electrónico de barrido (MEB). Esta técnica puede revelar la totalidad del hardware y el software de la tarjeta inteligente. El principal problema para el atacante es ordenar todo correctamente para descubrir cómo funciona. Los fabricantes de la tarjeta intentan ocultar claves y operaciones mezclando posiciones de memoria, por ejemplo, mediante la codificación del bus. [ 33 ] [ 34 ]
En algunos casos, incluso es posible conectar una sonda para medir voltajes mientras la tarjeta inteligente aún está operativa. Los fabricantes de la tarjeta emplean sensores para detectar y prevenir este ataque. [ 35 ] Este ataque no es muy común porque requiere una gran inversión de esfuerzo y equipo especializado que generalmente solo está disponible para los grandes fabricantes de chips. Además, la recompensa de este ataque es baja, ya que a menudo se utilizan otras técnicas de seguridad, como las cuentas fantasma. Todavía no está claro si los ataques contra tarjetas con chip y PIN para replicar datos de cifrado y luego descifrar PIN constituirían un ataque rentable contra la autenticación multifactor.
La ingeniería inversa completa se lleva a cabo en varias etapas importantes.
El primer paso tras tomar imágenes con un microscopio electrónico de barrido (SEM) es unirlas, lo cual es necesario porque cada capa no puede capturarse con una sola toma. Un SEM necesita recorrer el área del circuito y tomar varios cientos de imágenes para cubrir toda la capa. El proceso de unión de imágenes toma como entrada varios cientos de fotografías y genera como salida una única imagen correctamente superpuesta de la capa completa.
A continuación, es necesario alinear las capas unidas, ya que, tras el grabado, la muestra no puede colocarse siempre en la misma posición con respecto al microscopio electrónico de barrido (SEM). Por lo tanto, las versiones unidas no se superpondrán correctamente, como en el circuito real. Normalmente, se seleccionan tres puntos correspondientes y se aplica una transformación en función de ellos.
Para extraer la estructura del circuito, es necesario segmentar las imágenes alineadas y unidas, lo que resalta los circuitos importantes y los separa del fondo poco interesante y de los materiales aislantes.
Finalmente, se pueden seguir los cables de una capa a la siguiente y reconstruir la lista de conexiones del circuito, que contiene toda la información del mismo.
Aplicaciones militares
La ingeniería inversa se utiliza a menudo para copiar tecnologías, dispositivos o información de otras naciones, obtenidos mediante tropas regulares en el campo de batalla o a través de operaciones de inteligencia . Se empleó frecuentemente durante la Segunda Guerra Mundial y la Guerra Fría . A continuación, se presentan algunos ejemplos conocidos de la Segunda Guerra Mundial y la posguerra:
- Bidones de gasolina : Las fuerzas británicas y estadounidenses en la Segunda Guerra Mundial notaron que los alemanes tenían bidones de gasolina con un diseño excelente. Realizaron ingeniería inversa para fabricar copias de esos bidones, que se conocieron popularmente como "bidones de gasolina".
- Nakajima G5N : En 1939, la compañía estadounidense Douglas Aircraft Company vendió su prototipo de avión de pasajeros DC-4E a Imperial Japanese Airways , que secretamente actuaba como tapadera de la Armada Imperial Japonesa , la cual deseaba un bombardero estratégico de largo alcance , pero se había visto obstaculizada por la inexperiencia de la industria aeronáutica japonesa con aviones pesados de largo alcance. El DC-4E fue transferido a Nakajima Aircraft Company y desmantelado para su estudio; como tapadera, la prensa japonesa informó que se había estrellado en la bahía de Tokio . [ 36 ] [ 37 ] Las alas, los motores y el tren de aterrizaje del G5N fueron copiados directamente del DC-4E. [ 38 ]
- Panzerschreck : Los alemanes capturaron un bazooka estadounidense durante la Segunda Guerra Mundial y lo sometieron a ingeniería inversa para crear el Panzerschreck, de mayor tamaño.
- Tupolev Tu-4 : En 1944, tres bombarderos estadounidenses B-29 que realizaban misiones sobre Japón se vieron obligados a aterrizar en la Unión Soviética . Los soviéticos, que no contaban con un bombardero estratégico similar, decidieron copiar el B-29. En tres años, desarrollaron el Tu-4, una copia casi perfecta. [ 39 ]
- Radar SCR-584 : copiado por la Unión Soviética después de la Segunda Guerra Mundial, es conocido por algunas modificaciones: СЦР-584, Бинокль-Д.
- Cohete V-2 : Los Aliados occidentales capturaron documentos técnicos del V-2 y tecnologías relacionadas al final de la guerra. Los estadounidenses centraron sus esfuerzos de ingeniería inversa mediante la Operación Paperclip , que condujo al desarrollo del cohete PGM-11 Redstone . [ 40 ] Los soviéticos utilizaron ingenieros alemanes capturados para reproducir documentos y planos técnicos y trabajaron con hardware capturado para crear su clon del cohete, el R-1 . Así comenzó el programa de cohetes soviético de posguerra, que dio lugar al R-7 y al inicio de la carrera espacial .
- El misil K-13/R-3S ( nombre en clave de la OTAN AA-2 Atoll), una copia soviética de ingeniería inversa del AIM-9 Sidewinder , fue posible después de que un AIM-9B taiwanés (ROCAF) impactara un MiG-17 del EPL chino sin explotar en septiembre de 1958. [ 41 ] El misil quedó alojado en el fuselaje y el piloto regresó a la base con lo que los científicos soviéticos describirían como un curso universitario sobre desarrollo de misiles.
- Misil Toophan : En mayo de 1975, las negociaciones entre Irán y Hughes Missile Systems para la coproducción de los misiles BGM-71 TOW y Maverick se estancaron debido a desacuerdos sobre la estructura de precios. La posterior revolución de 1979 puso fin a todos los planes de dicha coproducción. Posteriormente, Irán logró aplicar ingeniería inversa al misil y ahora produce su propia copia, el Toophan.
- China ha aplicado ingeniería inversa a muchos ejemplos de hardware occidental y ruso, desde aviones de combate hasta misiles y vehículos HMMWV , como el MiG-15, 17, 19, 21 (que se convirtió en el J-2, 5, 6, 7) y el Su-33 (que se convirtió en el J-15). [ 42 ]
- Durante la Segunda Guerra Mundial, criptógrafos polacos y británicos estudiaron las máquinas de cifrado de mensajes " Enigma " alemanas capturadas en busca de vulnerabilidades. Posteriormente, simularon su funcionamiento en dispositivos electromecánicos, denominados " bombas ", que probaban todas las configuraciones posibles del codificador de las máquinas "Enigma" para descifrar los mensajes cifrados enviados por los alemanes.
- También durante la Segunda Guerra Mundial, científicos británicos analizaron y neutralizaron una serie de sistemas de radionavegación cada vez más sofisticados utilizados por la Luftwaffe para realizar misiones de bombardeo nocturno guiado. Las contramedidas británicas contra el sistema fueron tan efectivas que, en algunos casos, los aviones alemanes fueron guiados por señales para aterrizar en bases de la RAF , ya que creían haber regresado a territorio alemán.
Redes genéticas
Los conceptos de ingeniería inversa también se han aplicado a la biología , específicamente a la tarea de comprender la estructura y función de las redes reguladoras de genes . Estas regulan prácticamente todos los aspectos del comportamiento biológico y permiten a las células llevar a cabo procesos fisiológicos y respuestas a perturbaciones. Por lo tanto, comprender la estructura y el comportamiento dinámico de las redes de genes es uno de los desafíos primordiales de la biología de sistemas, con repercusiones prácticas inmediatas en diversas aplicaciones que van más allá de la investigación básica. [ 43 ]
Existen varios métodos para la ingeniería inversa de redes reguladoras de genes mediante el uso de métodos de biología molecular y ciencia de datos. Generalmente se han dividido en seis clases: [ 44 ]

- Los métodos de coexpresión se basan en la idea de que si dos genes presentan un perfil de expresión similar, pueden estar relacionados, aunque no se puede inferir causalidad simplemente a partir de la coexpresión.
- Los métodos de análisis de motivos de secuencia examinan los promotores de genes para encontrar dominios de unión de factores de transcripción específicos . Si se predice que un factor de transcripción se une al promotor de un gen específico, se puede hipotetizar una conexión reguladora.
- Los métodos de inmunoprecipitación de cromatina (ChIP, por sus siglas en inglés) investigan el perfil genómico de unión al ADN de factores de transcripción seleccionados para inferir sus redes génicas posteriores.
- Los métodos de ortología transfieren el conocimiento de la red genética de una especie a otra.
- Los métodos bibliográficos emplean minería de texto e investigación manual para identificar conexiones de redes genéticas putativas o probadas experimentalmente.
- Los métodos basados en complejos transcripcionales aprovechan la información sobre las interacciones proteína-proteína entre factores de transcripción, extendiendo así el concepto de redes genéticas para incluir complejos reguladores transcripcionales.
A menudo, la fiabilidad de las redes genéticas se comprueba mediante experimentos de perturbación genética seguidos de modelado dinámico, basado en el principio de que la eliminación de un nodo de la red tiene efectos predecibles en el funcionamiento de los nodos restantes. [ 45 ] Las aplicaciones de la ingeniería inversa de redes genéticas abarcan desde la comprensión de los mecanismos de la fisiología vegetal [ 46 ] hasta la identificación de nuevas dianas para la terapia anticancerígena. [ 47 ]
Superposición con la ley de patentes
La ingeniería inversa se aplica principalmente a la comprensión de un proceso o artefacto cuyo modo de construcción, uso o procesos internos no han sido aclarados por su creador.
Los artículos patentados no necesitan ser sometidos a ingeniería inversa para su estudio, ya que la esencia de una patente radica en que los inventores divulgan públicamente información detallada y, a cambio, reciben protección legal para la invención en cuestión. Sin embargo, un artículo fabricado bajo una o más patentes también podría incluir tecnología no patentada ni divulgada. De hecho, una motivación común para la ingeniería inversa es determinar si el producto de un competidor infringe patentes o derechos de autor .
Legalidad
Estados Unidos
En Estados Unidos, incluso si un artefacto o proceso está protegido por secretos comerciales , la ingeniería inversa del artefacto o proceso suele ser legal si se ha obtenido legítimamente. [ 48 ]
El análisis jurídico ha demostrado que la ingeniería inversa puede calificar como uso legítimo cuando la intención es estudiar cómo funciona un sistema o realizar investigaciones de seguridad, siempre que la propiedad intelectual no se redistribuya [ 49 ]. Sentencias judiciales como la de Sega Enterprises Ltd. v. Accolade, Inc. han aclarado aún más que la ingeniería inversa para obtener acceso a elementos funcionales no protegidos del software puede ser lícita según la doctrina de derechos de autor de EE. UU. [ 50 ].
La ingeniería inversa de software informático suele estar sujeta tanto al derecho contractual como al incumplimiento de contrato , así como a cualquier otra ley pertinente. Esto se debe a que la mayoría de los acuerdos de licencia de usuario final la prohíben específicamente, y los tribunales estadounidenses han dictaminado que, si existen tales cláusulas, prevalecen sobre la ley de derechos de autor que la permite expresamente (véase Bowers v. Baystate Technologies [ 51 ] [ 52 ] ). Según la Sección 103(f) de la Ley de Derechos de Autor del Milenio Digital ( 17 USC § 1201 (f) ), una persona que posea legalmente un programa puede realizar ingeniería inversa y eludir su protección si es necesario para lograr la "interoperabilidad", un término que abarca ampliamente otros dispositivos y programas que pueden interactuar con él, utilizarlo y transferir datos desde y hacia él de forma útil. Existe una exención limitada que permite que el conocimiento así obtenido se comparta y utilice con fines de interoperabilidad. [ a ]
unión Europea
La Directiva 2009/24/UE sobre la protección jurídica de los programas informáticos, que sustituyó a una directiva anterior (1991), [ 53 ] rige la ingeniería inversa en los países de la Unión Europea . [ 54 ] [ b ]
Véase también
- Ingeniería inversa asistida por IA – Rama de la informática
- Mecanismo de Anticitera : computadora astronómica analógica de la antigua Grecia.
- Inducción hacia atrás : proceso de razonamiento hacia atrás en secuencia.
- Benchmarking : comparación de métricas empresariales en un sector.
- Analizador de bus
- Chonda – Tipo de motor Honda Páginas que muestran descripciones breves de destinos de redirección
- Clon (informática) – Duplicado de un sistema
- Máquina de medición de coordenadas (MMC) : dispositivo para medir la geometría de los objetos.
- Transformación de código : método utilizado en la ofuscación de software.
- Estación de juegos virtuales Connectix
- Falsificación : Realizar una copia o imitación que se presenta como el original. Páginas que muestran breves descripciones de los destinos de redirección.
- Criptoanálisis : estudio del análisis de sistemas de información para descubrir sus aspectos ocultos.
- Descompilar : programa que traduce un ejecutable a código fuente. Páginas que muestran breves descripciones de los destinos de redirección.
- Desformulación – Conjunto de procedimientos analíticos en química
- Ley de Derechos de Autor del Milenio Digital (DMCA) – Ley de derechos de autor de los Estados Unidos de 1998
- Desensamblador : programa informático para traducir el lenguaje máquina al lenguaje ensamblador.
- Dongle – Pequeña pieza de hardware informático
- Ingeniería forense : investigación de fallos asociados a la intervención legal.
- Tomografía computarizada industrial : proceso tomográfico asistido por computadora. Páginas que muestran breves descripciones de destinos de redireccionamiento.
- Desensamblador interactivo : herramienta de ingeniería inversa de software
- Metamodelo de descubrimiento de conocimiento : especificación del grupo de gestión de objetos
- Escáner láser : escaneo de un objeto o entorno para recopilar datos sobre su forma. Páginas que muestran breves descripciones de destinos de redirección.
- Lista de temas de producción
- Listeroid Engines – Fabricante británico de maquinaria agrícola. Páginas que muestran breves descripciones de los destinos de redireccionamiento.
- Analizador lógico : instrumento de prueba electrónico que mide múltiples señales de un circuito.
- Paycheck (película) – Película estadounidense de ciencia ficción y acción de 2003 dirigida por John Woo
- Reutilización : Utilizar un objeto destinado a un propósito de una manera alternativa.
- Retrodicción (experimentación mental) – Situación hipotética
- Arquitectura inversa : concepto en el análisis de sistemas.
- Ingeniería de ida y vuelta
- Arqueología del software : estudio de las implementaciones de software heredado.
- Cracking de software : modificación de software, a menudo para usarlo gratis.
- Ingeniería de valor : análisis de ingeniería que maximiza la relación función-costo.
Notas
- ↑ La sección establece:(f) Ingeniería inversa.—(1) No obstante lo dispuesto en el apartado (a)(1)(A), una persona que haya obtenido legalmente el derecho a usar una copia de un programa informático puede eludir una medida tecnológica que controle efectivamente el acceso a una parte particular de ese programa con el único propósito de identificar y analizar aquellos elementos del programa que sean necesarios para lograr la interoperabilidad de un programa informático creado independientemente con otros programas, y que no hayan estado previamente fácilmente disponibles para la persona que realiza la elusión, en la medida en que tales actos de identificación y análisis no constituyan una infracción en virtud de este título.(2) No obstante lo dispuesto en los apartados (a)(2) y (b), una persona puede desarrollar y emplear medios tecnológicos para eludir una medida tecnológica, o para eludir la protección que ofrece una medida tecnológica, con el fin de permitir la identificación y el análisis en virtud del párrafo (1), o con el propósito de permitir la interoperabilidad de un programa informático creado independientemente con otros programas, si tales medios son necesarios para lograr dicha interoperabilidad, en la medida en que hacerlo no constituya una infracción en virtud de este título.(3) La información obtenida mediante los actos permitidos en el párrafo (1) y los medios permitidos en el párrafo (2) podrá ponerse a disposición de terceros si la persona a que se refiere el párrafo (1) o (2), según corresponda, proporciona dicha información o medios únicamente con el fin de permitir la interoperabilidad de un programa informático creado de forma independiente con otros programas, y en la medida en que hacerlo no constituya una infracción en virtud de este título ni viole ninguna ley aplicable distinta de esta sección.(4) A los efectos de este apartado, el término «interoperabilidad» significa la capacidad de los programas informáticos para intercambiar información y de dichos programas para utilizar mutuamente la información que se ha intercambiado.
- ↑ La directiva establece:
La reproducción, traducción, adaptación o transformación no autorizada del código fuente de un programa informático constituye una infracción de los derechos exclusivos del autor. No obstante, pueden existir circunstancias en las que dicha reproducción del código y traducción sean indispensables para obtener la información necesaria para lograr la interoperabilidad de un programa creado de forma independiente con otros programas. Por consiguiente, debe considerarse que, únicamente en estas circunstancias limitadas, la realización de los actos de reproducción y traducción por parte de quien tenga derecho a utilizar una copia del programa, o en su nombre, es legítima y compatible con las buenas prácticas, y por lo tanto no requiere la autorización del titular de los derechos. El objetivo de esta excepción es permitir la conexión de todos los componentes de un sistema informático, incluidos los de diferentes fabricantes, para que puedan funcionar conjuntamente. Esta excepción a los derechos exclusivos del autor no debe utilizarse de forma que perjudique los intereses legítimos del titular de los derechos ni que entre en conflicto con el uso normal del programa.
Referencias
- ↑ "¿Qué es la ingeniería inversa? ¿Cómo funciona?" . SearchSoftwareQuality . Consultado el 27 de julio de 2022 .
- ↑ "Ingeniería inversa" . ethics.csc.ncsu.edu . Consultado el 27 de julio de 2022 .
- ↑ García, Jorge (diciembre de 2015). "Desmontando bloques: un modelo de ingeniería inversa y heurísticas aplicables" (PDF) . Core.ac.uk. Consultado el 4 de junio de 2023 .
- ↑Error de cita: La referencia con nombre
:1fue invocada pero nunca definida (consulte la página de ayuda ). - ↑ Thayer, Ken. "¿Cómo funciona la ingeniería inversa?" . globalspec . IEEE Global Spec . Consultado el 26 de febrero de 2018 .
- ↑ Villaverde, Alejandro F.; Banga, Julio R. (6 de febrero de 2014). "Ingeniería inversa e identificación en biología de sistemas: estrategias, perspectivas y desafíos" . Journal of the Royal Society Interface . 11 (91) 20130505. doi : 10.1098/rsif.2013.0505 . PMC 3869153. PMID 24307566 .
- 1 2 3 Chikofsky, EJ y Cross, JH II (1990). "Ingeniería inversa y recuperación de diseño: una taxonomía". IEEE Software . 7 (1): 13– 17. Bibcode : 1990ISoft...7a..13C . doi : 10.1109/52.43044 . S2CID 16266661 .
- 1 2 Un estudio sobre ingeniería inversa y comprensión de programas. Michael L. Nelson, 19 de abril de 1996, ODU CS 551 – Estudio de ingeniería de software. arXiv : cs/0503068v1
- ↑ Vinesh Raja; Kiran J. Fernandes (2007). Ingeniería inversa: una perspectiva industrial . Springer Science & Business Media. pág. 3. ISBN 978-1-84628-856-2.
- ↑ Jonathan Band; Masanobu Katoh (2011). Interfaces on Trial 2.0 . MIT Press. pág. 136. ISBN 978-0-262-29446-1.
- 1 2 3 Chikofsky, EJ; Cross, JH (enero de 1990). "Ingeniería inversa y recuperación de diseño: una taxonomía" (PDF) . IEEE Software . 7 (1): 13– 17. Bibcode : 1990ISoft...7a..13C . doi : 10.1109/52.43044 . S2CID 16266661. Archivado del original (PDF) el 17 de abril de 2018. Recuperado el 2 de julio de 2012 .
- 1 2 3 4 5 6 7 8 Eilam, Eldad (2005). Reversing: secrets of reverse engineering . John Wiley & Sons. ISBN 978-0-7645-7481-8.
- ↑ "ResHax" . ResHax . 12 de noviembre de 2025. Consultado el 19 de noviembre de 2025 .
- ↑ Glosario de seguridad de Internet del RFC 2828 del Grupo de Trabajo de Ingeniería de Internet
- ↑ Karwowski, Waldemar; Trzcielinski, Stefan; Mrugalsk, Beata; DiNicolantonio, Massimo; Rossi, Emilio (2018). Avances en fabricación, gestión de la producción y control de procesos . págs. 287–288 .
- ↑ Varady, T; Martin, R; Cox, J (1997). "Ingeniería inversa de modelos geométricos: una introducción". Computer-Aided Design . 29 (4): 255– 268. Bibcode : 1997CAD....29..255V . doi : 10.1016/S0010-4485(96)00054-1 .
- ↑ "Ingeniería inversa" . Físico Digital .
- ↑ Patel, Suresh (25 de agosto de 2022). "Ingeniería inversa de una placa de circuito impreso" . Diseño electrónico . Recuperado el 1 de febrero de 2024 .
- ↑ Patel, Suresh (25 de agosto de 2022). "Ingeniería inversa de una placa de circuito impreso" . Diseño electrónico . Recuperado el 1 de febrero de 2024 .
- ↑ Warden, R. (1992). Reutilización de software e ingeniería inversa en la práctica . Londres, Inglaterra: Chapman & Hall. pp. 283–305 .
- ↑ "Conferencia de Trabajo sobre Ingeniería Inversa (WCRE)" . uni-trier.de . Bibliografía de Ciencias de la Computación. Archivado del original el 14 de marzo de 2017. Consultado el 22 de febrero de 2018 .
- ↑ Shahbaz, Muzammil (2012). Ingeniería inversa y pruebas de componentes de software de caja negra: mediante técnicas de inferencia gramatical . LAP LAMBERT Academic Publishing. ISBN 978-3-659-14073-0.
- ↑ Chuvakin, Anton; Cyrus Peikari (enero de 2004). Security Warrior (1.ª ed.). O'Reilly. Archivado del original el 22 de mayo de 2006. Recuperado el 25 de mayo de 2006 .
- ↑ Samuelson, Pamela y Scotchmer, Suzanne (2002). «El derecho y la economía de la ingeniería inversa» . Yale Law Journal . 111 (7): 1575– 1663. doi : 10.2307/797533 . JSTOR 797533. Archivado del original el 15 de julio de 2010. Recuperado el 31 de octubre de 2011 .
- ↑ "Samba: Una introducción" . 27 de noviembre de 2001. Consultado el 7 de mayo de 2009 .
- ↑ W. Cui, J. Kannan y HJ Wang. Discoverer: Ingeniería inversa automática de protocolos a partir de rastros de red. En Actas del 16.º Simposio de Seguridad de USENIX, págs. 1-14.
- ↑ W. Cui, M. Peinado, K. Chen, HJ Wang y L. Irún-Briz. Tupni: Ingeniería inversa automática de formatos de entrada. En Actas de la 15.ª Conferencia ACM sobre Seguridad Informática y de Comunicaciones, págs. 391-402. ACM, octubre de 2008.
- 1 2 P. M. Comparetti, G. Wondracek, C. Kruegel y E. Kirda. Prospex: Extracción de especificaciones de protocolo. En Actas del 30.º Simposio IEEE de Seguridad y Privacidad de 2009, págs. 110-125, Washington, 2009. IEEE Computer Society.
- ↑ Gold, E (1978). "Complejidad de la identificación de autómatas a partir de datos dados" . Information and Control . 37 (3): 302– 320. doi : 10.1016/S0019-9958(78)90562-4 .
- ↑ D. Angluin (1987). "Aprendizaje de conjuntos regulares a partir de consultas y contraejemplos" . Information and Computation . 75 (2): 87– 106. doi : 10.1016/0890-5401(87)90052-6 .
- ↑ CY Cho, D. Babic, R. Shin y D. Song. Inferencia y análisis de modelos formales de protocolos de comando y control de botnets , Conferencia ACM de 2010 sobre seguridad informática y de comunicaciones.
- ↑ Polyglot: extracción automática del formato de mensajes de protocolo mediante análisis binario dinámico . J. Caballero, H. Yin, Z. Liang y D. Song. Actas de la 14.ª conferencia ACM sobre seguridad informática y de comunicaciones, págs. 317-329.
- ↑ Wolfgang Rankl, Wolfgang Effing, Manual de tarjetas inteligentes (2004)
- ↑ T. Welz: Las tarjetas inteligentes como métodos de pago(2008), Seminario ITS-Seguridad Ruhr-Universität Bochum
- ↑ David C. Musker: Protección y explotación de la propiedad intelectual en electrónica. Archivado el 9 de julio de 2011 en Wayback Machine , Conferencias IBC, 10 de junio de 1998.
- ↑ Francillon, René J. (1988) [1979]. McDonnell Douglas Aircraft since 1920. Vol. 1 (2.ª ed.). Annapolis, Maryland: Naval Institute Press. pp. 265–268 . ISBN 0-87021-428-4.
- ↑ Westell, Freeman (noviembre de 1999). "Grandes aviones, grandes motores y mayores dolores de cabeza: la construcción de los primeros bombarderos estratégicos experimentales". Airpower . 29 (6): 18, 49– 50.
- ↑ Angelucci, Enzo; Matricardi, Paolo (1978). -Aviones de la Segunda Guerra Mundial: Volumen 2. Chicago: Rand McNally & Company. pág. 127. ISBN 0-528-88171-X.
- ^ Yeam Gordon y Vladimir Rigmant, Tupolev Tu-4: Superfortaleza soviética (Hinckley, Reino Unido: Midland, 2002).
- ↑ "Cohete Redstone" . centennialofflight.net . Consultado el 27 de abril de 2010 .
- ↑ "La Fuerza Aérea China: Conceptos, funciones y capacidades en evolución", Centro para el Estudio de Asuntos Militares Chinos (EE. UU.), por National Defense University Press, pág. 277
- ↑ Chandrashekar, S., R. Nagappa, L. Sundaresan y N. Ramani. 2011. Tecnología e innovación en China: un estudio de caso del desarrollo de superaleaciones monocristalinas para álabes de turbinas de aeronaves, R4–11. Instituto Nacional de Estudios Avanzados ISSSP, Bangalore. http://isssp.in/wp-content/uploads/2013/01/Technology-and-Innovation-in-China-A-case-Study-of-Single-Crystal4.pdf ; y Dillon Zhou, "Avión de combate chino J-15: Funcionarios chinos defienden el nuevo caza como de diseño original chino, pero persisten las dudas", Mic, 16 de diciembre de 2012, https://www.mic.com/articles/20270/china-j-15-fighter-jet-chinese-officials-defend-new-fighter-as-chinese-original-but-questions-remain
- ↑ Giorgi, Federico M. (2020). "Ingeniería inversa de redes genéticas: la próxima generación". Biochimica et Biophysica Acta (BBA) - Mecanismos de regulación genética . 1863 ( 6) 194523. doi : 10.1016/j.bbagrm.2020.194523 . hdl : 11585/753853 . ISSN 1874-9399 . PMID 32145356. S2CID 212629142 .
- 1 2 Mercatelli, Daniele; Scalambra, Laura; Triboli, Luca; Ray, Forest; Giorgi, Federico M. (2020). "Recursos de inferencia de redes reguladoras de genes: una visión general práctica". Biochimica et Biophysica Acta (BBA) - Mecanismos de regulación genética . 1863 (6) 194430. doi : 10.1016/j.bbagrm.2019.194430 . ISSN 1874-9399 . PMID 31678629. S2CID 207895066 .
- ↑ Tegner, J.; Yeung, MKS; Hasty, J.; Collins, JJ (2003). "Ingeniería inversa de redes genéticas: Integración de perturbaciones genéticas con modelado dinámico" . Actas de la Academia Nacional de Ciencias . 100 (10): 5944– 5949. Bibcode : 2003PNAS..100.5944T . doi : 10.1073/pnas.0933416100 . ISSN 0027-8424 . PMC 156306. PMID 12730377 .
- ↑ Friedel, Swetlana; Usadel, Björn; von Wirén, Nicolaus; Sreenivasulu, Nese (2012). "Ingeniería inversa: un componente clave de la biología de sistemas para desentrañar la comunicación cruzada global del estrés abiótico" . Frontiers in Plant Science . 3 : 294. Bibcode : 2012FrPS....3..294F . doi : 10.3389/fpls.2012.00294 . ISSN 1664-462X . PMC 3533172. PMID 23293646 .
- ↑ Lefebvre, Celine; Rieckhof, Gabrielle; Califano, Andrea (2012). "Ingeniería inversa de redes reguladoras humanas" . Wiley Interdisciplinary Reviews: Systems Biology and Medicine . 4 (4): 311– 325. doi : 10.1002/wsbm.1159 . ISSN 1939-5094 . PMC 4128340. PMID 22246697 .
- ↑ "Secretos comerciales 101", Artículo destacado, marzo de 2011. ASME. Consultado el 31 de octubre de 2013.
- ↑ Samuelson, P. (2003). "Ingeniería inversa bajo la ley de derechos de autor." Communications of the ACM, 46(8), 15–20.
- ↑ Sega Enterprises Ltd. v. Accolade, Inc. , 977 F.2d 1510 (Tribunal de Apelaciones del Noveno Circuito de los Estados Unidos, 1992).
- ↑ Discusión sobre Baystate vs. Bowers . Utsystem.edu. Consultado el 29 de mayo de 2011.
- ↑ Gross, Grant. (26 de junio de 2003) Un caso contractual podría perjudicar la ingeniería inversa | Developer World . InfoWorld. Consultado el 29 de mayo de 2011.
- ↑ Directiva 91/250/CEE del Consejo, de 14 de mayo de 1991, relativa a la protección jurídica de los programas informáticos.
- ↑ Directiva 2009/24/CE del Parlamento Europeo y del Consejo, de 23 de abril de 2009, relativa a la protección jurídica de los programas informáticos (versión codificada)
Fuentes
- Eilam, Eldad (2005). Reversing: Secrets of Reverse Engineering . Wiley Publishing . p. 595. ISBN 978-0-7645-7481-8.
- Elvidge, Julia, "Uso de la ingeniería inversa para descubrir infracciones de patentes", Chipworks, septiembre de 2010. Disponible en línea: http://www.photonics.com/Article.aspx?AID=44063
- Cipresso, Teodoro (2009). "Educación en ingeniería inversa de software" . Tesis de maestría de SJSU . Recuperado el 22 de agosto de 2009 .
- Hausi A. Müller y Holger M. Kienle, «Una breve introducción a la ingeniería inversa de software», Informe técnico, Universidad de Victoria, 17 páginas, marzo de 2009. Disponible en línea: http://holgerkienle.wikispaces.com/file/view/MK-UVic-09.pdf
- Heines, Henry, "Determinación de la infracción mediante difracción de rayos X", Chemical Engineering Process , enero de 1999 (ejemplo de ingeniería inversa utilizada para detectar la infracción de propiedad intelectual).
- Huang, Andrew (2003). Hacking the Xbox: An Introduction to Reverse Engineering . No Starch Press . ISBN 978-1-59327-029-2.
- James, Dick (19 de enero de 2006). "La ingeniería inversa proporciona conocimiento del producto y facilita la difusión de la tecnología" . Electronic Design . Penton Media, Inc. Recuperado el 3 de febrero de 2009 .
- Messler, Robert (2013). Ingeniería inversa: mecanismos, estructuras, sistemas y materiales . McGraw Hill . ISBN 978-0-07-182516-0.(Introducción al desmontaje de hardware, incluyendo metodología y objetivos)
- Raja, Vinesh; Fernandes, Kiran J. (2008). Ingeniería inversa: una perspectiva industrial . Springer . pág. 242. ISBN 978-1-84628-855-5.
- Samuelson, Pamela y Scotchmer, Suzanne, «El derecho y la economía de la ingeniería inversa», 111 Yale LJ 1575 (2002). Disponible en línea: http://people.ischool.berkeley.edu/~pam/papers/l&e%20reveng3.pdf
- Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. Undocumented DOS: Guía del programador para funciones y estructuras de datos reservadas de MS-DOS, ampliada para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2.ª ed.). Reading, Massachusetts: Addison Wesley . págs. 229-241 . ISBN 0-201-63287-X.(xviii+856+vi páginas, disquete de 3,5") Erratas:(Nota: Sobre la metodología general de ingeniería inversa, aplicada al software de consumo masivo: un programa para explorar DOS y desensamblar DOS).
- Schulman, Andrew; et al. (1992). Undocumented Windows: A Programmer's Guide to Reserved Microsoft Windows API Functions . Addison Wesley . ISBN 978-0-201-60834-2.(págs. 59-188 sobre metodología general de ingeniería inversa, aplicada al software de consumo masivo: examen de ejecutables de Windows, desensamblaje de Windows, herramientas para explorar Windows)
- Schulman, Andrew, «Ocultos a plena vista: El uso de la ingeniería inversa para descubrir la infracción de patentes de software», Intellectual Property Today , noviembre de 2010. Disponible en línea: http://www.iptoday.com/issues/2010/11/hiding-in-plain-sight-using-reverse-engineering-to-uncover-software-patent-infringement.asp
- Schulman, Andrew, «Abierto a inspección: Uso de la ingeniería inversa para descubrir el estado de la técnica del software», New Matter (Sección de Propiedad Intelectual del Colegio de Abogados del Estado de California), verano de 2011 (Parte 1); otoño de 2011 (Parte 2). Disponible en línea: http://www.SoftwareLitigationConsulting.com
- Thumm, Mike (2007). "Tácticas de comunicación" (PDF) . Conferencia IEEE 2007 sobre circuitos integrados personalizados (CICC) . IEEE, Inc. Recuperado el 3 de febrero de 2009 .
- Ingeniería inversa
- Espionaje
- Derecho de patentes
- Ingeniería industrial
- Inteligencia técnica
- carreras tecnológicas
- problemas NP-completos
- Ingeniería de ciberseguridad