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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  [Reto] Diofanto's Crackme
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: [Reto] Diofanto's Crackme  (Leído 12,932 veces)
_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: [Reto] Diofanto's Crackme
« Respuesta #20 en: 2 Diciembre 2011, 15:53 pm »

Y porqué borras tu VM?, tan solo hasle un snapshot y listo.

O copiar y pegar el archivo del disco rigido ^^
En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: [Reto] Diofanto's Crackme
« Respuesta #21 en: 2 Diciembre 2011, 17:11 pm »

O copiar y pegar el archivo del disco rigido ^^

Pues copio nuevamente el snaptshot

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
PeterPunk77

Desconectado Desconectado

Mensajes: 77



Ver Perfil
Re: [Reto] Diofanto's Crackme
« Respuesta #22 en: 5 Diciembre 2011, 02:56 am »

Keygen:
http://www.mediafire.com/?3myalaqt3iy5eg3

(genera 10 llaves aleatorias por intento)
Saludos.


Enhorabuena Enko,
ya sabía que al final no ibas a tener ningún problema (aunque pensé que lo ibas a programar en asm32).
Por cierto, ese crackme es el Diofanto no el Dioniso:
Diofanto está considerado uno de los padres del algebra.
Dioniso era el dios griego del vino.

Saludos.
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: [Reto] Diofanto's Crackme
« Respuesta #23 en: 7 Diciembre 2011, 18:00 pm »

peterpunk, el crackme lo hice mitad/mitad. C/Asm

La parte del CRC la hice en asm (practicamente copypast de tu rutina original)
La parte del keygen en si, en C.

Para convertir un FLOAT a su representacion hex de 32 bit tambien tuve que usar asm inline. Usando un puntero y leyendo byte a byte me daba otro resultado.
Aqui el fuente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <windows.h>
  5.  
  6. unsigned int __stdcall crc_check(char *, unsigned int);
  7. unsigned int __stdcall crc_table();
  8. unsigned int __stdcall _rand(unsigned int);
  9. extern unsigned int randseed;
  10.  
  11.  
  12.  
  13. int main(void)
  14. {
  15. int iCount, tCount;
  16. char serial[]= "1111-";
  17. char user[] = "0000000000000000";
  18. unsigned int kx, k1, k2, k3, k4, k5, r;
  19. float r1,a,b,c;
  20. printf("User: ");
  21. scanf("%s", &user);
  22. randseed = GetTickCount();
  23. crc_table();
  24. kx = crc_check(user, strlen(user));
  25. for(tCount=0; tCount<=10; tCount++){
  26. for(iCount=0; iCount<=3; iCount++)
  27. serial[iCount] = (char) _rand(26);
  28. k1 = (serial[3] * 0x44A8) + (serial[2] * 0x2A4) + (serial[1] * 0x1A) + (serial[0]) ;
  29.  
  30. for(iCount=0; iCount<=3; iCount++)
  31. serial[iCount] += 65;
  32.  
  33. k2 = (kx & 0xFF) + 1;
  34. k3 = ((kx >> 0x10) & 0xFF) + 1;
  35. a = k3; //180
  36. b = k2; //146
  37. c = k1; //33k
  38. r1 =  (-b + sqrt(b * b + 4 * a * c)) / (2 *a);
  39. r1 = sqrt(r1);
  40.  
  41. printf("%s", serial);
  42. __asm{
  43. push eax
  44. mov eax, r1
  45. mov r, eax
  46. pop eax
  47. }
  48.  
  49. printf("%X", r);
  50. printf("\n");
  51. }
  52. system("pause");
  53. return 0;
  54. }
  55.  
Código
  1. include '%fasminc%\win32a.inc'
  2.  
  3. format MS COFF
  4.  
  5. public crc_table as '_crc_table@0'
  6. public crc_check as '_crc_check@8'
  7. public _rand as '__rand@4'
  8. public randseed as '_randseed'
  9.  
  10.  
  11. section '.text' code readable executable
  12.  
  13. proc _rand, range  
  14. mov eax,[range]
  15. imul edx, [randseed], 0x08088405
  16. inc edx
  17. mov [randseed], edx
  18. mul edx
  19. mov eax, edx
  20. ret
  21. endp
  22.  
  23.  
  24. proc crc_table
  25. push esi edi ebx
  26. mov     edi, 0xEDB8832D
  27. inc     edi
  28. xor     ebx, ebx
  29. mov     ecx, table
  30. .crc_start:
  31. movzx   eax, bx
  32. add     eax, eax
  33. mov     dx, 0xFFF7
  34. .first:
  35. test    al, 1
  36. je      .next
  37. shr     eax, 1
  38. xor     eax, edi
  39. jmp     .over
  40. .next:
  41. shr     eax, 1
  42. .over:
  43. inc     dx
  44. jnz     .first
  45. mov     [ecx], eax
  46. inc     ebx
  47. add     ecx, 4
  48. cmp     bx, 0x100
  49. jnz     .crc_start
  50. pop ebx edi esi
  51. ret
  52. endp
  53.  
  54. proc crc_check, user, len    
  55. push esi edi ebx  
  56. mov     ebx, [user]          
  57. mov     esi, [len]          
  58. mov     edi, 0x50554E4B
  59. .crc_start:          
  60. mov     edx, edi              
  61. mov     eax, [ebx]            
  62. and     eax, 0xFF              
  63. xor     al, dl                
  64. mov     eax, [eax*4+table]    
  65. shr     edx, 8                
  66. xor     eax, edx              
  67. mov     edi, eax              
  68. inc     ebx                    
  69. dec     esi                    
  70. jnz     .crc_start
  71. not     edi                    
  72. mov     eax, edi
  73. pop ebx edi esi
  74. ret              
  75. endp
  76.  
  77. section '.data' data readable writeable
  78. randseed dd 0
  79. table dd 0xFF dup ?
  80.  

pd: A... Diofanto, asi la bicuadratica tiene mas sentido con el nombre.

Gracias por el buen crackme, podria ahora hacerlo completamente en asm ya que el problema no era la fpu, sino la resolvente estaba buggeada.
« Última modificación: 7 Diciembre 2011, 18:04 pm por _Enko » En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
RETO: Crackme muy sencillo :) A por el! « 1 2 »
Ingeniería Inversa
Rojodos 10 6,928 Último mensaje 6 Agosto 2004, 00:50 am
por bano
Reto: Crackme en Vfp.
Ingeniería Inversa
krc_4u 0 2,359 Último mensaje 12 Abril 2005, 02:19 am
por krc_4u
[Reto] Crackme V2 ASM « 1 2 »
Ingeniería Inversa
cibergolen 14 9,448 Último mensaje 27 Noviembre 2011, 12:39 pm
por cibergolen
[Reto] Crackme V3 ASM
Ingeniería Inversa
cibergolen 2 4,005 Último mensaje 10 Diciembre 2011, 16:14 pm
por Flamer
Reto (¿crackme?) para CheatEngine o similares.
Ingeniería Inversa
Mad Antrax 3 4,139 Último mensaje 6 Octubre 2013, 21:45 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines