Autor
|
Tema: [Keygenme] Aspid (Leído 6,070 veces)
|
mr.blood
Desconectado
Mensajes: 150
|
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. CrackmeEspero 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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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
|
Los Keygen por privado por favor.
Keygen en python: import random import subprocess def getSum (cadena): sum = 0 for i in range(len(cadena)-1): sum += ord(cadena[0]) + ord(cadena[i+1]) return sum def getS0 (numero, largo): for i in '0123456789ABCDEF': if ((ord(i) * (largo - 1)) + (48 * (largo - 1))) > numero: break return i def getSn1 (s0, largo, numero): for i in range(largo-1): cad = s0 + 'F' * (i+1) ncad = cad + ('0' * (largo - (i+2))) if getSum(ncad) > numero: break return 'F' * i def get2ndString(numero): lens = (numero / 140) + 2 s0 = getS0(numero, lens) sn1 = getSn1(s0, lens, numero) hallado = False valor = 1 while not hallado: snn = hex(valor).replace('0x','').upper() largo = lens - (len(sn1) + len(snn) + 1) cadena = s0 + sn1 + snn + ('0' * largo) hallado = (getSum(cadena) == numero) valor += 1 return s0 + '0' + sn1 + snn + ('0' * largo) def main(): sid = raw_input('Ingrese ID:') print('F4C3B4C0\n' + get2ndString(int(sid))) if __name__ == '__main__': main()
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
Mensajes: 150
|
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
|
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... Ese es el espiritu CLS! 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
Mensajes: 150
|
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
|
|
|
|
|
mr.blood
Desconectado
Mensajes: 150
|
Bueno, como nadie mas se anima posteo el codigo. Tuve que retocar la PE Section y cifrar la funcion felicita(). Para compilar fasm funcion.asm gcc crackme.c funcion.obj -o crackme.exe
format coff public _asm_comp _asm_comp: push ebp mov ebp, esp xor eax, eax ;Limpiamos los registros xor ecx, ecx mov ebx, dword[esp+8] ;Movemos a ebx la direccion de felicita mov ebx, dword[ebx] mov edx, dword[esp+12] ;Movemos a edx la pass bucle: xor dword[edx+ecx], ebx ;desciframos felicita add ecx, 4 ;Sumamos al contador un DWORD cmp ecx, 0x18 ;Comparamos el contador con 24 jne bucle ;Si no es igual salta a bucle cmp word[edx+5], 0xC718 ;Comparamos la firma (edx+5) para ver si la clave fue correcta je exit ;Si es igual salimos (eax=0) inc eax ;Incrementamos eax exit: leave ret
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int comp(char *cadena); void felicita(); int asm_comp(void *buff, void *func); int main() { unsigned int ID =rand()%(9999-1000)+1000, i ; char buffer[100]; unsigned int pass; scanf("%8x%s", &pass , buffer ); if(comp(buffer)==1) { return 1; } for(i=2;i<strlen(buffer);i++) { ID-=buffer[0]+buffer[i]; } if(ID==0) { if(asm_comp(&pass, felicita)==0) { felicita(); return 0; } return 1; } return 1; } int comp(char *cadena) { int i; for(i=0;i<strlen(cadena);i++) { if(!((cadena[i]>='0' && cadena[i]<='9') || (cadena[i]>='A' && cadena[i]<='F'))) { return 1; } } return 0; } void felicita() { }
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
KeyGenMe SimpleNotepad
« 1 2 »
Ingeniería Inversa
|
_Enko
|
15
|
7,502
|
13 Agosto 2011, 06:31 am
por _Enko
|
|
|
KeygenME en ASM por Flamer
Ingeniería Inversa
|
Flamer
|
6
|
3,378
|
26 Diciembre 2012, 10:21 am
por Tinkipinki
|
|
|
KeygenMe en D
Ingeniería Inversa
|
avesudra
|
2
|
2,323
|
24 Enero 2013, 17:05 pm
por avesudra
|
|
|
[Keygenme] Litrico
« 1 2 »
Ingeniería Inversa
|
mr.blood
|
16
|
7,573
|
3 Febrero 2013, 15:56 pm
por fary
|
|
|
[KeygenMe] Android KeygenMe
Ingeniería Inversa
|
Høl¥
|
0
|
2,090
|
30 Enero 2013, 04:46 am
por Høl¥
|
|