¿Cuáles son las diferencias y similitudes entre la aplicación web y la ingeniería inversa binaria?

Comencemos definiendo algunos términos:

  1. Binario es generalmente un nombre para un formato de archivo ejecutable, que generalmente es el resultado de compilar el código fuente de algún programa. Puede ser nativo (como en el caso de C / C ++) o de una VM (como en el caso de Java y Python). Asumiré que te refieres a un nativo.
  2. La aplicación web es una solución, puede involucrar front-end (por ejemplo, HTML, JavaScript, CSS, etc.), back-end (PHP, NodeJS, Python, etc.), ambos y más. Asumiré que se refiere a una página web (HTML, JavaScript, CSS, etc.)

Las similitudes entre el binario nativo y la página web son:

  1. En ambos casos, contienen código (y potencialmente datos)
  2. En ambos casos, habrá algún tipo de formato que definirá: principio, final, quizás metadatos, etc. de código contenido, datos, etc.

La diferencia entre el binario nativo y la página web es que están siendo consumidos por diferentes aplicaciones e ingeniería inversa cada uno de ellos requiere la comprensión de la aplicación que consume.

La página web generalmente es consumida por un navegador web. Un navegador web toma uno o más formatos como entrada. Tomemos HTML como ejemplo. El archivo HTML puede contener uno o más elementos, un elemento HTML como SCRIPT puede contener código JavaScript (o un enlace a él), etc. La salida de la página HTML será (en la mayoría de los casos) para mostrar contenido en la pantalla. Si aplicamos ingeniería inversa a una página web, esperamos encontrar elementos que describan y le indiquen al navegador web qué hacer.

Por otro lado, Native Binary es consumido por un Sistema Operativo (SO). Un sistema operativo toma uno o más formatos ejecutables. Tomemos Windows como ejemplo, en ese caso puede ser PE (Portable Ejecutable) o como la mayoría de la gente lo conoce como un archivo EXE. El juego final de un binario nativo será ejecutar algún código en la CPU que pueda implicar llamar a la API del sistema operativo. Si aplicamos ingeniería inversa a un binario nativo, esperamos encontrar elementos (códigos de operación de CPU, datos, etc.) que describan para la CPU qué hacer.

Bueno, revertir el uso de ida y depuradores ha facilitado la tarea de los crackers. Especialmente IDA, que es muy potente, tiene como resultado dar el 95% del código fuente (paquete profesional), lo que hace comprender el algoritmo y descifrarlo.
La aplicación web se define a su manera. Una aplicación web es algo que se ejecuta en el navegador o se crea usando idiomas web, por lo que tiene debilidad en muchas formas.
Las diferencias serían, como dije, una ingeniería inversa es más sobre registros y el algoritmo de cifrado. Ambos son dominios diferentes.