Bueno, aquí un crackme que me descargue de esta página (http://crackmes.de/users/deurus/humanoid_asm_keygenme). Necesito un seríal, quien es capaz de desguazarlo? >:D
Es nivel básico.
Descarga:
https://www.sendspace.com/file/vkl4oy
saludos.
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.
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
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.
Fasil 3 minitos me tomo averiguar ;-)
Citar
Name: polo
Serial: l6j6-692011380
Name: Flamer
Serial: aE2RF4-1038004782
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.
Keygen en python:
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)
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