[RETO-CRACKME] Humanoid ASM Keygenme.

Iniciado por fary, 5 Abril 2016, 09:01 AM

0 Miembros y 1 Visitante están viendo este tema.

fary

Bueno, aquí un crackme que me descargue de esta página. Necesito un seríal, quien es capaz de desguazarlo?  >:D

Es nivel básico.

Descarga:

https://www.sendspace.com/file/vkl4oy

saludos.
Un byte a la izquierda.

josue9243

Facil:

http://prntscr.com/aoid9u

Valen los saltos de linea verdad e.e ?

Modifique el JMZ osea el if del code y lo saltee al msg.

engel lex

Cita de: josue9243 en  5 Abril 2016, 19:17 PM
Facil:

http://prntscr.com/aoid9u

Valen los saltos de linea verdad e.e ?

Modifique el JMZ osea el if del code y lo saltee al msg.

XD tampoco tanto XD por lo menos sacar un serial valido o el algoritmo de generacion
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

fary

#3
Claro hombre, jjejeje, el caso es sacar el un serial válido o el algorítmo.

Ejemplos válidos:

fary
ajty-691986804

elhacker
FEgjvWF4-1384025832


saludos.
Un byte a la izquierda.

Flamer

Fasil 3 minitos me tomo  averiguar  ;-)

Citar
Name:  polo

Serial:  l6j6-692011380


Name:  Flamer
Serial:  aE2RF4-1038004782


josue9243

Cita de: fary en  5 Abril 2016, 21:26 PM
Claro hombre, jjejeje, el caso es sacar el un serial válido o el algorítmo.

Ejemplos válidos:

fary
ajty-691986804

elhacker
FEgjvWF4-1384025832


saludos.


jeje para que sacar un keygen si podes saltearte a la ejecución del programa, después veo si puedo sacar un serial valido.

MCKSys Argentina

Keygen en python:

Código (python) [Seleccionar]

def main():
    base = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    alfaimpar = "AHyukjsdfkjsdfnPQU5xWERY67345aq9nFyR"
    alfapar = "o3zYzaI1982Tv2FasgjkkjhkjlJt5Dpe32Ax"
    nombre = raw_input("Ingresa tu nombre: ")
    if nombre:
        nombre = nombre.upper()
        codigo1 = ""
        DWSUM = 0
        par = True
        for car in nombre:
            if car not in base:
                print "El nombre solo puede contener letras y numeros!"
                return
            if par:
                codigo1 += alfapar[base.find(car)]
            else:
                codigo1 += alfaimpar[base.find(car)]
            par = not par
            DWSUM += (((ord(car) ^ 1) * 1024) ^ 0xa4ed0f7) - 0x29a
        serial = codigo1 + "-" + str(DWSUM)
        if len(serial) > 24:
            print "Nombre muy largo!"
            return
        print "serial: %s" % serial

if __name__ == '__main__':
    main()


Notar que el keygen verifica que el nombre contenga sólo letras y números (cosa que el crackme no hace). Si quieren ver cosas divertidas, corran el keygen con olly, pongan un BP en 401120 (la parte donde arma la primer parte del serial usando diccionarios) e ingresen caracteres como # ó % o cualquiera que no sean letras o números.

Saludos!

Cita de: josue9243 en  6 Abril 2016, 02:13 AM
jeje para que sacar un keygen si podes saltearte a la ejecución del programa, después veo si puedo sacar un serial valido.

El crackme viene con reglas, las cuales deberías respetar. Por ser algo tan sencillo, el parcheo está descartado desde el inicio (Además ese no es el espíritu que queremos se propague por quienes aprenden aquí  :P)
MCKSys Argentina

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


fary

Ahí va mi Keygen:

// KeygenMe Humanoid.
// Juan fary.

#include <stdio.h>
#include <stdlib.h>

char * Tabla1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char * Tabla2 = "AHyukjsdfkjsdfnPQU5xWERY67345aq9nFyR";
char * Tabla3 = "o3zYzaI1982Tv2FasgjkkjhkjlJt5Dpe32Ax";

char BufferTabla1[255];

void CadenaAMayus(char * Cadena); // Pasa letras minusculas a mayusculas.
void FunTabla1(char * Cadena); // Obtiene primera parte del serial.
void Fun2Parte(char * Cadena); // Obtiene segunda parte del serial.

int main()
{
char buffer[255];

printf("Introduce usuario: ");
scanf("%s", &buffer);

CadenaAMayus(buffer);
FunTabla1(buffer);
Fun2Parte(buffer);

system("PAUSE");
return 0;
}

void Fun2Parte(char * Cadena)
{
int i = 0;
int a = 0;
int Contador = 0;

while(Cadena[i] != 0)
{
a = Cadena[i];
a ^= 0;
a = a << 0xA;
a ^= 0x0A4ED0F7;
a -= 0x29A;
Contador = Contador + a;
i++;
}
printf("-%d\n", Contador);
}

void FunTabla1(char * Cadena)
{
int Contador = 0;
int i = 0;
int bandera = 0;

while (Cadena[i] != 0)
{
Contador = 0;
while(Cadena[i] != 0)
{

if (Tabla1[Contador] == Cadena[i] && bandera == 1)
{
printf("%c", Tabla2[Contador]);
bandera = 0;
break;
}else if (Tabla1[Contador] == Cadena[i] && bandera == 0)
{
printf("%c", Tabla3[Contador]);
bandera = 1;
break;
}
Contador++;
}
i++;
}
}

void CadenaAMayus(char * Cadena)
{
int i = 0;

while (Cadena[i] != 0)
{
if (Cadena[i] > 96 && Cadena[i] < 123)
{
Cadena[i] -= 0x20;
}
i++;
}
}


saludos  :P
Un byte a la izquierda.