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)

Tja, als angehender Freund des Programmierens in VisualBasic ist mensch natürlich
froh über jedes Tool der unterstützenden Art. So stieß ich bei meinen Kontofressenden
Recherchen im Web auf das kleine, aber feine Tool VBCOMMANDER, welches einige
nützliche Hilfen in Punkto Coding gibt. (Leider ist dieses Programm nur in englischer
Sprache erhältlich, was aber der Nützlichkeit keinen Abbruch tut!).
Bevor Du das Proggie downloaden kannst, mußt du zunächst deine E-M@il-Adresse
angeben, um einen Freischaltungscode zu erhalten. Aber, wie es sich ja gehört, hat
wohl jeder Cracker für diesen Fall eine Adresse mit seinem Handle (wer gibt schon
gerne seine wahre Ident preis, he?!). Das schützt vor Spamming und Recherche.
(Okee, abgesehen vom IP-Fishing beim Provider, aber anderes Thema).


Diesen Code erhalten, machte ich mich dan direkt ans Werk. Ich wollte herausfinden,
ob es auch möglich ist (wie beim Reversen so üblich), einen Freischaltcode einzugeben.
Und siehe da- es ging. Jedesmal, wenn ich VB startete (der Commander startet mit,
da es eine Art Plugin ist), kam ein kleiner Nag, auf dem sich die Option "Enter Password"
befand. Tolle Sache, das.

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 muß aber mal kurz was loswerden: Dieses Proggie befindet sich nun schon einige
Zeit auf dem Markt, wie sich anhand der V-Nummer ja vermuten läßt. Ich war
überrascht, wie einfach und schnell ich das Teil am Schopfe hatte. Die Programmierer
glauben entweder an das gute im Menschen, oder haben noch nie was von Crackern
gehört.(Oder sind selbst welche, und arbeiten bei BeCubed, hehe). Komische Sache,das.
Okee, genug des Schwadronierens....


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



ANMERKUNG:
Dieses Essay dient nur zur Erweiterung des Wissensstandes! Wir übernehmen keine
Verantwortung für das, waseventuell mit eurem Rechner passiert.
Wenn ihr das Programm erfolgreich gecrackt habt, müßt ihr es sofort löschen! mWenn ihr
weiterhin damit arbeiten wollt, dann erwerbt es rechtmäßig!!
UNTERSTÜTZT SHAREWARE, DENN DAS SIND UNSERE ÜBUNGSANWENDUNGEN!
Es ist verboten, gecrackte/gepatchte Software zu benutzen.



(c) 13/03/1999 vladimir