Tecnología

Inicio

Java de código de bytes de ingeniería inversa

Java de código de bytes de ingeniería inversa


La ingeniería inversa es el arte de dumping los comandos individuales, la máquina de nivel que conforman un programa compilado y utilizarlo para recrear su código fuente original. Mientras que cualquier programa compilado puede ser ingeniería inversa, el código de bytes que conforma compila los programas Java conservan varias características de identificación que hacen que la ingeniería inversa que sea mucho más fácil que otro código compilado.

Código de bytes

Java no se puede compilar directamente en código legible por la máquina, sino más bien en lo que se llama "código de bytes". El programador distribuye el código de bytes, y cuando los usuarios inician el programa, la máquina virtual de Java compila el código de bytes en código máquina específico de la plataforma. Si bien esto da Java la ventaja de permitir un único conjunto de código fuente para trabajar en varias máquinas, el código de bytes conserva varias características descriptivas del código fuente que hacen que sea más fácil para los piratas informáticos para reconstruir el código fuente original.

Ingeniería inversa

Los piratas informáticos pueden leer el código de bytes de una aplicación Java directamente, utilizando la biblioteca "java.io.InputStream". Con esto, pueden ver los componentes básicos y los comandos de nivel de código de bytes que constituyen ese archivo de clase en particular. Los piratas informáticos pueden realizar un seguimiento de las diferentes variables a través de diferentes métodos de reconstruir gradualmente el flujo de control del programa. Una vez que los hackers hacen esto, ellos pueden replicar el código fuente de la aplicación para diferentes propósitos maliciosos.

ataques

Después de un hacker ingeniería inversa de un programa en particular, hay varias formas en que puede aprovechar esto para tener acceso a las máquinas que ejecutan el programa. Estos incluyen las vulnerabilidades para explotar para que el programa ejecute código malicioso con el permiso del usuario, o ejecutar un "hombre en el medio" ataque. En este último escenario, el hacker añadiría su propio código malicioso código fuente de la aplicación, recompilar, y lo puso en Internet bajo la apariencia del programa original. usuarios involuntarios pueden descargar la aplicación y ejecutar directamente el código del usuario remoto.

La prevención de la ingeniería inversa

Debido a la naturaleza de código de bytes de Java, es casi imposible que nadie deje de ver el código de bytes de núcleo. Mientras que los métodos como el cifrado pueden proporcionar un grado de protección, más eficaz será el cifrado es, cuanto menos independiente de la plataforma se convierte en el programa. Los programadores pueden, sin embargo, lanzar ingeniería inversa con algunos trucos de codificación. Estos incluyen la escritura de funciones que son irrelevantes para la ejecución real del programa, lo que puede desequilibrar los que tratan de alterar el diseño del programa.