<!--coloro:Green--><span style="color:Green"><!--/coloro--><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo-->Das Thema: Software besser schützen<br />Autor: DizzY_D<br /><br /><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--coloro:Green--><span style="color:Green"><!--/coloro--><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><!--coloro:Black--><span style="color:Black"><!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->In diesem Tutorial geht es darum wie man seine Software besser vor Cracking Schützen kann.<br /><br />Vorab:<br /><br /><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--coloro:Green--><span style="color:Green"><!--/coloro--><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><!--coloro:Black--><span style="color:Black"><!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->Jeder der programmiert und seine Software verkauft hat sich schonmal damit auseinander setzen müssen:<br />Was kann man tun um ungewollte Verbreitung seiner Software zu vermeiden?<br />Die meisten entscheiden sich bei dieser Frage für die Hardware ID.<br />Es ist die beste Wahl wenn man seine Software nicht im großen Stil verkaufen wil.<br />Deswegen beziehe ich mich bei diesem Tut auf diese Methode.<br /><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><br /><!--coloro:Green--><span style="color:Green"><!--/coloro--><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><!--coloro:Black--><span style="color:Black"><!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->Um wissen zu können wie man seine Software besser schützt muss man wissen wie unsere "Feinde", die Cracker vorgehen.<br />Deshalb werde ich zwischendurch erklären was wieso sinnvoll ist.<br />Ich werde euch nicht zeigen, wie ihr den ultimativen AntiCrack Schutz codet, sondern wie die Cracker vorgehen und was man deshalb dagegen machen kann.<br />Was ich auch noch sagen muss ist, dass die Möglichkeiten in VB hier an ihre Grenzen stoßen und deshalb bei weitem nicht alles möglich ist.<br /><br />Benötigte Tools:<br /><br />-Ollydbg<br />-VB Anticrack<br />Beide Tools sind im Web als Freeware/Testversion erhältlich und sollten leicht mit google zu finden sein.<br /><br />Standard Aufbau eines HWID geschützten Programms:<br /><br />- Auslesen einiger Hardware Infos <br />- Verrechnen/Verschlüsseln dieser Informationen<br />- Eigenen String kreieren<br />- Auslesen des im Programm gespeicherten Strings<br />- Originalstring mit dem ausgelesenen String vergleichen<br />- Wenn alles ok, Programm starten<br />- Wenn Vergleich scheitert, MSGBOX anzeigen, Programm beenden<br /><br />Falsche Hoffnungen:<br /><br />Einige, in diesem Gebiet unerfahrene Coder denken häufig, dass man nur viele Informationen auslesen und sie durch etlich viele Algos jagen müsse, und dass dadurch die Sicherheit gewärleistet wäre.<br />Dem ist aber nicht so.<br />Den Cracker interessiert es herzlich wenig wieviele Algos ihr verwendet habt, wenn unter diesem ganzen Code ein JNZ steht, der verhindert ,dass das Programm gestartet wird.<br />Einige denken sich jetzt vieleicht:<br />"Was zum Teufel ist JNZ???"<br />JNZ ist Assembler und steht für "Jump if Not Zero". Also springe wenn nicht null.<br />Was Assembler ist werde ich jetzt allerdings nicht klären.<br />Das ist mindest Voraussetzung für dieses Tut.<br /><br /><br />Ein Blick hinter die Kulissen der Reverser:<br /><br />Schauen wir uns mal an, wie volgender Code in Oly aussieht, welcher meistens für den Vergleich beider Hardware IDs zuständig ist:<br /><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><br />Visual Basic:
<br /><!--coloro:Green--><span style="color:Green"><!--/coloro--><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><!--coloro:Black--><span style="color:Black"><!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><br /> Wir laden dieses Projekt in Olly und machen Rechtsklick -> Search for -> All referenced text Strings.<br />Wir scrollen ein bisschen und sehen letztendlich den Sring aus unserem Environ Befehl:<br />"Username"<br />Doppelklick drauf und wir landen an der Stelle im Code:<br /><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><br />Visual Basic:
<!--fonto:monospace--><span style="font-family:monospace"><!--/fonto--><br /><br />Das sieht doch schonmal nach einem guten Ansatz aus!<br />Also mit F2 nen BreakPoint drauf!<br /><br />Was ist ein BreakPoint?<br />Ein BreakPoint ist wie ein Lesezeichen in Olly.<br />Man kann Zeilen mit ihm makieren um später ab diesem Punkt das Programm verfolgen zu können.<br /><br />Wir starten das Programm nun mit F9 und sehen dass wir auf unserem BreakPoint breaken.<br />Das ist ja schön und gut.<br />Aber was bringt das?<br />Ein BreakPoint ist notwendig, danit man im Code tracen kann.<br />Mit Traceing ist es möglich die Befehle einzeln auszuführen und genau zu beobachten, was passiert.<br />Wo wir grade im Code sind sieht man an dem schwarzen Balken links am Rand von Olly, wo auch die Adressen stehen.<br />F8 ist die Taste zum tracen.<br /><br />Wir drücken also ein Paar mal auf F8 bis wir hier gelandet sind:<br /><!--fontc--></span><!--/fontc-->Visual Basic:
<br /><!--fonto:monospace--><span style="font-family:monospace"><!--/fonto--><br /><br />Wer gut aufgepasst hat, dem ist aufgefallen, dass im Stack (Fenster unten rechts in Olly), unser gespeicherte Name und darunter der richtige Name steht.<br />Jetzt wirs spannend, denn ein Paar Zeilen weiter sehen wir schon unseren gefürchteten JNZ Befehl .<br />Wir Tracen auf diesen Befehl und gucken was in dem kleinen Fenster über dem Dump (Großes Fenster am unteren Rand neben Stack) steht:<br />"Jump is taken"<br />Bevor wir weitertracen schauen wir uns erstmal an, wohin dieser JNZ eigendlich führt.<br />Das machen wir indem wir auf dem Befehl ENTER drücken.<br /><br />Wir landen hier:<br /><!--fontc--></span><!--/fontc-->Visual Basic:
<br /><!--fonto:monospace--><span style="font-family:monospace"><!--/fonto--><br /> OK<br />Wir beschrenken uns nicht nur auf diese Paar Zeilen sondern wir sollten unseren Blick jetzt etwas unterhalb dieser Zeilen fixieren <br />An den netten Kommentaren <br />MSVBVM60.rtcMsgBox<br />und<br />MSVBVM60.__vbaEnd<br />hintereinander kann man unschwer erkennen um welche stelle in unserem Quelltext es sich bei diesem Stück handelt.<br />Richtig! Um das stück was unsere Fehlermeldung anzeigt und anschließend unser Programm beendet.<br /><br />Der JNZ springt also mitten in das stück hinein, was unser Programm beendet.<br />Weil ich euch mal zeigen will, wie einfach wir Reverser es in diesem Fall haben, werde ich euch nun zeigen was ihr tun müsst um das Programm trotzdem zum laufen zu bekommen.<br /><br />Wir gehen also zurück zu unserem JNZ.<br />Da wir ja nicht wollen, dass er springt, müssen wir nichts weiter tun, als diesen JNZ mit einem NOP befehl zu ersetzen.<br />NOP steht für "No Operation" also auf gut Deutsch:<br />Mach nix xD<br /><br />So sieht die stelle also jetzt aus:<br /><!--fontc--></span><!--/fontc-->Visual Basic:
<br /><!--fonto:monospace--><span style="font-family:monospace"><!--/fonto--><br />Ok das wars auch schon was wir tuen mussten:)<br />Wir lassen unser Programm also mit F9 normal weiterlaufen, und siehe da:<br />Es läuft!!!<br /><br /><br />Abschließendes:<br />In der Ersten Volge meiner Tutorialserie ging es um eine kleine Einleitung ins Thema Reverse Engineering, welches unverzichtbar ist um seine Softare optimal zu schützen.<br />Es ging mir im Ersten teil auch darum etwas Spass am Reversen zu wecken damit auch mal wieder etwas Nachwuchs in die Szene kommt .<br />Im/In den nächsten Teil/en geht es darum langsam zu verstehen was man alles gegen das Cracken tuen kann und als letzes dann die Umsetzung in VB.<br /><br />Ich hoffe es hat euch gefallen.<br />Der nächste Teil kommt morgen.<br /><br /><br />PS:<br />N sticky wär cool:)<br /><br />MFG DizzY_D<br /><br /><!--fontc--></span><!--/fontc--><!--coloro:Green--><span style="color:Green"><!--/coloro--><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><!--coloro:Black--><span style="color:Black"><!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--> <br /><br /> <br /><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc--> _________________
Zuletzt bearbeitet von DizzY_D am 06.06.2010, 09:28, insgesamt einmal bearbeitet
igoe Gast
Verfasst am: 07.08.2008, 23:56
Finde ich sher schön gemacht, freue mich auf weitere Tutorials!
L!x Coder
Anmeldedatum: 04.05.2008 Beiträge: 93
Verfasst am: 08.08.2008, 04:46
Finde ich auch sehr schön gemacht. Aber du hast Paar Fehler drin (wie ich auch oft :p) zB.
...Aber was bringt das? Eine weitere super Funktion von Olly nennt sich Tracing.
DizzY_D Tutorial Leser
Anmeldedatum: 01.05.2008 Beiträge: 28
Verfasst am: 08.08.2008, 10:34
Ja ich war gestern nichtmehr so 100%ig wach als ich das hier geschrieben habe .
Hab aber n Paar Fehler verbessert.
Gebt bitte ma n Paar Komentare zum Tut ab damit ich weis, was ich beim 2ten Teil besser machen kann!!!