Lo que estás haciendo se llama ingeniería inversa y un ejecutable. No es inusual que una persona que está codificando una contraseña en el código fuente (una estrategia de seguridad horrible) haga un intento amateur de evitar que aparezca en los datos estáticos intactos. Sin embargo, la contraseña PAssw0rd puede no estar relacionada con la actual. Las diversas respuestas del programa son obviamente intencionales, por lo que las autoridades pueden ser una pista falsa deliberada.
Varias herramientas son comunes en los esfuerzos de ingeniería inversa.
- El comando "archivo" que toma la ruta del archivo como primer parámetro para que pueda determinar (en la mayoría de los casos) qué tipo de ejecutable tiene.
- Desensambladores que muestran EXACTAMENTE lo que hace el ejecutable, pero es difícil de leer para aquellos que no escriben código de ensamblaje en esa arquitectura específica o tienen experiencia con el desensamblaje.
- Los descompiladores como Boomerang, Hex-rays y Snowman pueden proporcionar una mayor legibilidad, pero no recuperan los nombres de las variables o la sintaxis del programa original y no son 100% confiables, especialmente en los casos en que los ingenieros que crearon el ejecutable probado con estos paquetes y trató de ofuscar la seguridad aún más.
- diagramas de flujo de datos o tablas. No conozco ninguna herramienta gratuita para hacer esto automáticamente, pero un script de Python o Bash sobre la parte superior de un analizador de texto de la salida del ensamblaje (que se puede escribir en sed o Perl) puede ser útil.
- Lápiz y papel, créanlo o no, para anotar flujos e ideas
Un enfoque común es buscar dos cosas en el código descompilado o desensamblado.
- Funciones criptográficas, como un algoritmo hash o cifrado
- La solicitud del usuario para la contraseña y la lectura posterior de la
entrada de usuario
Estos son los dos puntos finales en el flujo de datos. Deseará realizar un seguimiento desde el lugar donde la contraseña ingresa a los algoritmos de criptografía y rastrear hacia adelante la entrada de usuario de la contraseña, con la esperanza de encontrar dónde se encuentran los dos extremos.
Una vez que haya rastreado la ruta entre la entrada del usuario y los componentes de autenticación, podrá ver el mecanismo intermedio. Si la seguridad se realizó correctamente, será un valor hash creado correctamente y su intento terminará mal, pero sospecho que, al ser un ejercicio, será posible obtener resultados favorables.