Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2007-05-29, 13:03
  #1
Medlem
Hej,
Sökte runt lite här på forumet utan nå info. Men iaf, min fundering är kring s.k "Key Generators", att skapa en nyckel som passar på exempel ett spel/program, etc etc... Och antar att själva nyckeln skapas randomized men utgår från en unik "mall". Det jag undrar är hur vet jag hur "mallen" ska se ut. och/eller hur skapar jag egna key/serial-generators?.

Alltså, jag vill exempel kunna skapa en key/serial-generator för ptja, sexspelet harry.


edit: inge förslag på att ja ska ladda hem serials. Det är inte dom i sig jag är ute efter just nu, utan veta hur man skapar generators.
Citera
2007-05-29, 13:24
  #2
Medlem
Mankishs avatar
Det lär väl vara en egen algorithm, finner du den så finner du hur den räknar ut keys.
Citera
2007-05-29, 14:03
  #3
Medlem
StefanHeterJags avatar
Citat:
Ursprungligen postat av Fnima
Hej,
Sökte runt lite här på forumet utan nå info. Men iaf, min fundering är kring s.k "Key Generators", att skapa en nyckel som passar på exempel ett spel/program, etc etc... Och antar att själva nyckeln skapas randomized men utgår från en unik "mall". Det jag undrar är hur vet jag hur "mallen" ska se ut. och/eller hur skapar jag egna key/serial-generators?.

Alltså, jag vill exempel kunna skapa en key/serial-generator för ptja, sexspelet harry.


edit: inge förslag på att ja ska ladda hem serials. Det är inte dom i sig jag är ute efter just nu, utan veta hur man skapar generators.
Först måste du ta reda på hur spelet verifierar nyckeln eller hur nyckeln är uppbyggd. Därefter gör du ett program som genererar valida nycklar utifrån det.

Finns inga genvägar om du vill göra det själv.
Citera
2007-05-29, 14:15
  #4
Medlem
phils avatar
Man måste väl även ner på assembler nivå. Om algoritmen finns i en exe fil så finns det program så man kan se hur exe filen är uppbyggd i assembler.

Kom på att jag hittade en länk förut här på forumet tror det var i datasäkerhets-forumet där det fanns en länk till en svensksida som gick igenom exakt hur man gör. Kan dock inte hitta den.
Citera
2007-05-29, 14:19
  #5
Medlem
nops avatar
Citat:
Ursprungligen postat av phil
Man måste väl även ner på assembler nivå. Om algoritmen finns i en exe fil så finns det program så man kan se hur exe filen är uppbyggd i assembler.

Kom på att jag hittade en länk förut här på forumet tror det var i datasäkerhets-forumet där det fanns en länk till en svensksida som gick igenom exakt hur man gör. Kan dock inte hitta den.

Japp, en disassembler och en hyffsad hexeditor kan komma till sin rätta här. En god kunskap inom 16/32bit asm är ett måste.

Om trådskaparen ställer en sådan här fråga har jag föga tro till att han eller hon kommer kunna skapa en egen keygen den närmaste tiden. No offense.
Citera
2007-05-29, 14:31
  #6
Medlem
Vilsens avatar
Det är nog precis som folk skrivit ovan.
Hur du än bär dig åt så kommer det bli väldigt mycket hårt arbete, och du måste först lära dig läsa koden och hitta var den relevanta koden ligger.
Den enda riktiga erfarenheten jag har är när jag skrev en keygen för ett program skrivet i VB.
Jag decompilerade programmet med p32dasm (vi kan för enkelheten säga att det är motsvarande assembler).
Det här var ett program där serienummret genererades från namnet man skrev in men det är inte så viktigt när man väl lärt sig grunderna.
När jag sedan kombinerade den decompilerade koden med en debugger där jag kunde stega fram steg för steg i koden och se vilka värden som gömde sig var så kunde jag genom många försök återskapa algoritmen och lägga den i mitt eget program.

När det gäller enbart serienummer kan det vara enklare eller svårare.
Du måste läsa på så bra du kan innan du ger dig in i det för annars kommer du inte förstå vad du gör.
Leta tutorials som handlar om liknande serialskydd
Citera
2007-05-29, 14:34
  #7
Medlem
StefanHeterJags avatar
Orkar man inte förstå sig på hur man genererar nycklarna när man väl kommit på hur det går till så kan man ju istället ge sig på programmet.

T.ex. om det är ett program som visar upp en nagscreen och en knapp som det dröjer 10 sekunder innan man kan klicka på den så kan man göra ett program som aktiverar knappen och klickar på den utan att dessa 10 sekunderna har gått m.m. Ibland kan det vara mycket enklare då det bara är att köra 2 api:er för att få handlen till knappen och sedan 1 api för att aktivera den och 1 api till för att utföra klicket.

Jag hade t.ex. ett installationsprogram från WISE som krävde lösenord innan installationen. Men eftersom det var helg och jag inte fick tag på leverantören så hade jag inte tillgång till lösenordet. Det fanns en "Installera"-knapp som var deaktiverad och som aktiveras om man skriver rätt lösenord i textrutan för lösenordet.

Då startade jag spy++, drog och släppte target-ikonen på installera-knappen, fick på det viset handle:n till knappen. Skrev 1 rad vb-kod som aktiverade knappen och voila, jag kunde installera utan problem.
Citera
2007-05-29, 15:08
  #8
Avstängd
OnYs avatar
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..
Citera
2007-05-29, 16:43
  #9
Medlem
nops avatar
Citat:
Ursprungligen postat av OnY
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..

Vill du göra det enkelt för dig *syftar till trådskaparen* så lägger du keygen på hyllan tills du har asm-grunderna i huvudet. Börja istället med att kringå kontrollrutinen av serienumret, dvs om du har ett program som kräver en nyckel så ser du till att oavsett vad du skriver in så godtas det. Efter bara några timmars pillande kan du med stor säkerlighet lösa en sådan uppgift.

Har du ingen större lust att _läsa_ så finns det video-tutorials att se på. Här är en gammal jag gjorde, som visar hur man kringår ett skydd på LeapFTP (video-tut):
http://www.awarenetwork.org/home/iqlord/tutorials/

Här är en gammal keygen jag skrev när Winzip fortfarande var på kartan:
http://www.awarenetwork.org/home/iql...nzip8.xkeygen/

Här är en annan lam liten keygen jag snurrade ihop för ett par år sedan (mIRC):
http://www.awarenetwork.org/home/iql...irc6.16keygen/

Källkod (C/C++) finns till ovanstående. Det är bara att sätta igång och fippla.

Lycka till

EDIT:------

Såg nu att källkoden till mIRC var lite utspridd: här är en länk till 6.12 releasen: http://www.awarenetwork.org/home/iql...c612keygen.cpp

6.16 release:
http://www.awarenetwork.org/home/iql...6.16%20keygen/

Gammal oldschool patch till LeapFTP: För _dig_ som vill göra det på det gamla hederliga sättet:
http://www.awarenetwork.org/home/iql...pftp275crk.asm

Zzzzzz nu lägger jag ner.
Citera
2007-05-30, 21:00
  #10
Medlem
Tackar tackar för så mycket!, som sakt jag har många timmar framöver, förstog inte ett smack av dessa assembler koder, men men det kommer väll


Åter, tack!


Edit: Filmerna kan vara väldigt sköna och få titta på.

skapa serials/keygenerators, är "samma" som cracka, med tanken på assembler, och debugging?
Citera
2007-05-31, 03:11
  #11
Avstängd
OnYs avatar
Citat:
Ursprungligen postat av Fnima
skapa serials/keygenerators, är "samma" som cracka, med tanken på assembler, och debugging?
man kan förenkla det med att keygen's är en mer ultimat form av cracking/reversing, om nu "orginal" programmet stödjer den möjligheten.
det är dock oftast lite jobbigare än att "patcha" ett program eller att leta upp ett serienummer etc.. i en del fall behöver man faktisk patcha/cracka ett program innan man slår sig till ro för att göra en keygen.. tex slår ut massa timers, loopar etc så inte debuggern "bryter" på dem så fort du drar musen över programmet.. för att vara ett grovt exempel.. detta är ju inget man gör för att gå förbi programmet's skydd.. mer för att kunna arbeta ostört..

så det blir ett ja på din fråga..
Citera
2007-06-01, 17:26
  #12
Medlem
Lyckholms avatar
Ett annat alternativ är att uppskatta hur lång tid det skulle ta att konstruera keygeneratorn. När man kommit fram till att det tar X dagar så genomför man en enkel matematisk algorithm i huvudet och kommer snabbt fram till att om man hade spenderat tiden på ett vanligt kneg på ICA, eller var som helst, hade lönen finansierat inte bara det spelet utan kanske 4-5 till. Köpta i butik. Helt lagligt.



Tänkte inte på det?
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback