Ingeniería de software inversa

Ingeniería de software inverso es un campo relativamente nuevo que requiere un conocimiento exhaustivo de todos los niveles de software: idiomas de alto nivel, sistemas operativos y lenguaje de ensamblaje. La ingeniería de software inversa es un tipo de ingeniería inversa (las personas tienen máquinas de ingeniería inversa durante décadas) por la cual los programadores deben examinar y analizar el lenguaje de ensamblaje de bajo nivel para comprender y cambiar cómo funciona el programa. La mayoría de las personas asumirían que la ingeniería de software inversa son las cosas desagradables que las personas hacen para eludir las leyes de derechos de autor y vencer a los competidores de software, y serían parcialmente correctos.

La ingeniería inversa definitivamente se usa para robar software y para modificarlo ilegalmente también. Juegos muy populares como Halo 2, Warcraft y Doom han sido sometidos a ingeniería de software inversa por algunas personas. Sin embargo, hay otra aplicación de ingeniería de software inversa que es inmensamente útil. Es luchar contra virus, gusanos y otros tipos de malware. Hay muchas otras razones para cavar un software de ingeniería profunda e inversa, lo que hace que el software sea interoperable, comprenda el software cuando no hay más documentación, pruebas de seguridad (es decir, descubrir si el software puede soportar intentos de ingeniería y modificación inversa), y la simple razón de la razón simple de Aprender cómo funcionan las cosas.

El área legal para la ingeniería de software inversa sigue siendo confuso, sin embargo, existen ciertas reglas claras. Una empresa puede mirar el código de ensamblaje para obtener una comprensión de cómo funciona un producto, pero no puede simplemente copiar y pegar algo que encuentre.

para ser bueno en la ingeniería de software inversa, Primero debe comprender el lenguaje de ensamblaje. En el gran esquema de software de computadora, el lenguaje de ensamblaje es el grupo de trabajadores invisibles que traducen las instrucciones relativamente fáciles de los codificadores en los que El idioma de ensamblaje está lejos de ser de inglés; Más bien, se ve más cerca de un lenguaje diferente del espacio exterior. Está lleno de instrucciones como Pop Eax, Movsx DH y JZE. Es mucho mejor que leer 0100010010110, pero todavía es muy desafiante.

READ  Divertidos bocadillos saludables para niños sobre la marcha

Pero el lenguaje de ensamblaje en sí no es un sistema uniforme. La versión más útil del lenguaje de ensamblaje para conocer es el lenguaje Intel IA-32. Intel ha sido inteligente para mantener las versiones de lenguaje de ensamblaje más recientes compatibles con el retroceso. El 80286 original lanzado en 1982 comparte un conjunto de instrucciones similar pero mucho más simple que los modelos Pentium más nuevos.

Dado que la mayoría del software está escrito en C y C ++, el conocimiento de esos idiomas es vital. Existen ciertos patrones de lenguaje de ensamblaje para construcciones de lenguaje de nivel superior, como matrices y declaraciones de conmutadores. Comprender esta asignación ayuda al ingeniero de software a resolver las cosas más rápidamente.

Existen muchas herramientas muy útiles para extraer el código de lenguaje de ensamblaje de un programa. El más útil hoy se llama IDA Pro, creado por los rayos hexadecimales de la compañía y se vende por $ 539 por la licencia estándar (versión avanzada por aproximadamente $ 1000). Proporciona al programador muchas herramientas para manipular, comprender y organizar el código de ensamblaje. Hay una serie de otras herramientas más asequibles, como Ollydbg, Softice , y Windbg . en general, la mayor cantidad de conocimiento tiene sobre el software y el hardware de la computadora, el Más uno puede entender y así modificar el código.

referencia: