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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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


Desconectado Desconectado

Mensajes: 1.051


crack, crack y mas crack...


Ver Perfil WWW
[Reto] Crackme Loki-Mouse Flamer
« en: 16 Agosto 2019, 17:45 pm »

Hola amigos les presento mi nuevo crackme es nivel 1 el objetivo es crear el keygen o sacar una pass valida no vale parchar


Reto : Crackme

Nombre : Loki-Mouse

Autor : Flamer

Lenguaje : Dev-c++

Nivel : 1

Objectivo : Serial valido o keygen funcional

Descarga: http://www.mediafire.com/file/b8jf1pkbk77c1hm/Crackme_Loki-Mouse.rar/file



En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #1 en: 16 Agosto 2019, 19:51 pm »

hola Flamer:
                  si bien es nivel 1(yo debo ser nivel 2 jajaja) y como estoy "desocupado", lo estuve mirando para entretenerme un rato.
Serial ==  1027986032
ahora soy muy "vago" para ponerme a escribir un tuto o un keygen, lo dejo para otro o para muuuucho más adelante.
Sabés que siempre te hago comentarios y espero que no los tomes mal, creo que estás usando mal el término hacker, en este caso sería mejor cracker.Aunque a nadie la importa la diferencia.
Gracias por el entretenimiento. Saludos
En línea

Flamer


Desconectado Desconectado

Mensajes: 1.051


crack, crack y mas crack...


Ver Perfil WWW
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #2 en: 16 Agosto 2019, 20:34 pm »

hola Flamer:
                  si bien es nivel 1(yo debo ser nivel 2 jajaja) y como estoy "desocupado", lo estuve mirando para entretenerme un rato.
Serial ==  1027986032
ahora soy muy "vago" para ponerme a escribir un tuto o un keygen, lo dejo para otro o para muuuucho más adelante.
Sabés que siempre te hago comentarios y espero que no los tomes mal, creo que estás usando mal el término hacker, en este caso sería mejor cracker.Aunque a nadie la importa la diferencia.
Gracias por el entretenimiento. Saludos


no nunca los tomo a mal me agradan.....siempre me he confundido y no no mas creo ya que según tengo entendido el cracker es lo opuesto del hacker.....ya que el cracker usa las herramientas para robar y delinquir mientras que el hacker lo hace por aprender

aquí entra la confusión ya que mucha gente les llama cracker a las personas que realizan la ingeniera inversa sin saber que lo hacemos por puro entretenimiento

bueno pero creo que me estoy saliendo del tema....el serial es correcto

saludos Flamer
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #3 en: 16 Agosto 2019, 21:02 pm »

Comúnmente se le llama Cracker al ciberdelincuente y hacker al geek de la ciberseguridad.

Para mi un cracker es alguien especializado en ingeniería inversa con el objetivo de piratear software o vulnerarlo para romper su seguridad independientemente de su objetivo.
Y hacker para mi es cualquiera con conocimientos básicos en ciberseguridad o herramientas de hacking que tenga la capacidad de vulnerar, obtener información o infiltrarse en un sistema usando como herramienta la ciberseguridad.
Después podrías clasificarlos según su metodología, conocimientos, intereses, ideología, objetivos, etc.
Hay hackers que se dedican a las estafas, robos, suplantaciones, infecciones masivas, venta y redistribución de contenido legal...
Otros se dedican a proteger los sistemas, revisarlos en busca de fallos de seguridad, arreglarlos, defenderlos...
Otros son mercenarios y tanto trabajan de un lado como del otro según le salga más rentable.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

karmany
Moderador
***
Desconectado Desconectado

Mensajes: 1.614


Sueñas que sueñas


Ver Perfil WWW
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #4 en: 30 Agosto 2019, 00:01 am »

Bueno, para que la gente se anime a estudiar el Crackme me he propuesto analizarlo y crear un sencillo Keygen.
Para el keygen, aunque valen muchos caracteres, solo voy a usar números para evitar poner muchas condiciones en el código fuente. Pongo un enlace al final con el código fuente del keygen, el exe del mismo y una copia del crackme por si desapareciera en un futuro.

Carga el crackme en un depurador, yo lo hice con varios, pero para explicarlo lo hago con OllyDBGv2 en W10. Lo primero que llama la atención es que pesa muchísimo para el poco código que lleva, a ver si Flamer nos comenta el porqué.

Encontrar el código es sencillo buscando en las strings: botón dcho > search for > all referenced strings. Así se llega rápido al código.

Explicación del código
Código
  1. 00401700  cmp eax,0A
Nos indica que el serial tiene que tener exactamente 10 caracteres:
XXXXXXXXXX

El primer valor, voy a poner uno cualquiera: "1" = 31h
1XXXXXXXXX

Aquí trabaja con valor1 y valor6:
Código
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 00401750  |.  83E8 60       sub eax,60
  4. 00401753  |.  8945 DC       mov dword ptr ss:[ebp-24],eax
  5. 00401756  |.  837D DC 08    cmp dword ptr ss:[ebp-24],8
  6. 0040175A  |.  0F8E 62020000 jle 004019C2

En esa parte hace estas operaciones (todo en HEX):
valor6 + valor1 - 60 > 8; valor6 + 31h - 60h > 8h;
valor6 > 37h; Por lo tanto, valor6 = 38h ("8") o 39h.
1XXXX8XXXX

El valor 2 es un número aleatorio entre 0 y 9. Pongo por ej 7:
17XXX8XXXX

Un poco más adelante, empieza a realizar un montón de operaciones con los valores 1, 2, 6 desde 4017E3 hasta 401818. En este ejemplo, poniendo en el depurador el serial anterior, y BP en 401818, el resultado en eax de esas operaciones es: 6

Ahora volvemos a analizar un poco más arriba y verás que resta 30h al valor5 en 4017D7 y la comparación en 401821 compara el 6 del párrafo anterior con esto último:
valor5 = 6 + 30;
valor5 = 36h = "6"
17XX68XXXX

valor3 tiene que ser menor que 33h, mira en:
Código
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 00401861  |.  837D CC 32    cmp dword ptr ss:[ebp-34],32
  4. 00401865  |.  7F 73         jg short 004018DA
valor3 puede ser 32h("2"), 31h("1") o 30h("0")
172X68XXXX

valor4 tiene que ser mayor que 35h, mira en:
Código
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 00401867  |.  837D C8 35    cmp dword ptr ss:[ebp-38],35
  4. 0040186B  |.  7E 6D         jle short 004018DA
valor4 puede ser 36h, 37h, 38h o 39h.
172668XXXX

Y los 4 últimos caracteres pueden ser cualquier valor:
172668FORO

Dejo el código fuente que he realizado para el keygen, en Visual C++ 2019:
Código
  1. // Keygen Loki-Mouse.cpp
  2. //
  3.  
  4. #include <iostream>
  5. #include<time.h>
  6. #include <sstream>
  7.  
  8. using namespace std;
  9.  
  10. int codigo_asm(int num1, int num2)
  11. {
  12. int resultado;
  13. _asm
  14. {
  15. mov eax, num1
  16. mov edx, num2
  17. imul edx
  18. sar edx, 2
  19. mov eax, num1
  20. sar eax, 0x1F
  21. sub edx, eax
  22. mov num2, edx
  23. shl edx, 2
  24. add edx, num2
  25. add edx, edx
  26. mov eax, num1
  27. sub eax, edx
  28. add eax, 0x30
  29.  
  30. mov resultado, eax
  31. }
  32.        return resultado;
  33. }
  34.  
  35. int main()
  36. {
  37. int numHex = 0x00;
  38. int hexCaracter[11] = {};
  39. string caracter[11] = {};
  40.  
  41. srand(time(NULL)); //Inicializa números aleatorios
  42.  
  43. cout << "Keygen Crackme Loki-Mouse\n==========================\n\n";
  44.  
  45. cin.clear();
  46. cout << "Para generar autom\240ticamente un serial v\240lido, pulsa una tecla...";
  47. cin.ignore();
  48.  
  49. // El serial tiene que tener exactamente 10 caracteres
  50.  
  51. // ----------------
  52. // Caracteres 1 y 6
  53. // ----------------
  54.  
  55. // El carácter 1 va a ser un número aleatorio entre el 0(30hex) y 9(39hex):
  56. hexCaracter[1] = 0x30 + rand() % (10);
  57.  
  58. // El carácter 6 responde a esta fórmula: c6 + c1 - 60 > 8; c6 > 68 - c1;
  59. hexCaracter[6] = 0x69 - hexCaracter[1]; // Este es el primer valor válido
  60. hexCaracter[0] = 0x39 - hexCaracter[6]; //Número de valores también válidos hasta el 9 (39h)
  61. if (hexCaracter[0] != 0)
  62. {
  63. hexCaracter[6] = hexCaracter[6] + rand() % hexCaracter[0]; //Calcula aleatoriamente un valor válido entre todos los posibles.
  64. }
  65.  
  66. // ----------
  67. // Caracter 2
  68. // ----------
  69. // Un número aleatorio entre 0 y 9
  70. hexCaracter[2] = 0x30 + rand() % (10);
  71.  
  72. // -----------------------------------------
  73. // Realiza operaciones en ASM con C1, C2, C6
  74. // -----------------------------------------
  75. hexCaracter[0] = hexCaracter[2] + hexCaracter[1] + hexCaracter[6] - 0x90;
  76.  
  77.  
  78. // ----------
  79. // Caracter 5
  80. // ----------
  81. hexCaracter[5] = codigo_asm(hexCaracter[0], 0x66666667);
  82.  
  83. // ----------
  84. // Caracter 3
  85. // ----------
  86. // Tiene que ser < 33h
  87. hexCaracter[3] = 0x30 + rand() % (2);
  88.  
  89. // ----------
  90. // Caracter 4
  91. // ----------
  92. // Tiene que ser > 35h
  93. hexCaracter[4] = 0x36 + rand() % (3);
  94.  
  95. // --------------------
  96. // Caracter 7, 8, 9, 10
  97. // --------------------
  98. // Cualquiera, yo voy a usar solo números, pero vale cualquier otro carácter
  99. for (int i = 7; i < 11; i++)
  100. {
  101. hexCaracter[i] = 0x30 + rand() % (10);
  102. }
  103.  
  104.        // Convertir números en cadena de texto y mostrarlos en pantalla
  105. for (int i = 1; i < 11; i++)
  106. {
  107. caracter[i] = hexCaracter[i];
  108.        cout << caracter[i];
  109. }
  110.  
  111. cout << "\n";
  112. system("pause");
  113. return 0;
  114. }
  115.  

Y aquí la descarga:
Descargar Keygen desde Mega

Muchas gracias Flamer por el reto
« Última modificación: 30 Agosto 2019, 18:46 pm por karmany » En línea

farma

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #5 en: 18 Septiembre 2019, 18:16 pm »

Qué manera tan sencilla de explicarlo, especialmente para los que nos gusta leer sobre el tema pero no le podemos dedicar mucho tiempo.

Gracias por el crackme y el tuto!
En línea

Acronys

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #6 en: 10 Noviembre 2019, 05:01 am »

Que mejor explicación que la de karmany

Dejo mi key porsia:

y=2\4Vvs+B

Dejo mi código fuente ya que en mi caso lo hice con la tabla de caracteres ASCII.

Y bueno, llego un poco tarde pero lo hice. También atareado con otras cosas pero que he querido dedicarle a esto mas tiempo.

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <string>
  5. #include <random>
  6.  
  7.  
  8. using namespace std;
  9.  
  10. int randomnumber()
  11. {
  12.    int Min = 33;
  13.    int Max = 126;
  14.  
  15.    int Number = std::rand() % (Max + 1 - Min) + Min;
  16.  
  17.  
  18.    return Number;
  19.  
  20. }
  21.  
  22. int main()
  23. {
  24.  
  25. std::srand(std::time(nullptr)); //seed
  26.  
  27.    string key = "1234567899";
  28.  
  29.    bool finish = true;
  30.  
  31.    while(finish)
  32.    {
  33.        unsigned char a = randomnumber();
  34.        unsigned char b = randomnumber();
  35.        unsigned char c = randomnumber();
  36.        unsigned char d = randomnumber();
  37.        unsigned char e = randomnumber();
  38.        unsigned char f = randomnumber();
  39.        unsigned char g = randomnumber();
  40.        unsigned char h = randomnumber();
  41.        unsigned char i = randomnumber();
  42.        unsigned char j = randomnumber();
  43.  
  44.        key[0] = a;
  45.        key[1] = b;
  46.        key[2] = c;
  47.        key[3] = d;
  48.        key[4] = e;
  49.        key[5] = f;
  50.        key[6] = g;
  51.        key[7] = h;
  52.        key[8] = i;
  53.        key[9] = j;
  54.  
  55.  
  56.        signed int caux;
  57.  
  58.        if(a+f>104)
  59.        {
  60.            finish = false;
  61.        }
  62.  
  63.        caux = (signed char) e;
  64.        caux = caux - 0x30;
  65.  
  66.        a += b;
  67.  
  68.        f += a;
  69.  
  70.        f = f - 0x90;
  71.  
  72.        int eax, edx;
  73.        edx = 0x66666667;
  74.        eax = f;
  75.        long long result = (long long) eax * (long long) edx;
  76.        eax = result & 0xffffffff;
  77.        edx = result >> 32;
  78.  
  79.        edx = edx >> 2;
  80.  
  81.        eax = f;
  82.  
  83.        eax = eax >> 0x1F;
  84.        edx -= eax;
  85.  
  86.        eax = edx;
  87.  
  88.        eax = eax << 2;
  89.        eax += edx;
  90.        eax += eax;
  91.  
  92.        f -= eax;
  93.  
  94.        if(f != caux)
  95.        {
  96.            finish = true;
  97.        }
  98.  
  99.        if(c > 0x32)
  100.        {
  101.            finish = true;
  102.        }
  103.        if(d <= 0x35)
  104.        {
  105.            finish = true;
  106.        }
  107.  
  108.  
  109.    }
  110.  
  111.    cout << key << endl;
  112.  
  113.    return 0;
  114.  
  115.  
  116. }
  117.  


Edit: Ah, una cosa que me pareció interesante que no me acordaba era que podía utilizar las instrucciones en asm mas directo que lo que hice yo. Gracias Karmany jeje

Gracias por el reto Flamer.
En línea

Flamer


Desconectado Desconectado

Mensajes: 1.051


crack, crack y mas crack...


Ver Perfil WWW
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #7 en: 18 Diciembre 2019, 21:10 pm »

veo que no seles complico.....pienso hacer otro

Citar
Lo primero que llama la atención es que pesa muchísimo para el poco código que lleva, a ver si Flamer nos comenta el porqué.

[/quote]

no se por que pesara tanto como dices......sera el compilador..... lo compile con Dev-c++
« Última modificación: 21 Diciembre 2019, 02:24 am por Flamer » En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

BloodSharp


Desconectado Desconectado

Mensajes: 804


El Messi-Vegeta :D


Ver Perfil
Re: [Reto] Crackme Loki-Mouse Flamer
« Respuesta #8 en: 17 Marzo 2020, 08:03 am »

Lindo crackme para pasar el tiempo :silbar:

Key: 6x0d13ezuu

keygen.py
Código
  1. #!/usr/bin/env python2
  2.  
  3. import random
  4.  
  5. serial = [1,2,3,4,5,6,7,8,9,0]
  6. serial_string = ""
  7.  
  8. for x in range(0,10):
  9. serial[x] = random.randint(ord('a'),ord('z'))
  10.  
  11. serial[0] = random.randint(ord('0'),ord('z'))
  12. serial[5] = 9 + 96 - serial[0]
  13. serial[1] = random.randint(ord('a'),ord('z'))
  14. serial[4] = ((serial[1] + serial[0] + serial[5] - 144) % 10) + 48
  15. serial[2] = random.randint(ord('0'),ord('2'))
  16. serial[3] = random.randint(ord('6'),ord('z'))
  17.  
  18. for x in serial:
  19. serial_string += str(chr(x))
  20. print serial_string


B#
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crackme Nº1 De Flamer « 1 2 »
Ingeniería Inversa
Flamer 14 9,975 Último mensaje 13 Octubre 2011, 02:52 am
por Flamer
Crackme Vol. 4 Por Flamer
Ingeniería Inversa
Flamer 7 5,694 Último mensaje 7 Diciembre 2011, 23:59 pm
por chEEtos
Crackme 5 De Flamer
Ingeniería Inversa
Flamer 7 5,781 Último mensaje 14 Abril 2012, 01:21 am
por $Edu$
Reto Crackme 6 De Flamer « 1 2 3 4 »
Ingeniería Inversa
Flamer 30 16,432 Último mensaje 19 Enero 2013, 06:21 am
por apuromafo CLS
Reto Crackme 7 De Flamer « 1 2 »
Ingeniería Inversa
Flamer 12 6,506 Último mensaje 10 Septiembre 2012, 08:35 am
por apuromafo CLS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines