CODE REVERSING
"VBCommander 6.0"
Registrationscode herausfinden
BITTE VORHER DIE ANMERKUNG AM ENDE LESEN!!!!
Autor: | vladimir |
Programm: | VisualBasic Commander 6.0 (VBCommander6.0) |
Web: | vbctrial.exe, 1174440 bytes |
Dateiname/größe: | http://www.becubed.com |
Schutz: | Kombination aus Registrationscode/ Username |
Crack: | Registrationscode herausfinden |
Tools: | SoftIce |
Zeit: | 2 Minuten (hehe) |
OK, also ran an den Speck:
Wenn ihr diese Option wählt, popt ein Dialog mit drei Textfeldern auf.
(a) Registrationcode:
(b) YourName:
(c) CompanyName:
Weiter im Text. Da ich beim ersten Start den File/Regmon mitlaufen ließ,
bemerkte ich
recht schnell, das es sich beim VBC um ein Proggie handelte, was selbst in VB
geschrieben wurde-lustig,gell?! Und zwar in VB5 (am Rande). Diejenigen, die
schon
einige VB-Tutorials gelesen haben, werden wahrscheinlich schon ahnen, welchen
Weg
ich wählte...
Ich wählte "vladimir" als Namen (klar,ne?), "0815"
als Registrationcode und "gcc"
als CompanyName. STRG + D, auf zum Liebling SoftIce,
flügs den Standardbreakpoint setzten, und zwar: BPX
HMEMCPY, dann wieder retour zum Proggie mit F5,
OK gedrückt und SLAMM, Softice popt.
KERNEL!HMEMCPY
XXXX: 9E7A 55 PUSH BP
(Ich schreibe XXXX, da diese Adressbereiche sich unterscheiden können!)
Nun drückt F5 (viele werden jetzt denken,
wieso nur einmal? Aber ich fand heraus, das
es nur auf den UserNamen ankommt, nicht auf den der Firma), dann
F11 um zu der Stelle im Code zu kommen, an der gecallt wurde:
XXXX: 0b40 9a7a9e1701 CALL KERNEL!HMEMCPY
XXXX: 0b45 ff35 PUSH WORD PTR (DI)
XXXX: 0b47 9ab0011f01 CALL KERNEL!LOCALUNLOCK
Alle da???? JAAAAAAA. Allright, und weiter, und zwar mit F10
( Schritt für Schritt durch´s Coding wanken, den Kopf nur voll von
CrackGedanken, hehehe).
F10t solange, bis ihr in der Statuszeile vom CodingWindow in SICE folgendes
zu lesen
bekommt: MSVBVM50!.TEXT. Dann drückt ihr ALT
+ F4 (Sandman´s Winice-Dat,
der Shortkey für das Auffinden von VB-Vergleichsoperationen), und SICE
antwortet brav:
Pattern found at XXXX: 0f00d9ea (0f00d9ea)
Ok, nun gebt ihr u XXXX:0f00d9ea ein (um die
Stelle zu disassemblieren), und ZACK-
im CodingWindow seht ihr folgendes:
XXXX: 0f00d9ea 56 PUSH ESI
XXXX: 0f00d9eb 57 PUSH EDI
XXXX: 0f00d9ec 8b7c2410 MOV EDI, (ESP+10)
XXXX: 0f00d9f0 8b74240c MOV ESI, (ESP+0c)
XXXX: 0f00d9f4 8b4c2414 MOV ECX, (ESP+14)
Tollitoll, und nu? Löscht den BPX HMEMCPY mit BC
0 (oder schaltet ihn mit BD 0 aus), setzt
einen neuen Break mit BPX XXXX: 0f00d9ea (die PatternAdresse),
drückt einmal F5, und zack, SICE breakt im
oben aufgeführten Codesnippet.
Jetzt steppt ihr mit F10 noch dreimal durch, bis
ihr an folgender Stelle seid:
XXXX: 0f00d9f0 8b74240c MOV ESI, (ESP+0c)
und gebt D EDI ein (zeigt euch den Inhalt des
EDI-Registers, in das die Reginformation gepusht wurde). Und siehe da, im HexWindow
von SICE findet ihr euren Code!!
In meinem Fall war das: 2-040-2636
Toll!! So schnell ging das. Nun könnt ihr alle Breakpoints löschen,
SICE verlassen,
und euch ganz normal registrieren (ohne VI$A-C@RD, hehehe)....
ERLEDIGT.
Neugierig wie ich manchmal bin, probierte ich ein bißchen herum. Zunächst
fiel mir
folgendes auf: Grundsätzlich wird jeder Buchstabe einer Zahl zugeordnet,
und zwar
von hinten nach vorne. Also, wie sooft anstelle von "vladimir" "rimidalv".
Desweiteren gibt es nur sechs Zahlen, die benutzt werden, und zwar:
0,1,2,3,4,5,6 - aber wie kann denn das? OK- ich nahm mir mal die ASCII Tabelle
zur
Brust, und zählte hübsch nach. (Vorher testete ich Namenskombinationen
mit gleichen
und ungleichen Buchstaben. So kam ich auch auf den Trichter). Diese auf dem
Screen,
fiel mir auf:
a=6 b=0 c=1 d=2 e=3 f=4 g=5 h=6 i=0 j=1 k=2 l=3 m=4
n=5 o=6 p=0 q=1 r=2
s=3 t=4 u=5 v=6 w=0 x=1 y=2 z=3
Dieses gilt nur für kleingeschriebene Buchstaben. Wenn ihr aber mal
diese Kombi
als gegeben hinnehmt, könnt ihr für jeden/jedes Buchstaben/Wildcat/Symbol
mit
der Tabelle den Wert herausfinden.
Desweiteren werden maximal zehn Stellen chiffriert, also
abcdefghij =106-543-2106
wobei die letzte Einheit immer 4 Stellen, die mittlere immer 3 Stellen hat.
Was übrigens sehr witzig ist:
Da scheint der Programmierer sein "MasterPassword" im Coding vergessen
zu haben.
Bei meiner ersten Attacke stieß ich zufällig auf folgende Nummer:
64-046-4336
und die scheint IMMER zu klappen. TzTzTz....
Die Info´s zum VBC6 werden in einer Datei Namens vbcmndr.ini
im Windows-
verzeichnis abgelegt. In dieser Datei findet ihr den Eintrag "CheckSum:
&&@(" (nach
der erfolgreichen Registrierung. Solange dieser Eintrag bestehen bleibt, ist
es egal,
was ihr für Angaben dort eintragt....
Doch genug der Laberei. Ich wollte damit nur zeigen, das es schon interessant
sein kann, wie manche Funktionen ihren Dienst leisten (Letztendlich lernt man
auch dabei).
OKEE, VIEL SP@SS BEIM CRACKEN,
(eventuell schreibt ja jemand mal nen KeyGEn
für das Proggie??)
VLADIMIR
(c) 13/03/1999 vladimir