AVILX
REVERSING WRITEUP · CRACKMES.ONE · 2026
nasm crack
Binario en Assembler puro — Password en texto claro
| Autor reto | BitFriends |
| Plataforma | crackmes.one |
| Dificultad | 1.0 / 5.0 |
| Arquitectura | x86-64 — Unix/Linux |
| Modo | Normal Mode — Análisis estático |
| Analista | Jesús Ávila (Avilx) |
| Fecha | 07 de Septiembre 2026 |
| Portafolio | avilx.dev |
Documentación de aprendizaje en reversing | Entorno controlado
Información del Binario
| Campo | Valor |
|---|---|
| Nombre | nasm_crack |
| Tipo | ELF 64-bit LSB executable |
| Arquitectura | x86-64 |
| Enlazado | statically linked |
| Stripped | not stripped |
| Stack Canary | No Canary Found |
| NX | No GNU_STACK |
| PIE | PIE Disabled |
| RELRO | No RELRO |
Este binario es statically linked, lo que significa que no depende de librerías externas. Todo el código está dentro del propio ejecutable. Además no tiene ninguna protección activa: sin canary, sin PIE, sin RELRO y sin NX. Es el binario menos protegido de los analizados hasta ahora. Fue escrito directamente en NASM (Netwide Assembler) sin pasar por un compilador de C.
Reconocimiento
Análisis inicial
Strings
$ strings -a ./nasm_crack | grep -v "^_Z\|GLIBC\|\.so\|\."
[Mensajes del programa]
Enter your password:
Correct!
Wrong!
[Strings sospechosos]
supersecret
[Variables/etiquetas del programa]
msg1
len1
correct
lenc
wrong
lenw
passwd
input
correct_func
El comando
strings reveló el password supersecret en texto completamente claro. Las etiquetas passwd, input y correct_func son nombres de etiquetas NASM del código fuente, visibles porque el binario no está stripped. El programa usa una función correct_func para validar el password.El password es
supersecret. Al estar escrito en NASM puro, el password se almacena como un string literal en la sección de datos del binario, directamente accesible con strings. No es necesario analizar el assembly para resolver este crackme.Ejecución inicial
$ ./nasm_crack
Enter your password: test
Wrong!
Solución
Password encontrado
PASSWORD ENCONTRADO
$ ./nasm_crack
Enter your password: supersecret
Correct!
El password
supersecret fue verificado exitosamente. El programa respondió: “Correct!”Reflexión Final
Qué salió bien
El reconocimiento inicial con strings resolvió el crackme de inmediato. Es el segundo crackme consecutivo resuelto con esta técnica, confirmando que siempre es el primer paso a ejecutar.
Lecciones aprendidas
Este crackme introduce una característica importante: es el primer binario statically linked analizado. A diferencia de los anteriores que dependían de librerías externas (libc, libstdc++), este contiene todo el código necesario dentro del propio ejecutable.
También es el primer binario escrito directamente en NASM sin pasar por un compilador de C. Las etiquetas del código NASM (passwd, correct_func, msg1) son visibles en los símbolos porque el binario no está stripped, lo que facilita enormemente el análisis.
La ausencia total de protecciones (sin canary, sin PIE, sin RELRO, sin NX) hace que este binario sea vulnerable a múltiples tipos de ataque además del password en claro.
Tiempo total
| Fase | Tiempo |
|---|---|
| Reconocimiento con strings | 5 minutos |
| Verificación | 2 minutos |
| Total | 7 minutos |