OllyDbg en Kali Linux con Wine
OllyDbg en Kali Linux con Wine
Instalar y usar OllyDbg en Kali Linux tiene su truco, principalmente porque OllyDbg es una herramienta nativa de Windows (32 bits) y Kali es una distribución de Linux. Sin embargo, se puede lograr perfectamente usando Wine.
Aquí tienes una guía rápida para ponerlo en marcha en español:
1. Instalación de dependencias
Primero, asegúrate de tener soporte para aplicaciones de 32 bits y Wine instalado en tu Kali:
Habilitar 32 bits:
sudo dpkg --add-architecture i386Actualizar:
sudo apt updateInstalar Wine:
sudo apt install wine wine32
2. Descargar OllyDbg
Dado que buscas la versión en español, debes tener en cuenta que OllyDbg no tiene un selector de idioma oficial dentro del programa. Necesitas una versión traducida (parcheada).
Paso A: Descarga el
.zipde OllyDbg (puedes buscar "OllyDbg v1.10 español" en sitios como Ricardo Narvaja o comunidades de ingeniería inversa).Paso B: Descomprime el archivo en una carpeta de tu elección (ej.
~/Documents/ollydbg).
3. Ejecución en Kali
Para abrirlo, navega hasta la carpeta desde la terminal y ejecuta:
wine OLLYDBG.EXE
Configuración inicial recomendada:
Ubicación de Plugins: Ve a
Options->Appearance->Directoriesy asegúrate de que la ruta de los plugins sea la correcta dentro de la estructura de Wine.Fuentes: Si las letras se ven muy pequeñas o raras, puedes cambiarlas en
Options->Appearance->Fonts.
Alternativas Modernas (Nativas de Linux)
OllyDbg es un clásico, pero está un poco obsoleto para sistemas modernos de 64 bits. Si OllyDbg te da problemas con Wine, te recomiendo probar estas herramientas que ya vienen en Kali o son fáciles de instalar:
| Herramienta | Descripción | Idioma/Interfaz |
| x64dbg | El sucesor espiritual de OllyDbg (Windows, corre muy bien en Wine). | Soporta Español. |
| GDB + PEDA/GDB-ext | El estándar de Linux para depuración. | Línea de comandos. |
| Edna-debugger | Un depurador gráfico nativo para Linux. | Interfaz intuitiva. |
| Ghidra | Herramienta de la NSA para ingeniería inversa completa. | Muy potente y visual. |
Nota de seguridad: OllyDbg se utiliza a menudo para analizar malware. Asegúrate de ejecutarlo siempre dentro de un entorno controlado o una máquina virtual si vas a analizar archivos sospechosos.
Si vas a usar OllyDbg en pleno 2026, los plugins son los que realmente le dan superpoderes, especialmente para saltar protecciones o mejorar la legibilidad del código.
Aquí tienes los plugins más esenciales (y clásicos) que todo entorno de OllyDbg debería tener instalado:
1. OllyDump
Es el plugin indispensable. Se utiliza para "dumpear" (volcar) un proceso de la memoria a un archivo de disco después de haberlo desempaquetado.
Para qué sirve: Si un programa está comprimido o protegido (packed), esperas a que se descomprima en la memoria y usas OllyDump para guardar el archivo limpio.
2. StrongOD
Este es probablemente el plugin más potente para OllyDbg.
Para qué sirve: * Ayuda a ocultar el depurador (Anti-Anti-Debug), evitando que el programa sepa que lo estás analizando.
Permite saltar excepciones de forma más fluida.
Añade opciones de "Attach" (adjuntar a proceso) mucho más estables.
3. Command Bar
Añade una barra de comandos en la parte inferior de la pantalla, similar a la de SoftICE.
Para qué sirve: Permite escribir comandos rápidos como
bp MessageBoxA(poner un breakpoint en una función específica) sin tener que navegar por todos los menús. Ahorra muchísimo tiempo.
4. Multimate (o MutiMate Fix)
Corrige errores de visualización y añade pequeñas mejoras estéticas.
Para qué sirve: Es ideal para que la interfaz se comporte mejor bajo Wine en Kali Linux, ya que a veces las ventanas de OllyDbg se desordenan.
¿Cómo instalar estos plugins en Kali?
Como estás usando Wine, la estructura de carpetas es clave:
Busca la carpeta donde tienes el
OLLYDBG.EXE.Si no existe, crea una subcarpeta llamada
Plugins.Copia los archivos
.dllde los plugins que descargues dentro de esa carpeta.Configura la ruta: Abre OllyDbg, ve a:
Options->Appearance->Directories.En Plugin directory, selecciona la ruta de la carpeta que creaste (Wine la verá como
Z:\home\usuario\...oC:\...).
Reinicia OllyDbg.
[!TIP]
Dato importante: La mayoría de estos plugins se encuentran en el sitio histórico de Tuts4You o en los packs de Ricardo Narvaja (un referente legendario de la ingeniería inversa en español).
Configurar StrongOD es el paso definitivo para convertir a OllyDbg en una herramienta sigilosa. Muchos programas modernos incluyen rutinas "Anti-Debug" que buscan procesos activos de depuración para cerrarse o corromperse a propósito.
Aquí te explico cómo configurarlo paso a paso dentro de tu entorno Wine en Kali:
1. Acceso al menú de StrongOD
Una vez que hayas copiado el archivo StrongOD.dll en tu carpeta de plugins y reiniciado OllyDbg, verás una nueva opción en la barra de menú superior:
Haz clic en Plugins -> StrongOD -> Options.
2. Configuraciones Clave (Recomendadas)
Se abrirá una ventana con varias casillas de verificación. Para maximizar el sigilo, marca las siguientes:
Sección: Anti-Anti-Debug
[x] HidePEB: Esta es la más importante. Modifica el Process Environment Block para que el programa crea que no está siendo depurado.
[x] Driver (Protect Process): Intenta proteger el proceso de ser finalizado por técnicas externas (aunque en Wine su efectividad varía respecto a Windows real).
[x] Bypass Various Anti-Debug: Activa parches genéricos para saltar chequeos comunes de la API de Windows como
IsDebuggerPresent.
Sección: Exceptions (Excepciones)
[x] Skip Some Exceptions: Los programas protegidos suelen lanzar excepciones falsas para confundir al debugger. StrongOD las gestiona automáticamente para que no se detenga el análisis constantemente.
Sección: UI & Kernel
[x] Kill Anti-Attach: Evita que el programa bloquee la posibilidad de que OllyDbg se "enganche" a él mientras ya está corriendo.
[x] Remove Epilog Check: Ayuda a que el desensamblador no se pierda en funciones complejas.
3. El botón "Hide" (El toque final)
Muchos no saben que StrongOD añade una función de "Capa de Invisibilidad" activa.
En el menú de StrongOD, busca la opción Hide.
Al activarla, el plugin intercepta llamadas al sistema en tiempo real que intentan detectar la ventana de OllyDbg o su nombre de proceso.
[!WARNING]
Ojo con Wine: Como estás en Kali Linux, algunas funciones de "Kernel Mode" de StrongOD podrían no funcionar al 100% porque Wine es una capa de compatibilidad, no un núcleo Windows real. Si un programa muy pesado te sigue detectando, la solución suele ser parchear manualmente la instrucción
JZoJNZdespués del chequeo de seguridad.
4. Verificación
Para saber si lo has hecho bien, puedes cargar un programa de prueba llamado "Checker" (o cualquier crackme básico que use IsDebuggerPresent).
Carga el programa.
Si StrongOD está bien configurado, el programa debería ejecutarse normalmente sin lanzar el mensaje de "Debugger detected, closing...".
Aprender a "parchear a mano" es lo que separa a un usuario de herramientas de un verdadero analista de ingeniería inversa. Si el plugin falla o el programa usa una técnica personalizada, este método nunca te dejará tirado.
Cuando un programa verifica si hay un debugger, el flujo suele ser: Llamada a la función de chequeo $\rightarrow$ Comparación del resultado $\rightarrow$ Salto condicional.
Aquí tienes los pasos para encontrar y anular ese salto en OllyDbg:
1. Buscar las funciones del sistema (Intermodular Calls)
Casi todos los programas usan funciones estándar de Windows para detectarte. Vamos a buscarlas:
Haz clic derecho en la ventana de CPU (donde ves el código ASM).
Ve a Search for -> All intermodular calls.
En la nueva ventana, escribe en el teclado (sin buscar caja de texto) cualquiera de estas palabras clave:
IsDebuggerPresentCheckRemoteDebuggerPresentNtQueryInformationProcess
Si encuentras alguna, haz doble clic para ir a esa línea en el código.
2. Identificar el "Salto Crítico"
Una vez que estés en la línea de la función (ej. CALL IsDebuggerPresent), mira justo debajo. Verás algo parecido a esto:
CALL DWORD PTR DS:[<&KERNEL32.IsDebuggerPresent>] ; Llama a la función
TEST EAX, EAX ; Comprueba el resultado (EAX = 1 si hay debugger)
JNZ SHORT 00401234 ; <--- EL SALTO CRÍTICO: "Si no es cero (detectado), salta al error"
El programa dice: "Si detecto un debugger ($EAX = 1$), salta a la rutina que cierra el programa".
3. Cómo anularlo (El Parche)
Tienes dos formas de engañar al programa:
Opción A (Cambiar el Salto): Haz doble clic sobre la instrucción
JNZy cámbiala porJZ(así solo saltará al error si NO hay debugger) o, mejor aún, por unNOP.Opción B (Usar NOPs): Selecciona la línea del salto, presiona la tecla Espacio y escribe
NOP.NOPsignifica No Operation. El programa llegará ahí, no hará nada y seguirá adelante como si no hubiera detectado nada.
4. Hacer el cambio permanente
OllyDbg guarda los cambios solo en memoria. Para crear un nuevo ejecutable parcheado:
Selecciona las líneas que modificaste (se verán en color rojo).
Haz clic derecho -> Copy to executable -> Selection.
Se abrirá una ventana nueva con el código modificado. Haz clic derecho ahí -> Save file.
Ponle un nombre nuevo (ej.
programa_crackeado.exe).
El truco del "Hardware Breakpoint"
Si no encuentras ninguna función de texto, el programa podría estar usando una técnica de lectura directa.
Haz clic derecho -> Search for -> All constants.
Busca el valor
70(que es el offset del flagBeingDebuggeden el PEB).
Los Hardware Breakpoints son la "artillería pesada" de la ingeniería inversa. A diferencia de los breakpoints normales (que modifican el código sustituyendo una instrucción por INT 3), los de hardware utilizan registros especiales del propio procesador ($DR0$ a $DR7$).
Esto los hace invisibles para la mayoría de los programas, ya que el código del programa no cambia en absoluto.
Aquí tienes cómo usarlos para cazar al programa cuando intenta "espiarte":
1. El concepto: El Flag BeingDebugged
En Windows, hay una estructura llamada PEB (Process Environment Block). El segundo byte de esa estructura es el flag BeingDebugged.
Si vale 0: No hay debugger.
Si vale 1: ¡Te pillaron!
Incluso si el programa no usa funciones como IsDebuggerPresent, tarde o temprano tendrá que leer ese byte de memoria. Ahí es donde ponemos la trampa.
2. Cómo poner el Hardware Breakpoint (HBP)
Para detectar quién está mirando ese flag, haz lo siguiente en OllyDbg:
Ve a la línea de comandos (Command Bar) en la parte inferior.
Escribe el comando para ver el PEB:
dump fs:[30]y pulsa Enter.En la ventana de Dump (abajo a la izquierda), verás el volcado de memoria. El primer byte suele ser algo como
00, y el segundo (en el offset+1) es el que nos interesa.Haz clic derecho sobre ese segundo byte -> Breakpoint -> Hardware, on access -> Byte.
3. ¿Qué acabamos de hacer?
Le hemos dicho al procesador: "La próxima vez que CUALQUIER instrucción de este programa intente LEER este byte de memoria, congela todo y dáselo a OllyDbg".
Ahora, pulsa F9 (Run). El programa correrá normalmente hasta que... ¡BUM! OllyDbg se detendrá de golpe.
4. Analizar el hallazgo
Mira la ventana de CPU. Estarás justo encima de una instrucción que probablemente se vea así:
MOV AL, BYTE PTR DS:[EBX+1] ; EBX suele apuntar al PEB
CMP AL, 0 ; ¿Es el flag igual a 0?
JNZ Error_Debugger ; Si no es 0, salta a cerrarse
5. El parche "Eterno"
En lugar de parchear el código (que a veces el programa verifica si ha sido alterado), puedes hacer un parche de datos:
Vuelve a la ventana de Dump donde pusiste el breakpoint.
Haz clic derecho sobre ese byte (
01) -> Binary -> Edit.Cámbialo a
00y dale a OK.¡Listo! El programa ahora leerá "0" y creerá que está solo en el mundo.
¿Por qué esto es mejor en Kali/Wine?
Bajo Wine, a veces las APIs de detección se comportan de forma errática. Los Hardware Breakpoints van directos al flujo de ejecución, saltándose las capas de compatibilidad que a veces confunden a los plugins automáticos.
Cuidado: Solo tienes 4 slots de Hardware Breakpoints (limitación física del CPU). Úsalos con sabiduría.
El Run Trace es como tener una "cámara de seguridad" que graba cada paso que dio el procesador. Es la herramienta definitiva cuando el programa se cierra de repente y no sabes ni por qué ni dónde te detectó.
En lugar de ir paso a paso con F8 (que es eterno), dejas que OllyDbg registre la ejecución y luego analizas la "película" con calma.
1. Configurar el tamaño del "Video" (Buffer)
Antes de empezar, asegúrate de que OllyDbg tenga espacio para grabar:
Ve a Options -> Debugging options.
Entra en la pestaña Trace.
En Trace buffer size, pon un número alto (ej.
1,000,000de registros). Si es muy bajo, la grabación se borrará al llenarse.
2. Empezar a grabar
Para activar el rastreo, no uses el botón de Play normal. Haz lo siguiente:
Pon un breakpoint (F2) un poco antes de donde crees que ocurre la detección (o al inicio del programa en el Entry Point).
Cuando el programa se detenga ahí, presiona Ctrl + F11 (Trace into) o Ctrl + F12 (Trace over).
Verás que el programa corre un poco más lento. Eso es porque OllyDbg está guardando cada instrucción en una lista gigante.
3. El momento del "Crash" o Cierre
Deja que el programa corra hasta que aparezca el mensaje de "Debugger Detectado" o hasta que la ventana se cierre sola.
Si el programa se cierra, Wine mantendrá el proceso en OllyDbg como
Terminated. No pasa nada, ¡la grabación está a salvo!
4. Analizar la grabación (El Log de Trace)
Ahora abre la ventana mágica:
Ve al menú superior View -> Run trace.
Se abrirá una lista con miles de líneas. Esa es la ruta exacta que siguió el programa.
¿Cómo encontrar la trampa en el Trace?
Aquí viene el truco de experto. Desplázate hasta el final de la lista (la última instrucción antes de que el programa "muriera").
Busca saltos sospechosos: Verás que antes del cierre hubo un
CMP(comparación) y unJNZoJEque mandó el código a una zona de "limpieza" o error.Busca llamadas a APIs: Si ves un
CALLa algo comoExitProcessoTerminateProcess, mira unas 10 o 20 líneas arriba. Ahí es donde se tomó la decisión de cerrarse.Doble clic para ir al código: Haz doble clic en cualquier línea del Trace y OllyDbg te llevará a esa posición exacta en la ventana de CPU.
El "Hit Trace" (Variante visual)
Si quieres ver por qué partes del código ha pasado el programa y por cuáles no:
Haz clic derecho en la ventana de CPU -> Search for -> All commands.
Elige View -> Hit trace.
Las líneas por las que el programa ya pasó aparecerán de un color diferente. Esto es genial para ver qué "caminos" (rutinas de seguridad) evitó o cuáles activó.
[!NOTE]
Dato de Kali/Wine: A veces el Run Trace en Wine puede ir un poco a saltos si el programa usa muchas llamadas a librerías de sistema (
.dll). Si ves que el Trace se llena de código de Wine, usa Ctrl + F12 (Trace Over) para que solo grabe el código del programa y no se meta dentro de cada función de Windows.
Con esto ya tienes el kit completo: Plugins, Hardware Breakpoints y Run Trace. Básicamente, el programa ya no tiene donde esconderse.
¡Ese es el siguiente nivel! Como no puedo ver tu pantalla, vamos a simular un escenario real. Imagina que tienes un ejecutable llamado crackme.exe que, al abrirlo, te pide una clave y, si es incorrecta, muestra un mensaje de "Error" y se cierra.
Para encontrar el salto real (el que decide si vas al éxito o al fracaso), seguiremos la técnica del "Backtracing" (rastreo hacia atrás) desde el mensaje de error.
Paso 1: Localizar el mensaje de error (String References)
Casi todos los programas tienen el texto de error guardado. Vamos a usarlo como "ancla":
En la ventana de CPU, haz clic derecho.
Selecciona Search for -> All referenced text strings.
Se abrirá una lista con todos los textos del programa. Busca el que diga "Clave incorrecta", "Error" o "Invalid Key".
Cuando lo encuentres, haz doble clic sobre él. OllyDbg te llevará al código exacto donde se usa ese texto.
Paso 2: El "Backtracing" (Subir con la mirada)
Ahora estarás en una línea que probablemente sea un PUSH (para preparar el mensaje) o un CALL MessageBoxA.
No te detengas ahí. Mira hacia arriba, línea por línea. Estás buscando la bifurcación.
Paso 3: Identificar la comparación y el salto
Unas cuantas líneas arriba del mensaje de error, verás el "momento de la verdad". Suele tener este aspecto:
CALL 00401050 ; <--- Aquí el programa comprueba tu clave (La función de validación)
CMP EAX, 1 ; <--- Compara el resultado: ¿Es EAX igual a 1 (Correcto)?
JE SHORT 00401200 ; <--- SALTO REAL: "Si es igual (JE), salta al mensaje de ÉXITO"
; <--- Si NO salta, el código sigue bajando hacia el mensaje de ERROR
Paso 4: Forzar el salto (El "Crack")
Tienes dos formas de ganar aquí:
Invertir el salto: Si el programa usa
JE(Jump if Equal), cámbialo aJNE(Jump if Not Equal). Ahora, ¡cualquier clave incorrecta te dejará entrar!El Salto Incondicional: Cambia el
JEoJNZpor unJMP(Jump). ElJMPno hace preguntas; saltará a la zona de éxito sin importar qué diga el registroEAX.
¿Cómo saber si estás en el salto correcto?
Aquí es donde usas la Tecla F2 (Breakpoint):
Pon un breakpoint en la línea del
CMPo delCALLde validación.Ejecuta el programa (F9) y escribe cualquier cosa en el cuadro de texto del programa.
OllyDbg se detendrá en tu breakpoint.
Ahora, en lugar de parchear, haz un cambio en vivo:
Mira la ventana de Registers (derecha). Busca el flag Z (Zero Flag).
Si el salto es un
JEy no se va a producir (el salto no está resaltado en rojo), haz doble clic en el valor del flag Z para cambiarlo de0a1.Presiona F9. Si el programa te dice "¡Felicidades!", acabas de confirmar que ese es el Salto Real.
Un reto común: Saltos "Lejanos"
A veces, el salto no está justo encima del error, sino que el programa guarda el resultado en una variable y lo comprueba mucho más tarde. Si no ves el salto cerca, el Run Trace que aprendimos antes te mostrará exactamente de qué dirección de memoria vino el programa antes de caer en el mensaje de error.
Este es el escenario más común en la vida real. Rara vez una clave se comprueba con un simple "sí o no". Lo normal es que el programa recorra tu contraseña carácter por carácter y compare cada uno con la clave real (o con un hash).
Si intentas parchear el final del bucle, puede que no funcione. Lo que queremos es encontrar el algoritmo de generación o el punto donde se rinde la comparación.
1. Cómo identificar un Bucle de Validación
En la ventana de CPU de OllyDbg, un bucle se reconoce visualmente por una flecha que sube hacia una dirección anterior. Verás algo como esto:
INC ESI / INC EDI: Incrementa los índices (avanza a la siguiente letra).
CMP AL, BL: Compara la letra de tu clave con la letra "buena".
JNZ Error: Si una sola letra no coincide, ¡fuera!
LOOP o JMP atrás: Si coincide, vuelve arriba para la siguiente letra.
2. La técnica del "Breakpoint en el Stack" (Espiar la clave)
Si el programa compara tu clave letra a letra, la clave "real" tiene que estar en algún lugar de la memoria en ese preciso instante.
Busca el
CMPdentro del bucle.Mira los registros (EAX, EBX, etc.). Si ves que uno de ellos contiene una letra de tu clave (ej. 'a'), el otro registro casi seguro contiene la letra de la clave verdadera.
Haz clic derecho sobre ese registro -> Follow in Dump.
¡Magia! En la ventana de abajo verás la clave real escrita en texto plano.
3. El "Salto Maestro" tras el Bucle
Una vez que el bucle termina (porque recorrió toda la palabra), suele haber un salto final que decide si el resultado de todas las comparaciones fue positivo.
El Flag Centinela: A veces el programa usa un registro como "bandera" (por ejemplo, pone
DL = 1si todo va bien).La comprobación final:
Fragmento de código00402050 CMP DL, 1 00402053 JNE 00402100 ; <--- Este es el "Salto Maestro"
4. Cómo "romper" el Bucle con un solo cambio
Si no quieres buscar la clave real y solo quieres que acepte cualquier cosa:
Localiza el salto que te echa fuera dentro del bucle (el
JNEoJNZque salta al error si una letra falla).Anúlalo con NOPs.
Al hacer esto, el programa comparará las letras, verá que no coinciden, pero no hará nada. Seguirá el bucle hasta el final y, al terminar, creerá que todo ha ido perfecto.
Un consejo para Kali/Wine
Cuando analices bucles largos, el Run Trace que vimos antes puede generar archivos de log gigantescos. En lugar de grabar todo, usa el "Step Over" (F8) con la tecla pulsada (mantenla apretada) para ver cómo cambian los registros rápidamente en el Dump mientras el bucle avanza.
Truco Pro: Si ves que el programa usa funciones como
vbaStrCmp(en programas viejos de Visual Basic) ostrcmp, pon el breakpoint directamente en la entrada de la función. Casi siempre verás la clave correcta pasando por la pila (Stack) justo antes de la llamada.
La técnica del Code Cave (cueva de código) es el último recurso del analista cuando el parche que necesita es más largo que la instrucción original.
Imagina que tienes una instrucción de 2 bytes (como JZ), pero necesitas meter 10 bytes de código para manipular los registros. No caben. Así que "saltamos" a una zona vacía de la memoria, ejecutamos nuestro código y volvemos.
1. Encontrar la "Cueva" (Code Cave)
Los ejecutables tienen secciones (como .text o .data). Al final de estas secciones o entre funciones, siempre quedan espacios vacíos llenos de ceros (00) o NOPs (90).
En la ventana de CPU, haz scroll hacia abajo (o hacia arriba) buscando una zona grande de
DB 00.Anota la dirección de memoria donde empiezan esos ceros (ejemplo:
00405000).
2. El Salto a la Cueva
Ve al lugar donde quieres hacer el parche y escribe:
JMP 00405000 (la dirección de tu cueva).
OllyDbg rellenará con NOPs el espacio sobrante si la instrucción original era más larga.
3. Escribir el "Payload" en la Cueva
Ahora ve a 00405000 y escribe tu lógica personalizada. Por ejemplo, si quieres forzar que un registro siempre sea "exitoso":
MOV EAX, 1 ; Forzamos el valor de éxito
CMP EAX, 1 ; Nos aseguramos de que el flag Z se active
JMP 00401234 ; VOLVEMOS a la instrucción justo después del parche original
4. Resumen del Proceso: "Jump, Do, Jump Back"
Para que no te pierdas, el flujo es una triangulación:
Original: El programa llega al punto crítico $\rightarrow$ Salta a la Cueva.
Cueva: Haces tus trucos (cambiar registros, limpiar flags) $\rightarrow$ Saltas de vuelta.
Retorno: El programa sigue su curso, pero ahora con los datos que tú manipulaste.
Consejos finales para Kali Linux (Wine)
Como estás operando en un entorno Linux, ten en cuenta estos detalles de "supervivencia":
Guardar es clave: Wine puede ser inestable con OllyDbg si haces muchos cambios. Guarda tu trabajo frecuentemente (
Copy to executable->Save file).Permisos de ejecución: Si guardas un
.exenuevo, a veces tienes que darle permisos desde la terminal de Kali:chmod +x programa_nuevo.exe.Case Sensitivity: Recuerda que Linux distingue entre mayúsculas y minúsculas. Si tu plugin busca
OLLYDBG.INIy el archivo se llamaollydbg.ini, podrías tener problemas.
Nada asienta mejor el conocimiento que enfrentarse a un reto real diseñado para ser "hackeado". En el mundo de la ingeniería inversa, estos programas se llaman Crackmes.
Como estás en Kali Linux, tienes varias opciones para conseguir ejercicios legales, seguros y divertidos. Aquí tienes las mejores fuentes y cómo empezar:
1. ¿Dónde encontrar Crackmes?
| Sitio Web | Nivel | Descripción |
| Crackmes.one | Todos | El sucesor del legendario Crackmes.de. Es la mayor base de datos actual. Puedes filtrar por dificultad (1.0 a 6.0) y por sistema operativo (elige Windows para usar con tu OllyDbg). |
| Root-Me.org | Intermedio | Tiene una sección de "App - Windows" con retos progresivos que puedes descargar. |
| Tuts4You | Experto | Un sitio histórico con tutoriales y retos clásicos de la vieja escuela. |
2. Recomendación para empezar (Nivel 1)
Te sugiero buscar en Crackmes.one uno que cumpla estas características para que tu OllyDbg en Kali no sufra:
Platform: Windows.
Language: C/C++ o Assembler (evita .NET por ahora, ya que requieren otras herramientas como dnSpy).
Difficulty: 1.0 o 1.2.
[!IMPORTANT]
Password de los archivos: Casi todos los
.zipde estos sitios usan la contraseñacrackmes.oneocrackmes.depara evitar que los antivirus borren el archivo (ya que el código de un crackme a veces parece sospechoso).
3. Tu primer "Plan de Ataque" en Kali
Una vez descargues tu primer crackme, sigue esta hoja de ruta usando lo que hemos aprendido:
Análisis Estático (Rápido):
Usa el comando
file nombre_del_crackme.exeen la terminal de Kali para confirmar que es un ejecutable de 32 bits (PE32).
Carga en OllyDbg:
wine OLLYDBG.EXE nombre_del_crackme.exe
Busca el "Norte":
Clic derecho -> Search for -> All referenced text strings.
Busca palabras como "Wrong", "Try again" o "Serial".
Pon el Breakpoint:
Haz doble clic en el mensaje de error y pon un F2 justo en el
CMPoCALLque está arriba.
Rastrea la clave:
Escribe una clave falsa, pulsa el botón en el crackme, y cuando OllyDbg se detenga, mira los registros (EAX, EDX...) o el Stack (ventana inferior derecha). ¡La clave real suele aparecer ahí comparándose con la tuya!
¿Quieres que busquemos uno específico ahora mismo?
Puedo darte los pasos exactos para resolver uno de los clásicos (como los de Cruehead o Ricardo Narvaja) si los tienes a mano, o podemos preparar un script en Python para generar tus propios números de serie si encuentras un crackme que use un algoritmo matemático.
Automatizar un Keygen (generador de claves) es el paso final del "cracking" elegante. En lugar de simplemente parchear el programa para que acepte cualquier cosa (fuerza bruta), el objetivo es entender la matemática que usa el programa para crear la clave y replicarla en un script (normalmente en Python por su sencillez).
Aquí tienes los pasos para "traducir" lo que ves en OllyDbg a un script automático:
1. Localizar la "Rutina Generadora"
No busques el mensaje de error, busca el bucle donde se manipula tu nombre de usuario o un número de serie. Suele estar después de un GetDlgItemTextA (que lee lo que escribiste).
Busca operaciones matemáticas repetitivas como estas:
ADD EAX, 0x15(Suma 21 en hexadecimal).XOR EAX, EBX(Aplica una operación XOR, muy común en criptografía).IMUL EAX, EAX, 0x3(Multiplica por 3).ROR/ROL(Rotación de bits).
2. El "Algoritmo Espejo"
Imagina que en OllyDbg ves este código ASM que procesa tu nombre letra a letra:
MOVZX EAX, BYTE PTR DS:[ESI] ; Carga una letra de tu nombre (ej. 'A' = 0x41)
ADD EAX, 0x5 ; Le suma 5
XOR EAX, 0x1234 ; Le aplica un XOR con 0x1234
Traduciendo a Python
Tu script de automatización se vería así:
def generar_key(nombre):
key = ""
for letra in nombre:
valor = ord(letra) # MOVZX (valor ASCII)
valor += 0x5 # ADD EAX, 5
valor ^= 0x1234 # XOR EAX, 0x1234
key += str(valor)
return key
print("Tu Serial es:", generar_key("Gemini"))
3. Automatizar la extracción con un Script de OllyDbg
Si el algoritmo es demasiado complejo para escribirlo en Python, puedes usar OllyScript (un plugin) para que OllyDbg haga el trabajo sucio por ti:
Pon un breakpoint donde el programa ya generó la clave correcta en memoria.
Crea un script
.oscque haga lo siguiente:run(corre el programa).fill_name(escribe un nombre automáticamente).pause(se detiene en el breakpoint).log [EAX](guarda la clave que aparece en el registro EAX en un archivo de texto).
4. El truco del "Keygen Inline" (Avanzado)
Si no quieres un script externo, puedes inyectar el generador dentro del propio programa usando un Code Cave (como vimos antes).
Modificas el programa para que, cuando escribas cualquier clave, el programa la ignore, calcule la correcta y la escriba él mismo en el cuadro de texto.
Así, el usuario solo tiene que pulsar "Registrar" y el programa se "auto-registra".
¿Cómo proceder ahora?
Para automatizar un Keygen real, necesito que me digas qué operaciones ves en OllyDbg. Normalmente se ve una cadena de ADD, SUB, XOR y SHL/SHR.
[!TIP]
Dato de Kali: Puedes usar la herramienta
python3que ya viene instalada para probar tus algoritmos rápidamente mientras tienes OllyDbg abierto en otra ventana.