elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Ayuda Con El Crackme_8_by_ShoulcK
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Con El Crackme_8_by_ShoulcK  (Leído 2,416 veces)
Flamer


Desconectado Desconectado

Mensajes: 1.071


crack, crack y mas crack...


Ver Perfil WWW
Ayuda Con El Crackme_8_by_ShoulcK
« en: 24 Septiembre 2025, 16:17 pm »

Hola estoy intentando resolver el Crackme 8 by ShoulcK pero me tope con piedra el boton ya lo tengo parchado el problema es en esta parte del codigo

Código
  1. 004538EF | 8945 F0                  | mov dword ptr ss:[ebp-10],eax                    |
  2. 004538F2 | 8955 F4                  | mov dword ptr ss:[ebp-C],edx                     |
  3. 004538F5 | 8B45 F0                  | mov eax,dword ptr ss:[ebp-10]                    |
  4. 004538F8 | 8B55 F4                  | mov edx,dword ptr ss:[ebp-C]                     |
  5. 004538FB | 81F0 C7FF8FC8            | xor eax,C88FFFC7                                 |
  6. 00453901 | 81F2 23E79607            | xor edx,796E723                                  |
  7. 00453907 | 52                       | push edx                                         |
  8. 00453908 | 50                       | push eax                                         |
  9. 00453909 | 8B45 F0                  | mov eax,dword ptr ss:[ebp-10]                    |
  10. 0045390C | 8B55 F4                  | mov edx,dword ptr ss:[ebp-C]                     |
  11. 0045390F | 2D C7EC82B8              | sub eax,B882ECC7                                 |
  12. 00453914 | 81DA DE188E02            | sbb edx,28E18DE                                  |
  13. 0045391A | 3B5424 04                | cmp edx,dword ptr ss:[esp+4]                     |
  14. 0045391E | 75 03                    | jne crackme_8_by_shoulck_crack.453923            |
  15. 00453920 | 3B0424                   | cmp eax,dword ptr ss:[esp]                       |
  16. 00453923 | 5A                       | pop edx                                          |
  17. 00453924 | 58                       | pop eax                                          |
  18.  
  19.  

en la linea 004538EF toma el valor de EAX y xorea para despues ser restado en fin el valor de EAX ya lo tengo es F389765F....el problema es con EDX he sacado como 4 valores pero ninguno da... les muestro un valor este 5538015 xorea con 796E723 ese valor debe ser igual a el resultado de la resta de 28E18DE aqui la linea  

Código
  1. 00453914 | 81DA DE188E02            | sbb edx,28E18DE                                  |

es una resta pero tienen que ser igual para que la bandera ZF se ponga en 1 y el programa no salte y si se preguntan como obtuve esos numeros lo hice por fuerza bruta pero no se confundan no es fuerza bruta de clave por clave sino este programa que voy insertando yo un valor y me muestra que tan lejos o que tan serca me encuentro del serial

Código
  1. <html>
  2. <head><title>ejercicio</title>
  3. </head>
  4. <body>
  5. <center>
  6. <br><br>
  7. <input type="text" id="x" style="text-align:center;">
  8. <input type="button" value="calcular" onclick="calcula()">
  9. <br><br>
  10. <textarea id="log" cols="50" rows="15"></textarea>
  11. </center>
  12. <script>
  13. function calcula()
  14. {
  15.   let valor=document.getElementById("x").value;
  16.   let a=0;b=0;
  17.  
  18.   a=valor ^ 127330083;//3364880327;//;
  19.   b=valor - 42866910;//3095588039;//;
  20.  
  21.   if(a==b)
  22.   {
  23.      document.getElementById("log").value="LOS DOS SON IGUALES";
  24.   }
  25.   else
  26.   {
  27.      document.getElementById("log").value="el valor de a=" + a + "\n\nel valor de b=" + b;
  28.   }
  29. }
  30. </script>
  31. </body>
  32. </html>
  33.  
  34.  
  35.  


aqui el programa con el boton ya parchado por si quieren probar

https://www.mediafire.com/file/3buf2gzegax05ui/Crackme_8_by_ShoulcK_crack.exe/file

otra cosa edito para insertar el serial solo juntamos los dos valores que les di esto    5538015   F389765F    y los ponemos en la calculadora de windows y nos da esto   383791225025164895 ese es el serial a ingresar


aver quien me ayuda o me diga si tiene solucion saludos Flamer


« Última modificación: 24 Septiembre 2025, 16:24 pm por Flamer » En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.555


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda Con El Crackme_8_by_ShoulcK
« Respuesta #1 en: 24 Septiembre 2025, 23:08 pm »

Hola!

Todo el secreto está en el SBB: eso hace que EDX y EAX estén "relacionados" (piensa en QWORDS!)

Serial correcto: 365495262636504647

Para los bruteforcers puedes usar "Binary paste" en el mismo Olly  ;)

Bruteforcer para EAX (parte baja del QWORD)
Código:
B9 00 00 00 00 8B C1 35 C7 FF 8F C8 8B D1 81 EA C7 EC 82 B8 41 3B C2 75 EC 90

Bruteforcer para EDX (parte alta del QWORD)
Código:
B9 00 00 00 00 8B C1 35 23 E7 96 07 8B D1 F9 81 DA DE 18 8E 02 41 3B C2 75 EB 90

Con eso deberías poder entender el algoritmo...

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Flamer


Desconectado Desconectado

Mensajes: 1.071


crack, crack y mas crack...


Ver Perfil WWW
Re: Ayuda Con El Crackme_8_by_ShoulcK
« Respuesta #2 en: 25 Septiembre 2025, 16:10 pm »

Hola!

Todo el secreto está en el SBB: eso hace que EDX y EAX estén "relacionados" (piensa en QWORDS!)

Serial correcto: 365495262636504647

Para los bruteforcers puedes usar "Binary paste" en el mismo Olly  ;)

Bruteforcer para EAX (parte baja del QWORD)
Código:
B9 00 00 00 00 8B C1 35 C7 FF 8F C8 8B D1 81 EA C7 EC 82 B8 41 3B C2 75 EC 90

Bruteforcer para EDX (parte alta del QWORD)
Código:
B9 00 00 00 00 8B C1 35 23 E7 96 07 8B D1 F9 81 DA DE 18 8E 02 41 3B C2 75 EB 90

Con eso deberías poder entender el algoritmo...

Saludos!

2 dudas por que al restar

Código
  1. sbb 5128001,28E18DE

1-el resultado es 02846722 ya lo intente en la calculadora y nada me sale 02846723....ya se que no es una simple resta, yo ya sospechaba que el truco del serial estaria en esa instruccion pero yo no entiendo que hace esa instruccion y ya le pregunte a chatgpt y nada que  me saca de dudas de que es lo que esta asiendo esa instruccion

2-estoy usando x64dbg no se como hacer fuerza bruta y ni en ollydbg y de donde sacas esos numerotes en hexadecimal

saludos voy a seguir intentando

EDITO
ya entendi si la bandera CF tiene 1 se resta uno mas en  

Código
  1. sbb 5128001,28E18DE

ya entendi tambien para que la bandera CF este en 1 la resta anterior tiene que dar un numero negativo en

Código
  1. 0045390F | 2D C7EC82B8              | sub eax,B882ECC7                                 |

estuve viendo como se conportaba tu serial en fin es todo...me queda la duda de la fuerza bruta y de donde sacastes esos numeros grandes y que es "Binary paste" no soy un hacker soy un aprendis a un nose muchas cosas y esto lo hago como pasa tiempo en fin saludos
« Última modificación: 25 Septiembre 2025, 16:23 pm por Flamer » En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.555


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda Con El Crackme_8_by_ShoulcK
« Respuesta #3 en: 29 Septiembre 2025, 22:26 pm »

Hola!

me queda la duda de la fuerza bruta y de donde sacastes esos numeros grandes

El número sale de la misma operación SBB: si el segundo depende del flag de carry, entonces estás tratando con números mayores a 1 DWORD (por eso en mi mensaje puse que pienses en QWORDS)

y que es "Binary paste"

Si copias los bytes que puse y vas a x64dbg (u Olly), seleccionas un pedazo de codigo (cuyo tamaño en bytes sea mayor a los que has copiado) y le das click derecho-"Binary"-"Paste", los bytes del codigo serán reemplazados por los que has pegado. De esa forma puedes hacer un bruteforcing "on the fly", sin necesidad de herramientas exteriores (para ejecutar el codigo, te pararías en la 1era instruccion que pegaste, y usarías "Set RIP Here" ó CTRL+* para mover RIP a la instruccion. Desde ahí puedes tracear o ejecutar directamente. Conviene poner un BP al final del bucle para evitar que siga corriendo el programa más de lo necesario y poder ver el resultado en el registro dado).

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.250



Ver Perfil
Re: Ayuda Con El Crackme_8_by_ShoulcK
« Respuesta #4 en: 3 Octubre 2025, 03:54 am »

Le eché un par de ojos y es un crackme bien enredado, seguramente por estar el delphi, con DeDe se tiene muuuucho más claro, pero x64dbg te pierdes, con OllyDBG puedes buscar los nombres de los eventos y se ven algo más claros, con IDA también se ven algo más claros.

Tan solo aclarar el uso de sbb, en el libro de Caos Reptante se describe brevemente, lo normal es verlo acompañado de un sub, eax, y edx, todo esto se utiliza para restar números mayores a 32bits (4Bytes), si uno conoce las instrucciones mul y div lo entiende un poco mejor porque esas instrucciones usan a edx y eax a la vez.

Al final se llega a la conclusión de:

Siendo una posible contraseña:

123456789123456789
01B69B4B ACD05F15
      x              y

Se tiene que obtener que:

x - 028E18DE = x xor 0796E723
y - B882ECC7 = y xor C88FFFC7

En caso del "Binary Paste" para aplicar la Fuerza Bruta en x64dbg sería así:



Hay que restarle 1 a ese ECX resultante porque se le aumenta +1 en el código independientemente de la comparación correcta

Y pensando en QWORDS que es como es en realidad sería:

Contraseña:
365495262636504647
5128001 40897647
            x

Se tiene que obtener que:

                x xor 0796E723 C88FFFC7 = x - 028E18DE B882ECC7
05128001 40897647 xor 0796E723 C88FFFC7 = 05128001 40897647 - 028E18DE B882ECC7
                      02846722 88068980 = 02846722 88068980


Si, porque la combinación de sub y sbb sirven para restar números mayores a 32bit, como 05128001 40897647 - 028E18DE B882ECC7 no se puede con los registros de 32bit se separa la parte alta en EDX y la parte baja en EAX y se opera:

Código
  1. mov edx, 05128001
  2. mov eax, 40897647
  3.  
  4. sub eax, B882ECC7 ; eax = 88068980 ; Carry Flag = 1
  5. sbb edx, 028E18DE ; edx = 02846723 - Carry Flag = 02846722

Resultado: 02846722 88068980



140897647-
 B882ECC7
 --------
 88068980


Ese 1 lo puse en rojo porque me lo presté para completar la resta, eso activa al Carry Flag para restárselo al siguiente resultado y dar el resultado correcto.
En línea

Flamer


Desconectado Desconectado

Mensajes: 1.071


crack, crack y mas crack...


Ver Perfil WWW
Re: Ayuda Con El Crackme_8_by_ShoulcK
« Respuesta #5 en: 3 Octubre 2025, 17:48 pm »

Esta bien ese metodo si pudiera ponerte like te pusiera EdePC y a MCKSys Argentina que es el de la idea

saludos
« Última modificación: 3 Octubre 2025, 21:53 pm por Flamer » En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines