[ MAIN | RE LAB | CODING LAB | GUIDE | RESOURCES | SEARCH ]

[ RE Lab | Essays | Projects ]

Kraken op z'n Nederlands - deel 1 (Dutch only!)

by Knotty Dread

Target: Niet van toepassing
Difficulty: Makkelijk
Tools used: Dit stuk text, en wat hersens.
Date: 01-02-'99
 

Essay

Wat is 'cracking'?


Cracking is het kraken van een beveiling. Meestal wordt er in de computerwereld het kraken van software beveiligingen bedoeld. Registraties, CD-Checks, Nag-screens etc. Cracking moet je niet verwarren met Hacking. Hacking is het inbreken in computers. Beide gebieden hebben veel volgelingen, en het hangt van jezelf af wat je wilt. Hacking is over het algemeen 'gevaarlijker' en strafbaarder dan Cracking. Cracking is over het algemeen ongevaarlijk. Als je je cracks gaat verspreiden, dan begeef je je in een grijs gebied, maar over het algemeen nog in een safearea. Inbreken is meestal een stuk ongewilder, en daarom ook vaak een uitdaging. Als je meer over Hacking wilt weten, ben je bij mij aan het verkeerde adres.
Cracking houdt dus het kraken van beveiligingen in, maar ook meer. Reality Cracking zoals het genoemd wordt, ik noem het liever Reality Reversing, is in feite de wereld om je heen met argusogen bekijken. Als je dat doet dan vallen bepaalde strategien op. Supermarkten zijn meesters in het verleiden van mensen, denk maar eens aan de wandelrichting.... Nog even wat sigaretten en snoepgoed bij de kassa, etc. Als je dit doorhebt, zullen ze jou een stuk minder makkelijk in de luren leggen.

Hoe 'crack' je?


Dit kan op verschillende manieren, ik zal de twee bekendste ff snel uitleggen.

Debuggen en DeadListen.


DeBuggen. Je laat een speciaal programma, een debugger meelopen met het
programma wat je wilt kraken. Een debugger is bedoelt voor programeurs om
fouten in programma's op te speuren. Je kunt een debugger laten 'breaken' op
bepaalde acties. Dit kunnen bepaalde delen van een programma zijn, die je
zelf instelt, of speciale API calls. Dit zijn standaard window routines die
vaak gebruikt worden, zoals bijv. GetDlgItemTextA en GetWindowTextA. Dit
zijn twee zeer veel gebruikte routines die in Windows zitten
ingeprogrammeerd en door een programma kunnen worden ge'called', opgeroepen
dus. Beide zorgen ze ervoor dat bepaalde text in het geheugen wordt
gecopieerd, en daar dus leuke dingen mee gedaan kunnen worden.
De beste Debugger is Soft Ice, zonder twijfel. SoftIce is een prachtig stuk
gereedschap, maar je moet er wel een beetje mee om kunnen gaan, en dat vergt
veel tijd en oefening.
Als je met een programma mee gaat lopen op het moment dat het beslist of een code goed of niet is, dan kan je misschien wel meekijken hoe het tot die beslissing komt. En jouw code daar aan aanpassen. misschien vindt je een complete code, misschien zie je dat bepaalde stukje van jouw code worden vergeleken, en dan verander je je code daaraan.
Lees NLKRAK2.TXT voor een uitleg in het kraken met SoftIce.

DeadListen. Deadlisten is een programma door een Dissassembler, of
decompiler heenhalen zodat je tegen een interpretatie van de broncode
kijkt. Disassemblen levert een broncode in Assembler op, niet echt veel
makkelijke dingen levert dit op voor de leek. Decompilen is het omzetten van een programma in z'n zogoedmogelijkbenaderde broncode. Zoals de programmeur die ingetypt heeft. Het probleem is dat je dus moet weten in welke taal een programma geschreven is, en dan nog een goede decompiler vinden.
Als je eenmaal een broncode hebt kan je kijken wat het programma doet, en hoe het tot een bepaalde beslissing komt. Je zoekt op een bepaalde handeling, bijvoorbeeld een textje in een box, en kijkt hoe het programma beslist daar naar toe te gaan. Inplaatsvan dat vervelende schermpje niet te showen. Als je dat beslissingspunt gevonden hebt, kan je dat gaan aanpassen, of kijken hoe het programma besluit of het iets wel of niet moet doen. Je kunt dus een bepaalde sprong omdraaien.

Als je zo'n deadlisting hebt, ik ga er vanuit dat je een disassembler hebt
gebruikt.. Je ziet nu een heleboel tekens op je scherm, die al begrijp je ze niet
helemaal toch een verband lijken te hebben.
Kraken op deze manier is 'dead' dus je ziet niet wat er in het geheugen
staat, maar je kunt wel zien wat er zo'n beetje gebeurd.
Normaal ga je nu zoeken, zogenaamde 'string references', naar de text die je
niet wilt laten verschijnen. Bijv 'this reg.nr. is incorrect' je kunt dit
via de normale 'search' functie doen, maar ook via de knop 'string
references'. Heb je deze string gevonden, dan moet je kijken hoe het
programma hier komt. Die jump kan je 'reversen', of je kunt kijken hoe het
programma beslist welke jump gemaakt moet worden
Stel je vindt dit:

blabla


:10013A65 3AC1 cmp al, cl
:10013A67 C6450F01 mov [ebp+0F], 01
:10013A6B 7404 je 10013A71 ;Deze sprong springt bijvoorbeeld over het irritatieboxje > Nag-screen heen

Je kunt dan of: je veranderen in jne (jump if not equal, jump if equal) of
je maakt er een jmp (jump) van, dat zou er voor zorgen dat het programma
niet bij de foutmelding kan, en waarschijnlijk dus OK zegt en doet.
Ook kun je gaan kijken wat al zou moeten zijn, en kijken waar die ingesteld
wordt. Dat kan je ook veranderen.

Dit stukje text legt uit hoe je een programma zou kunnen kraken, maar wel
erg algemeen, geen enkel programma voldoet precies aan wat ik hier getypt
heb, maar met een beetje fantasie kan je wel een plek vinden die je moet
aanpassen > patchen.

Patchen is het aanpassen van een programma, dat gebeurd via een zogenaamde
hex-editor. Dit is een editor die byte-wise aanpassingen kan maken. stel dat
we het beschreven probleem aan gaan pakken, dan gaan we naar de offset waar
dat probleem zich bevindt. Hiertoe selecteer je de line, en kijk je welke
offset daarbij hoort. In de hexeditor open je de exe-file (eerst backup
maken!) en ga je naar die offset. Je zult zien dat daar een line is met een
75 of een 74. Je verandert die in een EB. jmp dus. Dit zou er voor moeten
zorgen dat het programma nooit bij de error message komt, en jij blij bent.


Wat stichtelijke woorden achteraf


Met je nieuw verworven kennis kan je waarschijnlijk nog niet heel veel programma's aan, maar met de geplande essays van DREAD wel een stuk meer. Je moet je echter wel even realiseren wat je met die kennis wilt.
Kennis is macht, al eeuwen. En macht kan misbruikt worden. Ik zie het verspreiden van Cracks puur om je naam bekend te krijgen als misbruik. Er zijn bergen crackingroups, en die zullen er altijd blijven. Ze zijn zelfs noodzakelijk. Crackers realiseren zich meestal na verloop van tijd dat het breken van protecties niet echt nuttig werk is. DREAD staat voor
Dutch Reverse Engineering Artistic Decypherians.

RE'ers dus. Wij kraken ook beveiligingen, maar dan wel om er van te leren. Het gaat er ons niet om, om een codetje, keygen, of crack te produceren. Het gaat ons erom dat we de beveiliging snappen, en dat we die kennis kunnen verspreiden.
Zoals gezegd, denk er alstublieft even over na. Ik zou het zeer op prijs stellen als ik op deze manier RE'ers op kan leiden. Crackers mogen er net zo veel van leren, maar daar gaat het mij dus niet zo om....

Knotty Dread

 

Disclaimer notice

DREAD is NOT responsible for any abuse of the information we provide. Members of DREAD don't crack to get programs registered. As a matter of fact, we don't crack at all, since we are reverse engineers. Our only objective is to further our knowledge. If you want to use a program you reversed, you have to buy it!

 
© Copyright 1999 by DREAD Inc.. DREAD and all other names related to DREAD are registeed trademarks of DREAD Inc. and may not be used by others without written permission of Knotty Dread.


[ MAIN | RE LAB | CODING LAB | GUIDE | RESOURCES | SEARCH ]