Citat:
Ursprungligen postat av Fnima
Det jag undrar är hur vet jag hur "mallen" ska se ut. och/eller hur skapar jag egna key/serial-generators?.:
de flesta serienummeralgoritmer är unika på sitt sätt. det jag kan säga på rak arm är att du bör ha asm kunskap och kan hantera dissassemblers / debuggers.. typ: wdasm, ollydbg, ida. vill du programmera en keygen så får du "hitta" ditt serienummer först så du vet var du skall utgå ifrån. det är dock långt ifrån alla program som skriver ut serienummer i "klartext" i debuggers, så då får du använda dina asm kunskaper för att hitta serial rutinen.
du får helt enkelt läsa massa tutorials.. ett lätt sätt att lära sig är att leta "keygenme's" som är lösta, så får du ett hum om hur de är gjorda.
skrev för någon vecka sen en bruteforcer för ett program där nycklarna inte går att generera, det finns inte en algoritm den följer. en liten del av denna kod är tagen från programmet. xor värdena mm. sen fick man skriva om resten för att det skulle passa in. som du säkert vet så har du inte samma "stack" som i programmet som i din keygen.
kikar du under så ser du principen hur jag löste det iaf.. nycklarna har en längd på 10 siffror.
jag börjar med att generera ett serial på detta sätt: 0000000000 kör in det i loopen, funkar den inte höjer nyckeln till 0000000001 och provar igen. 0000000002 osv. tills man får en träff.. den viktiga delen ser du här under..
denna bruteforcen genererade 1.9 miljoner valid serials.
calchex:
movzx ecx,byte ptr ds:[edi] ; flytta upp ett nummer till ecx
sub ecx,30h ; dra av 30 från det nummret.
lea eax,dword ptr ds:[eax+eax*4] ; kalkylera första hexvärdet
lea eax,dword ptr ds:[ecx+eax*2] ; kalkylera första hexvärdet
inc edi ; ta bort ett nummer från längden till nästa loop
inc esi ; counter för hur många nummer vi loopat
cmp esi,10 ; har vi kalkylerat alla 10 nummer?
jne
calchex
pop esi
xor eax,0E1E235D1h ; xor'a (kalkylera andra hexvärdet)
imul eax,eax,033C65319h ; kalkylera andra hexvärdet
xor edx,edx
mov ecx,1391h
div ecx ; här under strippar vi ner hexvärdet till - sidan.
mov eax,edx
neg eax
sbb eax,eax ; efter denna. FFFFFFFF = "bad key".. 0 = "good key"
inc eax ; höjer eax, till 0 eller 1
cmp eax,1 ; funkade nyckeln?
je success
ret
så detta är principen.. förstår du inget av detta så kan jag garantera dig att göra en keygen blir många hårda timmar för dig..