| Target: | Niet van toepassing |
| Difficulty: | Makkelijk |
| Tools used: | Dit stuk text, en wat hersens. |
| Date: | 01-02-'99 |
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.
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
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.