*   >> läser Utbildning artiklar >> science >> programming

Hur man gör Key Generatorer

-? =========================== - Introduktion ---------- - Jag tar inget ansvar för användning av denna information. Denna handledning är för pedagogisk kunskap ENDAST. Hej, i denna tutorial, jag har för avsikt att lära dig hur man gör en ganska enkel keygen, ett program som heter W3Filer 32 V1.1.3. W3Filer är en ganska bra webb Downloader ... Jag antar att några av er kanske känner till programmet. I `ll antar att du vet: A.How att använda debugger (i det här fallet, SoftICE). B.How att knäcka, i allmänhet (finna skydd rutiner, patchning dem, etc ...). C.

How att använda Disassembler (Denna kunskap kan hjälpa). D.Assembly. E.How till kod i Turbo Pascal ™. Verktyg `ll behov: A.SoftIce 3.00 /01 eller nyare. B.WD32Asm. (Inte ett måste). C.The program W3Filer v1.13 (om inte i detta paket), kan återfinnas i www.windows95.com tror jag. D.Turbo Pascal (alla versioner). Jo, nog bla bla, låt oss gå sprickbildning ... Kör W3Filer 32. En tjata skärm poppar, och kräver registrering (Hmm, detta sux ;-)) nu, vi märker detta program har någon form av serienumret (Mine är 873.977.

046 ), låt oss hålla följetong i åtanke, jag satsade vi `ll möter den igen medan vi är på debugger. Nå, låt oss sätta ditt namn och en dummy reg kod ... ställa in en BP på GetDlgItemTextA, och tryck på OK. Vi pop inne GetDlgItemTextA, Låter hitta registreringsrutinen ... `ll bespara dig arbete, är registreringsrutinen detta: 00404DB2 8D95A8FAFFFF lea EDX, dword ptr [EBP + FFFFFAA8]: 00404DB8 52 tryck edx ---> Din användarnamn här. : 00404DB9 E80B550000 samtal 0040A2C9 ---> Registrerings rutin. : 00404DBE 83C408 lägga esp, 00000008 ---> Dunno exakt vad är det.

: 00404DC1 85C0 prov eax, EAX ---> Boolean identifierare, 0 om: 00404DC3 7D17 JGE 00404DDC ---> registreringen misslyckats, en om OK. Tja, låt oss in i CALL 40A2C9, och se vad som finns inuti det: (Läs mina kommentarer i koden). * Hänvisningar en CALL på Adresser: |: 00404DB9,: 00407F76 | : 0040A2C9 55 tryck EBP: 0040A2CA 8BEC mov EBP, esp: 0040A2CC 81C4B0FEFFFF lägga esp, FFFFFEB0: 0040A2D2 53 tryck EBX: 0040A2D3 56 tryck ESI: 0040A2D4 57 tryck edi: 0040A2D5 8B5508 mov EDX, dword ptr [EBP + 08]: 0040A2D8 8DB500FFFFFF lea esi, dword ptr [EBP + FFFFFF00]: 0040A2DE 33C0 XOR eax, EAX: 0040A2E0 EB16 JMP 0040A2F8 * Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adress: |: 0040A2FB © | : 0040A2E2 0FBE0A movsx ECx, byte ptr [EDX] ----> Här Startar den intressanta delen.

: 0040A2E5 83F920 cmp ECx, 00000020 ----> ECX är aktuell röding i användarnamn, Hmm, 20h = '' ...: 0040A2E8 740D je 0040A2F7 ----> Låt oss se,: 0040A2EA 8A0A mov cl , byte ptr [EDX] ----> Generellt allt denna slinga gör, kopierar användarnamnet från [EDX], till [ESI], utan lokalerna! (Ha detta i åtanke!).

: 0040A2EC 880C06 mov byte ptr [ESI + eax], cl: 0040A2EF 42 inc EDX: 0040A2F0 40 inc EAX: 0040A2F1 C6040600 mov byte ptr [ESI + eax], 00: 0040A2F5 EB01 JMP 0040A2F8 * Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adress: |: 0040A2E8 © | : 0040A2F7 42 inc edx * Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adresser: |: 0040A2E0 (U),: 0040A2F5 (U) | : 0040A2F8 803A00 cmp byte ptr [EDX], 00: 0040A2FB 75E5 JNE 0040A2E2 ----------------> Detta är slingan, fick vi vad den gör, låt oss fortsätta spåra koden. ..

: 0040A2FD 56 tryck esi --------> Användarnamnet trycks, för att Upcase det är tecken. * Referens Till: USER32.CharUpperA, Ord: 0000H | : 0040A2FE E80F330000 Samtalsanvändar CharUpper ---> Efter detta är vårt namn i versaler. : 0040A303 56 tryck esi -----> Vårt namn i versaler här. * Referens Till: cw3220mt._strlen, Ord: 0000H | : 0040A304 E86F300000 Ring 0040D378 ---> Detta är längden på vårt namn. : 0040A309 59 pop ECx: 0040A30A 8BC8 mov ECx, EAX ---> ECX = längd. : 0040A30C 83F904 cmp ECx, 00.000.004 ---> längd> = 4 (MUST). : 0040A30F 7D05 JGE 0040A316 ---> Låt oss gå till denna adress ...

: 0040A311 83C8FF eller EAX, FFFFFFFF: 0040A314 EB67 JMP 0040A37D * Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adress: |: 0040A30F © | : 0040A316 33D2 xor EDX, EDX: 0040A318 33C0 XOR eax, EAX: 0040A31A 3BC8 cmp ECx, EAX: 0040A31C 7E17 JLE 0040A335 ---> (Inte viktigt, bara en annan värdelös kontroll).

================================================== ================================= ============ FRÅN här och på, DET VIKTIGT CODE, uppmärksamma ================== ========================== ================================================== ======= En sak innan vi fortsätter, EDX = 00000000h när vi går in till nästa instruktion. * Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adress: |: 0040A333 © | : 0040A31E 0FBE1C06 movsx EBX, byte ptr [ESI + eax] ---> EBX namn, offset EAX. : 0040A322 C1E303 SHL EBX, 03 -----> Hmm, det SHL är rödingen med 03h ... (Kom ihåg att).

: 0040A325 0FBE3C06 movsx edi, byte ptr [ESI + eax] ---> Nu EDI användarnamn, offset EAX. : 0040A329 0FAFF8 imul edi, EAX -----> Det multiplicerar rödingen av förskjutningen i användarnamn! (Kom ihåg det). : 0040A32C 03DF lägga EBX, edi -----> Lägger resultatet till EBX (Det var skalade (Ding Dong =)). : 0040A32E 03D3 lägga EDX, EBX -----> EDX = EDX + EBX !!! - Detta är kärnan i denna registrering rutin !!! : 0040A330 40 inc eax -----> Öka EAX med en (nästa char). : 0040A331 3BC8 cmp ECx, EAX: 0040A333 7FE9 jg 0040A31E ----> Om ECX slinga.

* Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adress: |: 0040A31C © | : 0040A335 A120674100 mov eax, dword ptr [00416720] ---> hmmmmmm Vad finns här ????? : 0040A33A C1F803 sar EAX, 03 ---------> VÄNTA! Vänligen skriv in SICE '? EAX "Innebär detta nummer i EAX ser bekant för oss? ;-) Om du fortfarande don `t förstå, än, det är vår SERIENUMMER! (SNÄLLA, ta din tid och kolla själv - don`t lita på mig). OK, så nu vet vi Att det SHR: s EAX med 03 (SAR är nästan identisk med SHR).

: 0040A33D 03D0 lägga EDX, EAX ---------> Hmm, lägger resultatet från slingan, serienumret shr'd av 03h: 0040A33F 52 tryck edx -------> Låt oss fortsätta . (Vid denna punkt, kan jag tala om för er, reg nummer är i EDX - bara att reg numret finns i HEX -> Det är hur du skriver det). * Möjligt StringData Ref från Data Obj -> "% lx" | : 0040A340 685EF54000 tryck 0040F55E: 0040A345 8D95B0FEFFFF lea EDX, dword ptr [EBP + FFFFFEB0]: 0040A34B 52 tryck edx * Referens Till: USER32.

wsprintfA, Ord: 0000H | : 0040A34C E8E5320000 Call 0040D636 -------> Detta gör HEX2STR (Tar värdet från EDX, och förvandlar den till en hex sträng). : 0040A351 83C40C lägga esp, 0000000C: 0040A354 8D8DB0FEFFFF lea ECx, dword ptr [EBP + FFFFFEB0] -----> typ "d ECx" - detta är reg nummer! Det är tillräckligt för oss, resten av koden är bara för att jämföra rätt reg koden med vårt. : 0040A35A 51 tryck ECx * Referens Till: USER32.

CharLowerA, Ord: 0000H | : 0040A35B E8B8320000 Ring 0040D618: 0040A360 8D85B0FEFFFF lea eax, dword ptr [EBP + FFFFFEB0]: 0040A366 50 tryck eax: 0040A367 FF750C tryck [EBP + 0C] * Referens Till: cw3220mt._strcmp, Ord: 0000H | : 0040A36A E875300000 Call 0040D3E4: 0040A36F 83C408 lägga esp, 00000008: 0040A372 85C0 prov eax, EAX: 0040A374 7405 je 0040A37B: 0040A376 83C8FF eller EAX, FFFFFFFF: 0040A379 EB02 JMP 0040A37D * Hänvisningar en (U) nconditional eller © illkorad Jump på Adress : |: 0040A374 © | : 0040A37B 33C0 XOR eax, EAX * Hänvisningar en (U) nconditional eller © illkorad Hoppa på Adresser: |: 0040A314 (U),: 0040A379 (U) | : 0040A37D 5F pop edi: 0040A37E 5E pop ESI: 0040A37F 5B pop EBX: 0040A380 8BE5 mov esp, EBP: 0040A382 5D pop EBP: 0040A383 C3 ret göra själva Keygen ~~~~~~~~~~~~~~~ ~~~~~~~~~ Nu, efter att jag har förklarat hur programmet beräkna registreringskoden kan du antingen skriva din egen Nyckelmakaren, utan att titta på min kod, eller titta på min kod (i Turbo Pascal - sorry för alla er C älskare ;-) Nästa gång).

Det är det, här är källan till min keygen: ------------------- Klipp här ------------------- -------------------------- Program W3FilerKeygen; var Key, SerialNum, EB, ED, siffra: Longint; Jag, x: Byte; Namn, KeyHex: String; börja writeln ('W3Filer32 V1.1.3 Keymakeren'); writeln ("Knäckt av ^ smärta ^ ''97 /rebeller"!); Skriv ditt namn:'); {Läs namnet} readln (namn); Skriv ("Serial Number: '); readln (SerialNum); {Ja, vi behöver serienumret för beräkningen!} Key: = 0; x: = 0; För I: = 1 längd (namn) gör börja Namn [I]: = upcase (Namn [i]); Om Namn [I] '' sedan börja eb: = ord (Namn [I]) shl 3; {EB = Namn [I] Shl 03h} Ed: = ord (Namn [I]); {ED = Namn [I]} ed: = ed * (x); {ED = ED * Offset} inc (x); eb: = eb + ed; {Lägg till ED EB} Förklaring: = Key + EB; {Lägg till EB till KEY} ände; avsluta; Nyckel: = Key + (SerialNum shr 3); {Lägg till SerialNum SHR 03h till Key} {Härifrån detta bara HEX2STRING -> I`m helt säker på att det är själv explaintory, annars - gå och lära antal baser igen! ;-)} KeyHex: = ''; upprepa siffra: = Key mod 16; nyckel: = nyckel div 16; Om siffran Om siffra>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.