*   >> Lezen Onderwijs artikelen >> science >> programming

Hoe naar Key Generators Zorg

- =========================== - Introductie ---------- - Ik neem geen verantwoordelijkheid van het gebruik van deze informatie. Deze tutorial is voor educatieve kennis ONLY. Hallo daar, in deze tutorial, ben ik van plan om je te leren hoe je een vrij eenvoudige keygen maken van een programma genaamd W3Filer 32 V1.1.3. W3Filer is een vrij goede web downloader ... Ik denk dat sommige van u misschien het programma te leren kennen. I `ll neem aan dat je weet: A.How om debugger gebruiken (in dit geval, SoftIce). B.

How te kraken, in het algemeen (het vinden van bescherming routines, patchen ze, etc ...). C.How om Disassembler (Deze kennis kan helpen) gebruiken. D.Assembly. E.How code in Turbo Pascal ™. Gereedschappen `ll behoefte: A.SoftIce 3.00 /01 of nieuwer. B.WD32Asm. (Geen must). C. De programma W3Filer V1.13 (indien niet in dit pakket), kunnen worden gevonden in www.windows95.com geloof ik. D.Turbo Pascal (alle versies). Nou, genoeg blah blah, laten we gaan kraken ... Run W3Filer 32.

Een nag screen pops, en eist registratie (Hmm, dit sux ;-)) Nu, we merken dit programma heeft een soort van serienummer (Mine is 873.977.046 ) Laten we de seriële in gedachten, ik wed dat we `ll weer ontmoeten, terwijl we op de debugger. Welnu, laten we je naam en een dummy reg code ... stel een BP op GetDlgItemTextA, en druk op OK. We pop in GetDlgItemTextA, Lets vindt de registratie routine ... I `ll bespaart u het werk, de registratie routine is dit:: 00404DB2 8D95A8FAFFFF lea edx, dword ptr [ebp + FFFFFAA8]: 00404DB8 52 push edx ---> Uw gebruikersnaam hier.

: 00404DB9 E80B550000 oproep 0040A2C9 ---> Registratie routine. : 00404DBE 83C408 toevoegen esp, 00000008 ---> Dunno precies wat het is. : 00404DC1 85C0-test eax, eax ---> Boolean identifier, 0 als: 00404DC3 7D17 JGE 00404DDC ---> registratie is mislukt, 1 als OK. Nou, laten we voer de CALL 40A2C9, en zien wat er binnenin: (Lees mijn commentaar in de code).

* Verwezen door een oproep op Adressen: |: 00404DB9,: 00407F76 | : 0040A2C9 55 push EBP: 0040A2CA 8BEC mov EBP, esp: 0040A2CC 81C4B0FEFFFF add esp, FFFFFEB0: 0040A2D2 53 push ebx: 0040A2D3 56 push ESI: 0040A2D4 57 push 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 * Verwezen door een (U) nconditional of © onditioneel Jump op Adres: |: 0040A2FB © | : 0040A2E2 0FBE0A movsx ecx, byte ptr [edx] ----> Hier start het interessante deel. : 0040A2E5 83F920 cmp ecx, 00.000.

020 ----> ECX is het de huidige char in de gebruikersnaam, Hmm, 20u = '' ...: 0040A2E8 740D je 0040A2F7 ----> Laten we eens kijken,: 0040A2EA 8A0A mov cl , byte ptr [edx] ----> In het algemeen, al deze lus doet, wordt het kopiëren van de gebruiker naam van [EDX], naar [ESI], zonder de spaties! (Hou dit in gedachten!).

: 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 * Verwezen door een (U) nconditional of © onditioneel Ga op Adres: |: 0040A2E8 © | : 0040A2F7 42 inc edx * Verwezen door een (U) nconditional of © onditioneel Jump op Adressen: |: 0040A2E0 (U): 0040A2F5 (U) | : 0040A2F8 803A00 cmp byte ptr [edx], 00: 0040A2FB 75E5 jne 0040A2E2 ----------------> Dit is de loop, kregen we wat het betekent, laten we verder opsporen van de code. ..

: 0040A2FD 56 push esi --------> De gebruikersnaam wordt geduwd, zodat het upcase tekens. * Verwijzing: USER32.CharUpperA, Ord: 0000h | : 0040A2FE E80F330000 Call Gebruiker CharUpper ---> Na deze, onze naam in hoofdletters. : 0040A303 56 push ESI -----> Onze naam in hoofdletters hier. * Verwijzing: cw3220mt._strlen, Ord: 0000h | : 0040A304 E86F300000 Call 0040D378 ---> Dit is de lengte van onze naam. : 0040A309 59 pop ecx: 0040A30A 8BC8 mov ecx, eax ---> ECX = lengte. : 0040A30C 83F904 cmp ecx, 00000004 ---> Lengte> = 4 (MUST). : 0040A30F 7D05 JGE 0040A316 ---> We gaan naar dit adres ...

: 0040A311 83C8FF of EAX, FFFFFFFF: 0040A314 EB67 JMP 0040A37D * Verwezen door een (U) nconditional of © onditioneel Jump op Adres: |: 0040A30F © | : 0040A316 33D2 xor edx, edx: 0040A318 33C0 xor eax, eax: 0040A31A 3BC8 cmp ecx, EAX: 0040A31C 7E17 JLE 0040A335 ---> (Niet belangrijk, gewoon een nutteloze controle).

================================================== ================================= ============ van hier en ON, DE CODE BELANGRIJK, LET ================== ========================== ================================================== ======= Eén ding voordat we verder, EDX = 00000000h nu we naar de volgende instructies. * Verwezen door een (U) nconditional of © onditioneel Jump op Adres: |: 0040A333 © | : 0040A31E 0FBE1C06 movsx ebx, byte ptr [ESI + EAX] ---> EBX naam, offset EAX. : 0040A322 C1E303 SHL ebx, 03 -----> Hmm, is SHL de char door 03h ... (Vergeet niet dat).

: 0040A325 0FBE3C06 movsx edi, byte ptr [ESI + EAX] ---> Nu EDI gebruikersnaam, offset EAX. : 0040A329 0FAFF8 imul edi, eax -----> Het vermenigvuldigt de char door de verschuiving in de naam van de gebruiker! (Onthoudt dat). : 0040A32C 03DF toevoegen ebx, edi -----> Voegt het resultaat EBX (Dat werd beschoten (Ding Dong =)). : 0040A32E 03D3 toevoegen edx, ebx -----> EDX = EDX + EBX !!! - Dit is de kern van deze registratie routine !!! : 0040A330 40 inc eax -----> Verhoging EAX door een (volgende char). : 0040A331 3BC8 cmp ecx, EAX: 0040A333 7FE9 jg 0040A31E ----> Als ECX lus.

* Verwezen door een (U) nconditional of © onditioneel Jump op Adres: |: 0040A31C © | : 0040A335 A120674100 mov eax, dword ptr [00.416.720] ---> Hmmmmmm, Wat is hier ????? : 0040A33A C1F803 sar eax, 03 ---------> WACHT! Vul in SICE '? EAX 'Betekent dit nummer in EAX je bekend voor ons? ;-) Als u nog steeds don `t begrijpen, dan, Het is onze SERIENUMMER! (AUB, neem je tijd, en te controleren door jezelf - `t geloof me). OK, dus nu weten we dat het SHR's EAX door 03 (SAR is bijna identiek aan SHR).

: 0040A33D 03D0 toevoegen edx, EAX ---------> Hmm, het voegt het resultaat uit de lus, het serienummer shr'd door 03h: 0040A33F 52 push edx -------> Laten we doorgaan . (Op dit punt, kan ik u zeggen, het reg nummer, is in EDX - alleen dat de reg nummer in HEX -> Dat is hoe je het in te voeren). * Mogelijke StringData Ref van gegevens Obj -> "% lx" | : 0040A340 685EF54000 push 0040F55E: 0040A345 8D95B0FEFFFF lea edx, dword ptr [ebp + FFFFFEB0]: 0040A34B 52 push edx * Verwijzing: USER32.

wsprintfA, Ord: 0000h | : 0040A34C E8E5320000 Call 0040D636 -------> Deze, doet HEX2STR (Neemt de waarde van EDX, en verandert het om een ​​hex string). : 0040A351 83C40C add esp, 0000000C: 0040A354 8D8DB0FEFFFF lea ecx, dword ptr [ebp + FFFFFEB0] -----> type 'd ecx' - dit is het reg nummer! Dat is genoeg voor ons, de rest van de code, is alleen voor het vergelijken van de juiste reg code met die van ons. : 0040A35A 51 push ecx * Verwijzing: USER32.

CharLowerA, Ord: 0000h | : 0040A35B E8B8320000 Call 0040D618: 0040A360 8D85B0FEFFFF lea eax, dword ptr [ebp + FFFFFEB0]: 0040A366 50 push eax: 0040A367 FF750C push [ebp + 0C] * Verwijzing: cw3220mt._strcmp, Ord: 0000h | : 0040A36A E875300000 Call 0040D3E4: 0040A36F 83C408 toevoegen esp, 00.000.008: 0040A372 85C0-test EAX, EAX: 0040A374 7405 je 0040A37B: 0040A376 83C8FF of EAX, FFFFFFFF: 0040A379 EB02 JMP 0040A37D * Verwezen door een (U) nconditional of © onditioneel Jump op Adres : |: 0040A374 © | : 0040A37B 33C0 xor eax, eax * Referenced door een (U) nconditional of © onditioneel Jump op Adressen: |: 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 Het maken van de werkelijke Keygen ~~~~~~~~~~~~~~~ ~~~~~~~~~ Nu, nadat ik heb uitgelegd hoe het programma berekent de registratie code, kunt u of schrijf uw eigen keymaker, zonder te kijken naar mijn code, of kijk op mijn code (in Turbo Pascal - sorry voor alles wat je C liefhebbers ;-) Volgende keer).

Dat is het, hier is de bron van mijn keygen: ------------------- hier Cut ------------------- -------------------------- Program W3FilerKeygen; var Key, SerialNum, EB, ED, cijfer: Longint; Ik, x: Byte; Naam, KeyHex: String; beginnen writeln ('W3Filer32 V1.1.3 Keymaker'); writeln ('gekraakt door ^ pijn ^' '97 /Rebels '!); Schrijf je naam:'); {Lees de naam} readln (naam); Schrijf ("Serienummer: '); readln (SerialNum); {Ja, we moeten het serienummer voor de berekening!} Key: = 0; x: = 0; Voor I: = 1 op lengte (naam) doen beginnen Naam [I]: = upcase (Naam [i]); Als Naam [I] '' dan beginnen eb: = ord (Naam [I]) SHL 3; {EB = Naam [I] Shl 03h} Ed: = ord (Naam [I]); {ED = Naam [I]} ed: = ed * (x); {ED = ED * Offset} inc (x); eb: = eb + ed; {Voeg ED EB} Key: = toets + EB; {Voeg EB aan KEY} end; einde; Key: = toets + (SerialNum SHR 3); {Voeg SerialNum SHR 03h naar Key} {Vanaf hier, dit is gewoon HEX2STRING -> `m vrij zeker van dat het Zelf explaintory, anders - gaan en te leren aantal bases weer! ;-)} KeyHex: = ''; repeat cijfer: = Key mod 16; key: = key div 16; Als cijfer als cijfer>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.