| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
Diskussion: [Solved][KeygenMe] Auf ein Neues im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hi, um mal wieder ein wenig Wind in diesen Bereich zubringen, habe ich eine ältere Idee ausgegraben und sie ...
![]() |
| | #1 (permalink) |
| Registriert seit: 27.09.05 ![]() Likes: 4 | [Solved][KeygenMe] Auf ein Neues Anzeige Hi, um mal wieder ein wenig Wind in diesen Bereich zubringen, habe ich eine ältere Idee ausgegraben und sie in ein KeygenMe uebertragen. Es ist in Delphi geschrieben und nicht gepackt. Schwierigkeit kann ich immer schwer abschaetzen, würde aber auf mittel-schwer tippen. Dann wünsche ich viel Spaß und lasst die Spiele beginnen. Grüße, redox Geändert von ReDoX (14.12.10 um 19:17 Uhr) Grund: Solved |
| | |
| | #2 (permalink) |
| Registriert seit: 21.08.10 ![]() Likes: 3 | Hallo zusammen, da hier ja kein so dramatisches Gedränge herrscht, melde ich mich mal wieder. Erstmal einen herzlichen Dank an redox: Das crackme finde ich ganz ausgezeichnet. Und der Schwierigkeitsgrad: wenn man den äußerst ungewöhnlichen Programmierstil, der ohne jede direkte Loop (außer einer ganz dicken) und mit ganz wenig if's auskommt, erstmal begriffen hat, dann geht es ganz gut. Was mich interessieren würde: Gab es für diese super Idee irgendein Vorbild? Aber vielleicht ist das ja in manchen "Gegenden" üblich, nur an mir bisher vorbeigegangen. Wie auch immer: ich poste hier mal einige "goodboy" serials. Das Tut muss noch etwas warten, auch aus Zeitgründen. Und wenn die Lösung gleich publik gemacht wird, ist ja auch irgendwie der Spass für andere weg. -josh Einige "goodboys" |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | |
| Themenstarter Registriert seit: 27.09.05 ![]() Likes: 4 | Hi josh, Zitat:
Hier mal ein paar Hintergrund Infos: Nicht schummeln ;) Grüß, redox | |
| | |
| | #4 (permalink) |
| Registriert seit: 21.08.10 ![]() Likes: 3 | Hi redox, danke für die Info! Bei "virtueller Maschine" hat es natürlich klick gemacht! Daher der "ungewöhnliche Programmierstil": der Sequencer der virtuellen Maschine! Anbein einige Infos dazu, was ich herausgefunden habe: Gefunden Nur eins ist irgendwie unklar: Einige Befehle (z.B. 0x38 und 0x55 als 2-Byte Befehle) greifen auf den (zusammengehängten) String NameSerial zu. Woher weiss die virtuelle Maschine bei der Ausführung dieser Befehle, auf welches Memory sie zugreifen soll, d.h. wo dieser String liegt?? Habe ich was übersehen? Grüße -josh |
| | |
| | #5 (permalink) | |
| Themenstarter Registriert seit: 27.09.05 ![]() Likes: 4 | Super, das sieht doch sehr gut aus! Was du heraus gefunden hast ist soweit alles korrekt. Kleine Verbesserung Zitat:
Lösung Ich finde es erstauntlich, dass du gültige Name/Serial-Kombination gefunden hast, ohne zu wissen das es sich um eine VM handelt. Respekt! Hast du den Algorithmus verstanden oder wie bist du an diese Kombinationen gekommen. Hast du den Anti-Olly Trick bemerkt? Tipp: Es ist auch ein Opcode der VM .Grüße, redox | |
| | |
| | #6 (permalink) | |
| Registriert seit: 21.08.10 ![]() Likes: 3 | Der Algorithmus den ich benutzt habe, ist folgender (ohne die Längenprüfung): CheckSerial Den Algorithmus herauszufinden, war auch nicht so schwer. Es war bald klar, dass es sich um einen rein tabellengesteuerten Code handelte. Tabelle = Sequenzprogramm der virt. Maschine. Jeder Schritt der Sequenz besteht im Ausführen einer relativ kurzen Funktion (ein Bytecode). Rückgabewert jeder Bytecodefunktion ist die Differenz in der Sequenztabelle auf den nächsten Bytecode. Damit kann man sich z.B. automatisch beim Ablauf des Programms vom Disassembler eine Sequenz aller Bytecodes erstellen lassen. Da sieht man z.B. sofort, wo Schleifen ablaufen und welche Funktionen (Bytecodes) beteiligt sind. Im Debugger kann man auch recht bequem die Inhalte der "Register" verfolgen, da die Adressen ja immer konstant sind. Man sieht Schritt für Schritt, dass z.B. Counter gezählt werden, oder Summen von Speicherstellen gebildet werden. Dass die andere relevante Datenstruktur allerdings ein Stack ist, darauf bin ich nciht gekommen, obwohl es auch nicht so fernliegend ist. Trotzdem: Auf den Trichter mit dem allgemeinen Nutzen der einzelnen Funktionen als Befehle einer virt. Maschine bin ich erst nach dem "Klick" durch deinen Hinweis gekommen. Zitat:
Grüße -josh | |
| | |
| | #7 (permalink) |
| Themenstarter Registriert seit: 27.09.05 ![]() Likes: 4 | IDA lässt sich davon nicht beeindrucken. Es ist ein spezieller Anti-Olly Trick, mittels OutputDebugString wird ein String ausgegeben, dieser wird von Olly als Format String interpretiert wird. Was passiert, wenn man OutputDebugString("%s%s%s%s%s%s%s%s%s") aufruft, kannst du dir sicher denken |
| | |
| | #8 (permalink) | |
| Registriert seit: 21.08.10 ![]() Likes: 3 | Zitat:
| |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |