Cracking Tutorial für Download Master 2.0
Visual Basic 6.0 Cracking

 
 


Programm: Download Master 2.0
Beschreibung: Download Master is a program which eases Downloading Processes.
URL: http://members.tripod.com/~adhamija
Schutz: Name / Seriennummer
Benötigte Tools: - SoftICE 3.24
  - Symantec C/C++ 6.11 (oder irgendein anderer KOMPATIBLER C/C++ Compiler)
Anmerkung: Muß ich euch wirklich daran erinnern, daß durch KAUFEN und NICHT stehlen der Software, die ihr benutzt, sichergestellt wird, daß diese Firmen weiterhin Software für unseren Gebrauch entwickeln und viel wichtiger, uns weiterhin Herausforderungen bieten ihre oft sehr schlechten Schutzmechanismen zu knacken.
BTW, Es ist illegal gecrackte Software zu benutzen!

 
Wenn du nach Cracks oder Seriennummern auf diesen Seiten suchst, dann verschwendest du deine Zeit. Suche anderswo im Web unter Warez, Cracks, etc.
Information: Marken- und Produktnamen sind Warenzeichen oder eingetragene Warenzeichen ihrer jeweiligen Hersteller.
Stufe: (X)Anfänger (X)Fortgeschrittener ( )Profi ( )Experte

Weil der 'Programmierer' von Download Master sehr dumm zu sein scheint, werde ich nicht wie gewöhnlich mit einer kurzen Einleitung beginnen; wir werden direkt zum Schutz springen, ihn analysieren und dann einen KeyGEN in fast keiner Zeit schreiben. Ich denke jeder kann einen KeyGEN für dieses Zielprogramm programmieren. Dieser KeyGEN wird wie ein Rechner funktionieren - nur mit weniger Funktionen. Wie auch immer, laßt uns mit dem richtigen cracken anfangen.

Zuerst, laßt uns klarstellen, daß wir alle wissen, daß dies ein Visual Basic 6.0 'Programm' ist, also müssen die Visual Basic 6.0 Exports geladen sein (wenn ihr die nicht schon geladen habt, benutzt Symbol Loader - Load Exports - MSVBVM60.DLL und fahr fort). Nun müssen wir unsere falschen Registrations Details eingeben. Nun ist es an der Zeit, die richtigen Breakpoints zu setzen. Normalerweise benutze ich - wie immmer - __vbaStrCmp für Visual Basic Programme. SoftICE wird erscheinen und der folgende Codeausschnitt wird angezeigt werden:

 
  :00433CAF    PUSH    EAX                              ; User Name
  :00433CB0    PUSH    0040C514                         ; Leerer String
  :00433CB5    CALL    [MSVBVM60!__vbaStrCmp]           ; User Name eingegeben?

Der obere Codeausschnitt ist nicht wichtig für uns, also können wir SoftICE verlassen. SoftICE erscheint wieder und zeigt nun den folgenden Codeausschnitt an:

  :00433E77    PUSH    EDX                              ; Registration Key
  :00433E78    PUSH    0040C514                         ; Leerer String
  :00433E7D    CALL    [MSVBVM60!__vbaStrCmp]           ; Registration Key eingegeben?

Der obere Codeausschnitt ist auch nicht wichtig für uns, also laßt uns weiter durch den Code in SoftICE tracen. Ihr werdet an der Routine rtcIsNumeric vorbeikommen, wo überprüft wird, ob euerer Registration Key eine Nummer ist. Ungefähr 40 F10's weiter, werden ihr auf etwas wie den folgenden Codeausschnitt stoßen (vergewissert euch, daß das floating point stack window angezeigt wird mit WF):

  :004341A9    PUSH    EDX                              ; Registration Key
  :004341AA    CALL    [MSVBVM60!__vbaR8Str]            ; Real von String?
  :004341B0    FSTP    REAL8 PTR [EBP-0108]
  :004341B6    MOV     EAX,[EBP-28]
  :004341B9    PUSH    EAX                              ; Product ID
  :004341BA    CALL    [MSVBVM60!__vbaR8Str]            ; Real von String?
  :004341C0    FADD    ST(0),ST                         ; ST + ST
  :004341C2    FADD    REAL8 PTR [00402AB8]             ; ST + 49h
  :004341C8    FMUL    REAL8 PTR [00402AB0]             ; ST * 03h
  :004341CE    FSUB    REAL8 PTR [00402AA8]             ; ST - 0Dh
  :004341D4    FSUB    REAL8 PTR [00402AA0]             ; ST - 0Fh
  :004341DA    FSTSW   AX                               ; ?
  :004341DC    TEST    AL,0D
  :004341DE    JNZ     00434A09
  :004341E4    CALL    [MSVBVM60!__vbaFpR8]             ; ?
  :004341EA    FCOMP   REAL8 PTR [EBP-0108]             ; Überprüfen
  :004341F0    FSTSW   AX
  :004341F2    TEST    AH,40
  :004341F5    JZ      00434203                         ; ungültig => JMP
  :004341F7    MOV     DWORD PTR [EBP-010C],00000001    ; Flag für gültigen Schlüssel
  :00434201    JMP     0043420D
  :00434203    MOV     DWORD PTR [EBP-010C],00000000    ; Flag für ungültigen Schlüssel
  :0043420D    MOV     ECX,[EBP-010C]
     ...         ...

Der obere Codeausschnitt scheint die Haupt-Rechen-Routine - und auch die Registration Key Überprüfungs Routine zu sein. Wenn ihr wissen wollt, was hier geschieht, schaut euch einfach ST0 (float window) während ihr durch den Code tract an. Ihr werder herausfinden, was der 'Programmierer' dieses Programmes gemacht hat:

     Registration Key = ((Product_ID * 2 + 0x49) * 3) - 0x0D - 0x0F

Ich habe keine Ahnung, warum er zuerst 0Dh und dann 0Fh subt. - er könnte 1Ch subt. um ein wenig Code zu sparen ... vielleicht ist dies ein weiteres Zeichen für seine Dummheit?

Ok. Nun müssen wir die obere Formel in einen KeyGEN verwandeln. Ich habe die gleiche Kalkulation wie der Autor benutzt und ich habe außerdem den C++ Quelletxt kommentiert ... so ich hoffe, ihr werdet ihn alle verstehen. Übrigens, eurere Registrations Details sind unter HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Download Master\Settings gespeichert.


 

// This is the C++ Source Code of my KeyGEN. I hope you like it.
// I've compiled it using Symantec C/C++ 6.11

// DO NOT ASK ME WHY I HAVEN'T SUBSTRACTED 28 AT ONCE! I'VE TRIED TO
// USE THE ASM SOURCE OF THE CALCULATION ROUTINE SO THAT NEWBIES CAN
// UNDERSTAND IT. IF YOU DON'T THINK I SHOULD DO THAT, JUST DROP ME
// A MAIL!

#include <stdio.h>
#include <stdlib.h>

int main()
{
long double Reg_KEY    = 0;
long double Product_ID = 0;

printf("   ____                     __       __\n");
printf("  /  _/_ _  __ _  ___  ____/ /____ _/ /\n");
printf(" _/ //  ' \\/  ' \\/ _ \\/ __/ __/ _ `/ /\n");
printf("/___/_/_/_/_/_/_/\\___/_/  \\__/\\_,_/_/\n");
printf("   ____                          __          __\n");
printf("  / __ \\___ ___ _______ ___  ___/ /__ ____  / /____\n");
printf(" / /_/ / -_|_-</ __/ -_) _ \\/ _  / _ `/ _ \\/ __(_-<\n");
printf("/_____/\\__/___/\\__/\\__/_//_/\\_,_/\\_,_/_//_/\\__/___/\n\n");

for (;;){
printf("\nDownload Master 2.0 KeyGEN - d0NE bY TORN@DO in '99\n");
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");

printf("Product ID:       ");

// read in long double
scanf("%Lf", &Product_ID);

if (Product_ID < 0)
{printf("ERROR:             Invalid Product ID!"); return -1;}
else
break;
}

// calculate Registration Key
Reg_KEY = Product_ID + Product_ID;   // FADD    ST(0),ST
Reg_KEY = Reg_KEY    + 73;           // FADD    REAL8 PTR [00402AB8]
Reg_KEY = Reg_KEY    *  3;           // FMUL    REAL8 PTR [00402AB0]
Reg_KEY = Reg_KEY    - 13;           // FSUB    REAL8 PTR [00402AA8]
Reg_KEY = Reg_KEY    - 15;           // FSUB    REAL8 PTR [00402AA0]

// print out the registration details
printf("User Name:        (any)\n");
printf("Registration Key: %.Lf\n",Reg_KEY);

return 0;
}

 
 
Ein weiteres Programm wurde Reverse Engineerd. Irgendwelche Fragen (keine Crack-Anfragen)?

 

 
Wenn du Download Master NACH der kostenlose Test-Phase WEITERHIN benutzt, dann KAUFE ES dir bitte.


Copyright © 1999 by TORN@DO and The Immortal Descendants. All Rights Reserved.