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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


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

Desconectado Desconectado

Mensajes: 150


Ver Perfil
[Keygenme] Aspid
« en: 13 Marzo 2013, 15:04 pm »

Bueno, aqui les traigo un Keygenme nuevo.

Dificultad: [3/10] Me parece a mi...
Compilador: GCC
Objetivo: Hacer un Keygen.

Los Keygen por privado por favor.

Crackme

Espero que os guste y no lo reventeis en menos de 10 min jaja.



Hall of Fame
  • MCKSys Argentina
  • tincopasan
Sa1uDoS
« Última modificación: 21 Marzo 2013, 16:41 pm por mr.blood » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #1 en: 13 Marzo 2013, 20:59 pm »

Saludos mr.blood
                           sanguinario el nick jeje. entender el algoritmo de validación es fácil, menos de 10 minutos! pero soy muy perro para programar así que el keygen me llevará como 5 hs jaja. Ahora voy a trabajar, así que espero subirlo mañana. Buen laburo para practicar.
Bueno tuve un tiempito y te mandé el keygen!
« Última modificación: 14 Marzo 2013, 07:07 am por tincopasan » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #2 en: 14 Marzo 2013, 11:28 am »

Los Keygen por privado por favor.

 :huh:

Keygen en python:

Código
  1. import random
  2. import subprocess
  3.  
  4. def getSum (cadena):
  5.    sum = 0
  6.    for i in range(len(cadena)-1):
  7.        sum += ord(cadena[0]) + ord(cadena[i+1])
  8.    return sum
  9.  
  10. def getS0 (numero, largo):
  11.    for i in '0123456789ABCDEF':
  12.        if ((ord(i) * (largo - 1)) + (48 * (largo - 1))) > numero:
  13.            break
  14.    return i
  15.  
  16. def getSn1 (s0, largo, numero):
  17.    for i in range(largo-1):
  18.        cad = s0 + 'F' * (i+1)
  19.        ncad = cad + ('0' * (largo - (i+2)))
  20.        if getSum(ncad) > numero:
  21.            break
  22.    return 'F' * i
  23.  
  24. def get2ndString(numero):
  25.    lens = (numero / 140) + 2
  26.    s0 = getS0(numero, lens)
  27.    sn1 = getSn1(s0, lens, numero)
  28.    hallado = False
  29.    valor = 1
  30.    while not hallado:
  31.        snn = hex(valor).replace('0x','').upper()
  32.        largo = lens - (len(sn1) + len(snn) + 1)
  33.        cadena = s0 + sn1 + snn + ('0' * largo)
  34.        hallado = (getSum(cadena) == numero)
  35.        valor += 1
  36.    return s0 + '0' + sn1 + snn + ('0' * largo)
  37.  
  38. def main():
  39.    sid = raw_input('Ingrese ID:')
  40.    print('F4C3B4C0\n' + get2ndString(int(sid)))
  41.  
  42. if __name__ == '__main__':
  43.    main()
  44.  

PD: El programa es explotable. Si como pass ingresan un numero hexa cualquiera (por ej. A), luego enter y luego un string de 256 bytes, pisaran el return address de la funcion que hace la validación de la pass y podran hacer lo que quieran. No se pueden pasar ceros, pero se carga msvcrt, lo que permite jugar un poco.

EDIT: Si hago tiempo armo un mini tutorial.

Saludos!
« Última modificación: 14 Marzo 2013, 11:30 am por MCKSys Argentina » En línea

MCKSys Argentina

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

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #3 en: 14 Marzo 2013, 18:53 pm »

Espero que os haya gustado!



MCKSys Argentina Para entrar a la funcion de registrar deberias hacer una shellcode inyectarla, descifrar esa sección y cambiar la RET_Addr por la Addr de la funcion.

Por privado significa por Mensaje Privado ;).

Sa1uDoS
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #4 en: 14 Marzo 2013, 19:24 pm »

MCKSys Argentina Para entrar a la funcion de registrar deberias hacer una shellcode inyectarla, descifrar esa sección y cambiar la RET_Addr por la Addr de la funcion.

En principio seria asi. Como dije, se puede hacer cualquier cosa una vez pisado el retAddr.

Por privado significa por Mensaje Privado ;).

Claro. Lo que puse es porque no estoy de acuerdo en hacer este tipo de cosas en forma privada. Si el reto es publico, tambien lo es la solucion...  :P

Ese es el espiritu CLS!  ;D

Saludos!

PD: El tutorial demorara un poquito...
En línea

MCKSys Argentina

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

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #5 en: 14 Marzo 2013, 19:25 pm »

Era por que durara mas el reto xD. En unos dias (sobre el Domingo) publico el codigo en este mismo post.

Sa1uDoS
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #6 en: 14 Marzo 2013, 19:56 pm »

subi el keygen a la bosta de mediafire y lo bloquea! ahora lo subo a mega:
https://mega.co.nz/#!TFliACgQ!ITdfEUjQGXO1jC49DDbZ4TQotY4x6aLt-CSSagGLxmg

MCKSys que facil lo haces! en vb tuve q hacer como 10 llamadas! jaja q perro q soy
En línea

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #7 en: 21 Marzo 2013, 16:40 pm »

Bueno, como nadie mas se anima posteo el codigo.
Tuve que retocar la PE Section y cifrar la funcion felicita().

Para compilar
Código
  1. fasm funcion.asm
  2. gcc crackme.c funcion.obj -o crackme.exe

Código
  1. format coff
  2.  
  3. public _asm_comp
  4.  
  5.        _asm_comp:
  6.                push ebp
  7.                mov ebp, esp
  8.  
  9.                xor eax, eax ;Limpiamos los registros
  10.                xor ecx, ecx
  11.  
  12.                mov ebx, dword[esp+8] ;Movemos a ebx la direccion de felicita
  13.                mov ebx, dword[ebx]
  14.                mov edx, dword[esp+12] ;Movemos a edx la pass
  15.                bucle:
  16.                        xor dword[edx+ecx], ebx ;desciframos felicita
  17.                        add ecx, 4 ;Sumamos al contador un DWORD
  18.                        cmp ecx, 0x18 ;Comparamos el contador con 24
  19.                        jne bucle ;Si no es igual salta a bucle
  20.                cmp word[edx+5], 0xC718 ;Comparamos la firma (edx+5) para ver si la clave fue correcta
  21.                je exit ;Si es igual salimos (eax=0)
  22.                inc eax ;Incrementamos eax
  23.  
  24.                exit:
  25.                leave
  26.                ret
  27.  
  28.  

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int comp(char *cadena);
  7. void felicita();
  8. int asm_comp(void *buff, void *func);
  9.  
  10. int main()
  11. {
  12.        srand(time(NULL));
  13.        unsigned int ID=rand()%(9999-1000)+1000, i;
  14.        char buffer[100];
  15.        unsigned int pass;
  16.        printf("ID> %i\nPass> ", ID);
  17.        scanf("%8x%s", &pass, buffer);
  18.        if(comp(buffer)==1)
  19.        {
  20.                printf("Wrong pass\n");
  21.                getchar();
  22.                return 1;
  23.        }
  24.  
  25.        for(i=2;i<strlen(buffer);i++)
  26.        {
  27.                ID-=buffer[0]+buffer[i];
  28.        }
  29.        if(ID==0)
  30.        {
  31.                if(asm_comp(&pass, felicita)==0)
  32.                {
  33.                                felicita();
  34.                                return 0;
  35.                }
  36.                printf("Wrong pass\n");
  37.                getchar();
  38.                return 1;
  39.        }
  40.        printf("Wrong pass\n");
  41.        getchar();
  42.        return 1;
  43. }
  44.  
  45. int comp(char *cadena)
  46. {
  47.        int i;
  48.        for(i=0;i<strlen(cadena);i++)
  49.        {
  50.                if(!((cadena[i]>='0' && cadena[i]<='9') || (cadena[i]>='A' && cadena[i]<='F')))
  51.                {
  52.                        return 1;
  53.                }
  54.        }
  55.        return 0;
  56. }
  57.  
  58. void felicita()
  59. {
  60.        printf("Registered\n");
  61.        getchar();
  62. }
  63.  

Gracias a los que participaron! Que les parecio? Muy simple?

Sa1uDoS

P.D.: Se me complico un poco la semana, siento no haberlo publicado el Domingo.
« Última modificación: 21 Marzo 2013, 16:43 pm por mr.blood » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Keygenme] Aspid
« Respuesta #8 en: 21 Marzo 2013, 17:42 pm »

saludos mr.blood
Me parece buen trabajo, en cuanto a la dificultad depende de cada uno, soy bastante malo y no me llevo ver la forma de obtener el serial más de 10 minutos, supongo q a otros mucho menos, pero es que ya se han hecho varios así, pero insisto que está bueno para practicar.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
KeyGenMe SimpleNotepad « 1 2 »
Ingeniería Inversa
_Enko 15 7,463 Último mensaje 13 Agosto 2011, 06:31 am
por _Enko
KeygenME en ASM por Flamer
Ingeniería Inversa
Flamer 6 3,357 Último mensaje 26 Diciembre 2012, 10:21 am
por Tinkipinki
KeygenMe en D
Ingeniería Inversa
avesudra 2 2,310 Último mensaje 24 Enero 2013, 17:05 pm
por avesudra
[Keygenme] Litrico « 1 2 »
Ingeniería Inversa
mr.blood 16 7,536 Último mensaje 3 Febrero 2013, 15:56 pm
por fary
[KeygenMe] Android KeygenMe
Ingeniería Inversa
Høl¥ 0 2,077 Último mensaje 30 Enero 2013, 04:46 am
por Høl¥
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines