*   >> Lese Utdanning Artikler >> science >> programming

Hvordan lage Nøkkel Generatorer

-? =========================== - Introduksjon ---------- - Jeg tar ikke noe ansvar for bruken av denne informasjonen. Denne opplæringen er for pedagogiske kunnskap KUN. Hei der, i denne opplæringen, jeg har tenkt å lære deg hvordan å lage en ganske enkel keygen, av et program kalt W3Filer 32 V1.1.3. W3Filer er en ganske god web overførte ... Jeg antar at noen av dere kanskje vet programmet. `Ll anta at du vet: A.How å bruke debugger (i dette tilfellet, softice). B.How å knekke, generelt (finne beskyttelse rutiner, patching dem, osv ...). C.

How å bruke Disassembler (Denne kunnskapen kan hjelpe). D.Assembly. E.How å kode i Turbo Pascal ™. Verktøy `ll trenger: A.SoftIce 3.00 /01 eller nyere. B.WD32Asm. (Ikke et must). C. Den program W3Filer V1.13 (om ikke i denne pakken), kan finnes i www.windows95.com tror jeg. D.Turbo Pascal (alle versjoner). Vel, nok blah blah, la oss gå sprukket ... Run W3Filer 32.

A maser skjermen spretter, og krever registrering (Hmm, dette sux ;-)) Nå, Vi ser dette programmet har en slags serienummer (Mine er 873 977 046 ), La oss holde serie i tankene, jeg vedder vi vil møte det på nytt når vi er på debugger. Vel, nå, la oss sette ditt navn og en dummy reg kode ... satt en BP på GetDlgItemTextA, og trykker OK. Vi pop inne GetDlgItemTextA, Lar finne registreringsrutine ... `ll spare deg arbeidet, er registreringen rutine dette:: 00404DB2 8D95A8FAFFFF lea EDX, dword ptr [EBP + FFFFFAA8]: 00404DB8 52 push-EDX ---> Din brukernavn her.

: 00404DB9 E80B550000 samtale 0040A2C9 ---> Registrering rutine. : 00404DBE 83C408 legge esp, 00000008 ---> Dunno nøyaktig hva det er. : 00404DC1 85C0 test eax, eax ---> boolsk identifikator, 0 hvis: 00404DC3 7D17 JGE 00404DDC ---> registrering mislyktes, en hvis OK. Vel, la oss gå inn i CALL 40A2C9, og se hva som er inni den: (Vennligst les mine kommentarer i koden).

* Referert av en samtale på Adresser: |: 00404DB9,: 00407F76 | : 0040A2C9 55 push-EBP: 0040A2CA 8BEC mov EBP, esp: 0040A2CC 81C4B0FEFFFF legge 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 * Referert av en (U) nconditional eller © onditional Jump på Adresse: |: 0040A2FB © | : 0040A2E2 0FBE0A movsx ECX, byte ptr [EDX] ----> Her Starter interessante delen.

: 0040A2E5 83F920 cmp ECX, 00000020 ----> ECX er den gjeldende røye i brukernavnet, hmm, 20h = '' ...: 0040A2E8 740D je 0040A2F7 ----> La oss se,: 0040A2EA 8A0A mov cl byte ptr [EDX] ----> Vanligvis all denne sløyfen gjør, kopierer brukernavnet fra [EDX], til [ESI], UTEN mellomrom! (Husk dette!). : 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 * Referert av en (U) nconditional eller © onditional Gå på Adresse: |: 0040A2E8 © | : 0040A2F7 42 inc EDX * Referert av en (U) nconditional eller © onditional Jump på Adresser: |: 0040A2E0 (U),: 0040A2F5 (U) | : 0040A2F8 803A00 cmp byte ptr [EDX], 00: 0040A2FB 75E5 jne 0040A2E2 ----------------> Dette er loop, fikk vi hva det betyr, la oss fortsette å spore koden.

..: 0040A2FD 56 push-esi --------> Brukernavnet er presset, for å upcase det er tegn. * Referanse: USER32.CharUpperA, Ord: 0000h | : 0040A2FE E80F330000 Call User CharUpper ---> Etter dette er vårt navn i store bokstaver. : 0040A303 56 push-esi -----> Vårt navn i store bokstaver her. * Referanse: cw3220mt._strlen, Ord: 0000h | : 0040A304 E86F300000 Call 0040D378 ---> Dette er lengden på navnet vårt. : 0040A309 59 pop ECX: 0040A30A 8BC8 mov ECX, eax ---> ECX = Lengde. : 0040A30C 83F904 cmp ECX, 00000004 ---> Lengde> = 4 (må). : 0040A30F 7D05 JGE 0040A316 ---> La oss gå til denne adressen ...

: 0040A311 83C8FF eller EAX, FFFFFFFF: 0040A314 EB67 jmp 0040A37D * Referert av en (U) nconditional eller © onditional Jump på Adresse: |: 0040A30F © | : 0040A316 33D2 xor EDX, EDX: 0040A318 33C0 xor eax, eax: 0040A31A 3BC8 cmp ECX, eax: 0040A31C 7E17 JLE 0040A335 ---> (Ikke viktig, bare en annen unyttig kontroll).

================================================== ================================= ============ HERFRA OG PÅ, VIKTIG KODE, ta hensyn ================== ========================== ================================================== ======= En ting før vi fortsetter, EDX = 00000000h som vi går inn i de neste instruksjonene. * Referert av en (U) nconditional eller © onditional Jump på Adresse: |: 0040A333 © | : 0040A31E 0FBE1C06 movsx ebx, byte ptr [esi + eax] ---> EBX navn, offset EAX. : 0040A322 C1E303 SHL ebx, 03 -----> Hmm, det er SHL røye ved 03h ... (Husk at).

: 0040A325 0FBE3C06 movsx edi, byte ptr [esi + eax] ---> Nå EDI brukernavn, offset EAX. : 0040A329 0FAFF8 imul edi, EAX -----> Det multipliserer røye av forskyvningen i brukernavnet! (Husk at). : 0040A32C 03DF legge ebx, edi -----> Legger resultatet til EBX (Som ble beskutt (Ding Dong =)). : 0040A32E 03D3 legge EDX, ebx -----> EDX = EDX + EBX !!! - Dette er kjernen i denne registreringen rutine !!! : 0040A330 40 inc eax -----> Økning EAX etter én (neste røye). : 0040A331 3BC8 cmp ECX, eax: 0040A333 7FE9 jg 0040A31E ----> Hvis ECX loop.

* Referert av en (U) nconditional eller © onditional Jump på Adresse: |: 0040A31C © | : 0040A335 A120674100 mov eax, dword ptr [00416720] ---> hmmmmmm, Hva finnes her ????? : 0040A33A C1F803 sar EAX, 03 ---------> VENT! Vennligst skriv Sice '? EAX 'Betyr dette nummeret i EAX ser kjent ut for oss? ;-) Hvis du fortsatt forstår ikke, enn, det er vår SERIENUMMER! (PLEASE, ta deg tid, og sjekke selv - don`t stole på meg). OK, så nå vet vi at det SHR er EAX av 03 (SAR er nesten identisk med SHR).

: 0040A33D 03D0 legge EDX, EAX ---------> Hmm, det legger resultatet fra loop, serienummeret shr'd etter 03h: 0040A33F 52 push-EDX -------> La oss fortsette . (På dette punktet, kan jeg fortelle deg, reg nummer, er i EDX - bare at reg nummer er i HEX -> Det er slik du skriver det). * Mulig StringData Ref fra data Obj -> "% lx" | : 0040A340 685EF54000 presse 0040F55E: 0040A345 8D95B0FEFFFF lea EDX, dword ptr [EBP + FFFFFEB0]: 0040A34B 52 push-EDX * Referanse: USER32.

wsprintfA, Ord: 0000h | : 0040A34C E8E5320000 Call 0040D636 -------> Dette gjør HEX2STR (tar verdien fra EDX, og snur det til en hex streng). : 0040A351 83C40C legge esp, 0000000C: 0040A354 8D8DB0FEFFFF lea ECX, dword ptr [EBP + FFFFFEB0] -----> type 'd ECX' - dette er reg nummer! Det er nok for oss, resten av koden, er bare for å sammenligne riktig reg kode med vår. : 0040A35A 51 push-ECX * Referanse: USER32.

CharLowerA, Ord: 0000h | : 0040A35B E8B8320000 Call 0040D618: 0040A360 8D85B0FEFFFF lea EAX, dword ptr [EBP + FFFFFEB0]: 0040A366 50 push-eax: 0040A367 FF750C trykk [EBP + 0C] * Referanse: cw3220mt._strcmp, Ord: 0000h | : 0040A36A E875300000 Call 0040D3E4: 0040A36F 83C408 legge esp, 00000008: 0040A372 85C0 test eax, eax: 0040A374 7405 je 0040A37B: 0040A376 83C8FF eller EAX, FFFFFFFF: 0040A379 EB02 jmp 0040A37D * Referert av en (U) nconditional eller © onditional Jump på Adresse : |: 0040A374 © | : 0040A37B 33C0 xor eax, eax * Referert av en (U) nconditional eller © onditional Jump 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 Making selve Keygen ~~~~~~~~~~~~~~~ ~~~~~~~~~ Nå, etter at jeg har forklart hvordan programmet beregne registreringskoden, kan du enten skrive din egen keymaker, uten å se på min kode, eller se på min kode (i Turbo Pascal - beklager for alle dere C elskere ;-) Neste gang).

Det er det, her er kilden til min keygen: ------------------- Klipp her ------------------- -------------------------- Program W3FilerKeygen; Var Key, SerialNum, EB, ED, siffer: Longint; Jeg, x: Byte; Navn, KeyHex: String; begynne Writeln ('W3Filer32 V1.1.3 Keymaker'); writeln ('Cracked av ^ smerte ^' '97 /Rebels '!); Skriv ('Ditt navn:'); {Les navnet} readln (navn); Skriv ('Serienummer:'); readln (SerialNum); {Ja, vi trenger serienummeret for beregningen!} Key: = 0; x: = 0; For jeg: = 1 til lengde (navn) gjør begynne Navn [I]: = upcase (Navn [i]); Hvis Navn [I] '' da begynne eb: = ord (Navn [I]) SHL 3; {EB = Navn [I] Shl 03h} Ed: = ord (Navn [I]); {ED = Navn [I]} ed: = ed * (x); {ED = ED * Offset} inc (x); eb: = eb + ed; {Legg ED til EB} Key: = Key + EB; {Legg EB til KEY} slutten; slutt; Nøkkel: = Key + (SerialNum shr 3); {Legg SerialNum shr 03h til Key} {Herfra dette er bare HEX2STRING -> I`m ganske sikker på at det er selv explaintory, annet - gå og lære tall baser igjen! ;-)} KeyHex: = ''; gjenta siffer: = Key mod 16; key: = nøkkel div 16; Hvis sifret Hvis sifret>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.