Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: _Enko en 20 Octubre 2011, 20:43 pm



Título: keygenme4 console
Publicado por: _Enko en 20 Octubre 2011, 20:43 pm
Hola, como vi que se han quedado sin apps para resolver, hice uno mas.

Objetivo: realizar un keygen
  pueden postear aqui user y serial valido.
Bonus: la contraseña del codigo fuente es  la suma de serials de estos usuarios:
ABCD, EFGH, IJKL (sin las comas, simplemente los 3 serials juntos)

Parche: no vale patch, en realidad, si abren la ejecutable en olly, esta señalado donde hacer el patch, asi que no presenta gran desafio.

Dificultad: no tan facil,l no tan dificil. Yo he tardado una hora en generar la rutina que me diera serials validos. (y eso que yo hice la rutina para comprobar la validez)

Formato:
user son 4 caracteres ascii cualquiera.
serial son 8 caracteres hexadecimales, un numero de 32bit rempresentado en ascii.

La generacion tiene dos trucos, analicen el codigo bien ^^
Cualquier duda es bienvenida



le dejo los links y mirrors
http://www.mediafire.com/?2cl5c7vplrkvwvz
http://www.megaupload.com/?d=1CIXGZCR






Título: Re: keygenme4 console
Publicado por: Flamer en 21 Octubre 2011, 02:42 am
lo boy a rebisar aber que tal pero no te aseguro nada (esque ando corto de tiempo)si esta fasil publico la contraseña para mi nick
saludos


Título: Re: keygenme4 console
Publicado por: .:UND3R:. en 21 Octubre 2011, 03:24 am
lo boy a rebisar aber que tal pero no te aseguro nada (esque ando corto de tiempo)si esta fasil publico la contraseña para mi nick
saludos

_enko siempre realiza crackmes extraños no tan fáciles de resolver jeje

Saludos


Título: Re: keygenme4 console
Publicado por: Tinkipinki en 21 Octubre 2011, 09:37 am
Ok _Enko, vamos a probarlo.. ;-)

Saludos


Título: Re: keygenme4 console
Publicado por: _Enko en 21 Octubre 2011, 15:28 pm
Este keygenme esta basado en varias cosas a tener en cuenta:

*)numeros pseudo aleatorios
*)A xor B =  C  => C xor B  = A
*)ROR X,Y = C => ROL C, Y = X
*)+ una pequeña trampilla para detectar indirectamente la presencia de un debugger.


Título: Re: keygenme4 console
Publicado por: .:UND3R:. en 21 Octubre 2011, 19:09 pm
Este keygenme esta basado en varias cosas a tener en cuenta:

*)numeros pseudo aleatorios
*)A xor B =  C  => C xor B  = A
*)ROR X,Y = C => ROL C, Y = X
*)+ una pequeña trampilla para detectar indirectamente la presencia de un debugger.

Como actúa el keygenme si detecta el debugger?, Saludos


Título: Re: keygenme4 console
Publicado por: _Enko en 21 Octubre 2011, 19:14 pm
notese que dije "indirectamente"... :silbar:

El programa no busca ningun debugger, pero si hay uno presente, es probable que un serial valido sea invalido y al reves, que un serial invalido se convierta en valido.


Título: Re: keygenme4 console
Publicado por: PeterPunk77 en 3 Noviembre 2011, 13:39 pm
El keygen:
http://www.megaupload.com/?d=0184EMWP

Saludos.


Título: Re: keygenme4 console
Publicado por: Tinkipinki en 3 Noviembre 2011, 19:13 pm
Felicitaciones PeterPunk77 ...... ;-)


Título: Re: keygenme4 console
Publicado por: _Enko en 4 Noviembre 2011, 01:59 am
Hiciste un muy trabajo reverseando e invirtiendo el codigo   :P



Felicitaciones. ;-)

pd: tambien mola que el keygenme este hecho con masm :)
pd2: no me tome la molestia de anotar la secuencia pseudo-aleatoria, simplemente use el mismo rand y envie la secuencia a la pila.

dejo las rutinas originales por si alguien le da curiosidad.

Código
  1. proc validate, user, serial
  2. locals
  3. s dd ?
  4. endl
  5. mov esi, [user]
  6. mov esi, dword[esi]
  7. mov edi, [serial]
  8. lea eax, [s]
  9. cinvoke sscanf, edi, szFmtHex, eax
  10. mov edi, [s]
  11. mov ebx, 8
  12. .encode:
  13. stdcall Rand, 5
  14. mov ecx, eax
  15. add ecx, 3
  16. stdcall Rand, 64
  17. add eax, 8
  18. xor edx, edx
  19. div ecx
  20. mov ecx, edx
  21. ror esi, cl
  22.  
  23. stdcall Rand, 5
  24. mov ecx, eax
  25. add ecx, 3
  26. stdcall Rand, 64
  27. add eax, 8
  28. xor edx, edx
  29. div ecx
  30. mov ecx, edx
  31. ror edi, cl
  32.  
  33. xor edi, esi
  34. dec ebx
  35. jnz .encode
  36. mov eax, edi
  37. ret
  38. endp
  39.  
  40. proc generate, user, key
  41. locals
  42. s dd ?
  43. endl
  44. mov ebx, 8
  45. mov esi, [user]
  46. mov esi, dword[esi]
  47. .initrand:
  48. stdcall Rand, 5
  49. add eax, 3
  50. push eax
  51. mov ecx, eax
  52. stdcall Rand, 64
  53. add eax, 8
  54. push eax
  55. xor edx, edx
  56. div ecx
  57. mov ecx, edx
  58. ror esi, cl
  59. stdcall Rand, 5
  60. add eax, 3
  61. push eax
  62. stdcall Rand, 64
  63. add eax, 8
  64. push eax
  65.  
  66. dec ebx
  67. jnz .initrand
  68.  
  69. mov edi, [key]
  70. lea eax, [s]
  71. cinvoke sscanf, edi, szFmtHex, eax
  72. mov edi, [s]
  73. mov ebx, 8
  74. .decode:
  75. xor edi, esi
  76. pop eax
  77. pop ecx
  78. xor edx, edx
  79. div ecx
  80. mov ecx, edx
  81. rol edi, cl
  82.  
  83. pop eax
  84. pop ecx
  85. xor edx, edx
  86. div ecx
  87. mov ecx, edx
  88. rol esi, cl
  89. ;xor edi, esi
  90. dec ebx
  91. jnz .decode
  92. ;xor edi, esi
  93. mov eax, edi
  94. ret
  95. endp
  96.  
  97. proc Rand, range  
  98. mov eax,[range]
  99. imul edx, [randseed], 0x08088405
  100. inc edx
  101. mov [randseed], edx
  102. mul edx
  103. mov eax, edx
  104. ret
  105. endp
  106.