Dxtory 2.0.118 Cracked - Writeup *Update*

For everyone who got here by serveral warez and torrent sites: the posted crack does work for the trail-version bypass, but the watermark is independent from the actual program Dxtory. I think that DxtroyCore.dll (native code) includes this watermark by checking the actual licence stored in:

%LocalApplicationData%\Dxtory Software\Dxtory2.0\register.dat

Again: WATERMARK STILL INCLUDED!

Altes UPDATE: Der Artikel war bisher Passwortgeschützt, jetzt hat sich das aber zunächst erledigt. Das Programm ist zwar gecracked, aber das Wasserzeichen in den Aufnahmen ist weiterhin vorhanden. Leider kann ich in den nächsten Tagen nicht am Crack weitermachen, es wird dann ein weiteres Update mit mehr Informationen geben :)

Dxtroy ist eine in .NET geschriebene Aufnahmesoftware, welche über native DirectX Hooks, ähnlich Fraps, Aufnahmen macht. Eigentlich eine sehr coole Sache, nur leider bietet die Trail-Version einige Einschränkungen die es zu entfernen gilt.

Ein Keygen wird nicht erstellt, ein Patch war schlichtweg einfacher. Ein Patch ist für einen Coder leichter zu fixxen als das ganze Lizenzsystem umzustellen, so fair sollte man doch sein.

Dxtroy ist mit den Obfuscator “Dotfuscator” geschützt. Dotfuscator beschränkt sich auf das Umbenennen von allen Typen, Methoden und Feldern und ist daher für uns nicht wirklich ein Hinderhis. Sobald man sich die Klassennamen merkt findet man sich leicht zurecht. Alternativ kann man mit dem EasyAssemblyRenamer ein bisschen Ordnung schaffen, bringt viel Übersicht.

Im EntryPoint (ey.a) befinden sich wenige Zeilen, es wird das “StartupEvent” gesetzt und danach eine neue Instanz der Form gestartet. Die ganzen Checks finden in dem StartupEvent statt, daher sollte die Funktion “a(Object, StartupEventArgs)” näher angeschaut werden.

Viel Code springt einem in diesen Event entgegen, das meiste können wir getrost ignorieren. Es werden ein paar SHA-Filehashes errechnet und ein Logfile erzeugt. Interessant wird es ab diesem Punkt hier. Der Source ist übrigens von den Namen her modifiziert, im Original ist das ganze unübersichtlicher.

Assembly entryAssembly = Assembly.GetEntryAssembly();
AssemblyName name = entryAssembly.GetName();
byte[] publicKey = name.GetPublicKey();
LicenceCheck.class0_0.PublicKeyPart = new byte[publicKey.Length - 12];
Array.Copy(publicKey, 12, LicenceCheck.class0_0.PublicKeyPart, 0, LicenceCheck.class0_0.PublicKeyPart.Length);
LicenceCheckThreads.StartThreads();
LicenceCheckThreads.JoinThreads();
if (!LicenceCheck.class0_0.IsLicenced)
{
TrialDialog trialDialog = new TrialDialog();
if (!trialDialog.ShowDialog().Value)
{
base.Shutdown();
return;
}
}
if (LicenceCheckThreads.CheckIfExpired())
{
base.Shutdown();
return;
}


Es wird von der eigenen Assembly der sog. Public-Key abgerufen. Dieser Key stellt ein Hash des Programms dar um so eine eindeutige Identifizierung und Schutz vor Modifikation zu bieten. Bei allen Signierten .NET Anwendungen ist so ein Public-Key gegeben. Dieser Key wird nun bis auf die letzen 12 Stellen ausgelesen (160-12 = 148) und in die Lizenzklasse kopiert. Nun werden vieeeeele Threads gestartet, welche wiederum aus Hashes errechnen ob eine Trail-Version gegeben ist oder nicht. Das ganze ist ziemlich kompliziert, daher wird darauf nicht weiter eingegangen.

Nach dem Durchlaufen dieser Threads wird das Endresultat geprüft, in diesem Falle “IsLicenced” genannt. Wenn nicht, so wird der Trail-Dialog gestartet, nach Ablauf der 10 Sekunden kann man dann zum Hauptprogramm wechseln.
Als nächstes wird gepürft ob die Trail-Lizenz abgelaufen ist. Da in dieser Version aber eine unlimitierte Trail-Version verwendet wird hat das keine Bedeutung.

Interessanter wird es wenn die eigentliche Lizenz geprüft wird. Dies ist schön bei dem “About”-Fenster zu sehen, dort wird normalerweise “Version: trail” ausgegeben.

if (LicenceCheck.class0_0.IsTrail)
{
stringBuilder.AppendLine(GClass58.smethod_0("String_License") + ": " + GClass58.smethod_0("String_Registered"));
if (LicenceCheck.class0_0.dateTime_0 == DateTime.MinValue)
{
stringBuilder.AppendLine(GClass58.smethod_0("String_Expire") + ": " + GClass58.smethod_0("String_Unlimited"));
}
else
{
stringBuilder.AppendLine(GClass58.smethod_0("String_Expire") + ": " + LicenceCheck.class0_0.dateTime_0.ToString("yyyy/MM/dd"));
}
this.string_1 = LicenceCheck.class0_0.string_0;
}
else
{
stringBuilder.AppendLine(GClass58.smethod_0("String_License") + ": " + GClass58.smethod_0("String_Trial"));
this.string_1 = "";
}

Was bleibt also zu tun? Wir patchen nach den ganzen Threadstarts, welche auf die Trail-Version prüfen, ein “IsLicenced = true” dahinter, ab da finden keine Checks mehr statt und das Programm ist Lizenziert.

Dazu brauchen wir 3 MSIL-Instructions, da wir folgenden Aufruf brauchen:

LicenceCheck.StaticInstanceOfLicenceCheck.IsLicenced = true;
 
// In MSIL-Code
 
ldsfld LicenceCheck.StaticInstaceOfLicence // statische Instanz auf den Stack
ldc.i4.1 // Wir laden "True" auf den Stack (ist ein Int32)
stfld IsLicenced; // true in IsLicenced schreiben.

Nach dem Einfügen dieser Codes über Reflexil ist das Programm gepatched. Viola!

Download:

Dxtory 2 Cracked (3363)

Greez Easy

86 people like this post.
    • Chris O Dumb
    • 12. Aug. 2012 2:23pm

    lol aber das fette Watermark nach dem Recording ist immer noch da. Das ist doch der eigentliche Schutz. Den String von IsLicenced = false in IsLicenced = true ändern ist aber auch sowas von schwer, das schafft man auch mit ResHack. Muhahaha, epic Crack……

      • Easysurfer
      • 14. Aug. 2012 8:04am

      Wenn Du den Post richtig gelesen hättest wird die Bool Variable für die Lizenz verändert, nicht die Strings. Und diese Variable sorgt auch dafür dass die beiden anderen Einschränkungen, der Trail-Dialog und das Öffnen der Dxtory-Seite bei Programmende, nicht mehr da sind. Daher war ich der Ansicht dass diese Variable neben der Lizenzausgabe auch das Watermark beeiflusst. Also nix mit Strings und ResHacker ;-)

      • ManyakCadi
      • 16. Aug. 2012 9:50am

      Mach’s besser Trottel.

      Love,
      ~ManyakCadi x3

    • kkool
    • 13. Aug. 2012 7:19pm

    Cool! Waiting for watermark fix :D

      • Easysurfer
      • 14. Aug. 2012 8:05am

      Looking forward to fix this ASAP :)

    • kkool
    • 16. Aug. 2012 4:26pm

    New update still watermark?, hmmm hard to crack then? Thanks anyway.

    • qzhth
    • 16. Aug. 2012 8:04pm

    Kurzer Hinweis:
    ich bezweifle dass die Watermark von register.dat abhängt.

    Installiert man eine vollständig gecrackte ältere Version (etwa 2.0.11) und 2.0.18 parallel läuft erste ohne Weiteres und ohne Watermark während 2.0.18 weiterhin die Watermark hat.

      • Easysurfer
      • 17. Aug. 2012 1:49am

      Hmm, ok, vielen Dank für den Hinweis, alles in die Richtung ist sehr willkommen! Mit einer “gecrackten” Version meinst Du eine Version mit gültiger Lizenz registriert oder wirklich gecracked? Weil das Lizenzsystem kann sich in den Versionen geändert haben und somit würde die 2.0.11 Lizenz laufen, aber nicht von 2.0.18 erkannt werden.

        • qzhth
        • 17. Aug. 2012 4:35pm

        Mein Fehler, ich meinte eine mit beigefügter gültiger Lizenzdatei.

  1. [quote]
    Es wird von der eigenen Assembly der sog. Public-Key abgerufen. Dieser Key stellt ein Hash des Programms dar um so eine eindeutige Identifizierung und Schutz vor Modifikation zu bieten. Bei allen Signierten .NET Anwendungen ist so ein Public-Key gegeben. Dieser Key wird nun bis auf die letzen 12 Stellen ausgelesen (160-12 = 148) und in die Lizenzklasse kopiert.
    [/quote]

    Wenn du über .Net Reflector die bool’sche Variable änderst, so müsste sich doch der Hash ändern, und die Schutzfunktion greifen, oder nicht?

    Gruß
    gehaxelt

      • Easysurfer
      • 22. Aug. 2012 4:59pm

      Ja, der ändert sich in der Tat sobald die Assembly neu signiert wird. Da dieser aber nur zum Berechnen der “IsLicenced” Funktion verwendet wird und sonst nichts mehr mit der Sache zu tun hat kann man diesen außer Acht lassen wenn die Variable nach der Berechnung mit dem Public Key geändert wird. Ich hatte bereits den Versuch gemacht den selben Public Key zu verwenden, hat allerdings nichts gebracht. Aber guter Hinweis :)
      EDIT:
      Stimmt der Public Key in der Assembly nicht mehr mit dem berechneten Public Key überein, so kommt es zu einem Fehler/einer Warnung. Man kann den Public Key natürlich auch komplett entfernen oder ihn ignorieren (sn.exe)

    • Masterfire
    • 19. Aug. 2012 10:02pm

    Ich frage mich bei dieser ganzen Sache an welcher stelle eigentlich das einlesen und dann auch die Prüfung der Lizensdatei erfolgt. In den DLL-Datein habe ich bis jetzt nichts gefunden, was das bei jeder ausführung überprüfen würde. Bis auf eine DLL implementiert der ganze Rest auch keine Win32-Funktion mit der der sie in der Lage wären irgendwelche Daten einzulesen. Und die z.b. Funktionen wie ReadFile() implementiert nutzt diese anscheinend nur, um das Benutzerprofil und damit die Einstellungen auszulesen. Seltsam das Ganze…. Was noch möglich wäre, wäre dass der .Net Teil der eigendliche einleser ist und es der nativen DLL z.B. in einem Bytearray übergibt. Oder die Prüfung erfolgt über die Registery…..

    Mh ich schaue mir das Morgen nochmal an… vielleicht war ich auch einfach nur zu blöd und habe was übersehen.

      • Easysurfer
      • 22. Aug. 2012 5:21pm

      Hatte in der DLL ebenfalls nix gefunden, allerdings wird auch die register.dat nie mehr verwendet. ALLERDINGS bin ich auf einen weiteren Zugriff der Lizenzklasse gestoßen, diese prüft ob die Lizenz registriert ist und schreibt demnach eine Struktur in den Memory der nativen DLL. In der orginalen Assembly ist dies in der Funktion a(out IntPtr A_0, out uint A_1, out IntPtr A_2, out bf[] A_3) zu finden:

      if (!this.a(out A_1, out zero) || !j.f.d) // Funktion a() und IsLicenced
      		{
      			bool result = false; // return false
      			return result;
      		}
      		Marshal.StructureToPtr(db, intPtr, false); // Marshal to pointer
      // Dieser wird als Out Object übergeben

      Allerdings hat der Wegpatchen dieses Checks absolut nichts gebracht, das Logo war weiter drin…

        • Masterfire
        • 25. Aug. 2012 7:45am

        Ich habe mir mit IDA Pro Baumdigramme zu nach meiner Ansicht nach allen Readaufrufen erstellen lassen und bin diese durchgegangen. Nichts deuted in den Nativen Dll’s auf den Check hin. Auf Registeryaufrufe werde ich das Ganze noch Prüfen. Ich bin nur grade im Urlaub. Am Dienstag bin ich wieder da und werde mal schauen.

        Das mit der Struktur könnte gut sein.. Da das Wegpatchen nichts gebracht hat, könnte es sein das die zu schreiben Daten beim Durchlauf des Licensechecks verändert werden und das Auswirkungen auf die Gültigkeit der Struktur hat? Oder gibt es möglicherweise noch eine andere Stelle an der die nativen Dll’s im Speicher verändert werden.

    • Masterfire
    • 19. Aug. 2012 10:05pm

    Omg es ist eindeutig spät… man verzeihe mir willkürliche Groß- und Kleinschreibung. :-/

    • Dexter
    • 23. Aug. 2012 5:22pm

    hey easy hab bei google auch ein re beitrag von jemand anderem gefunden dort werden auch einige programme aufgelistet die genutzt werden, vielleicht hilft dir das ja bei v.x.x.118
    http://quequero.org/Reverse_Dxtory

      • Masterfire
      • 28. Aug. 2012 10:21am

      Nun, ich immerhin bestätigt das indirekt das was wir vermutet hatten. Es erfolgt keine gesonderte Prüfung der Regdatei durch die Dll. In ein paar Stunden bin ich daheim und werde mir das noch genauer ansehen.

  2. Hey bin begeistert freu mich sehr das sich jemand der auch der Deutschensprache mächtig ist an dem Dx Tory versucht
    wünsche dir viel erfolg bei deiner Arbeit mit dem Wasserzeichen Fix
    Nutze Dx Tory auch schon etwas Länger und bin stolz das du die neue Version Cracken willst das ich endlich dann die neueste benutzen kann

    Zu der Problematik mit dem Wasserzeichen ist es nicht möglich einen Anderen Crack von Früheren Version zu Analysieren um dort Herauszubekommen wo das Problem mit dem Wasserzeichen ist

      • Easysurfer
      • 5. Sep. 2012 7:42pm

      Danke für die Blumen :P
      In früheren Dxtory-Cracks (u.a. in dem verlinken Artikel ein paar Kommentare weiter oben) war das Wasserzeichen als native Ressource der DLL vorhanden, in dieser ist dieses Logo nicht mehr da. Des weiteren ist die DLL ziemlich gut geschützt und ich kann leider erst in ein paar Tagen an dem Crack weiterarbeiten…

    • Nobody
    • 6. Sep. 2012 11:11am

    Is this going to get fixed or should I just give up waiting and get an earlier version that was cracked properly?

      • Easysurfer
      • 7. Sep. 2012 8:52am

      Well, thats your own decision :D Currently you’ve to use an earlier version for a working crack without any trail-logo, but i’ll update this post soon :)

    • Xfactor
    • 18. Sep. 2012 9:34am

    New dxtory 2.0.119 is out. Will you crack it?

    • warmax
    • 18. Sep. 2012 2:08pm

    Dxtory 2.0.119 is out! Will u take a lookt at it?
    regards

    • NitroX
    • 24. Sep. 2012 9:39pm

    Wann wird der Fix für das Watermark fertig sein?
    Ich bin sehr zufrieden mit deiner jetzigen Arbeit, aber die Watermark zu entfernen wäre definitiv die Krönung.

    Ich sehe sehr Positiv in die Zukunft.

    MfG.
    NitroX

      • Easysurfer
      • 27. Sep. 2012 2:39pm

      Ich bin immernoch dran, auch wenn ich grad leider nicht gescheit debuggen kann. Aber der Coder hatte auf jeden Fall Ahnung von nativen Stuff, ich leider nicht so… Mal schaun.

    • Bombom
    • 26. Sep. 2012 5:30am

    Try PlayClaw 3 out, a crack for that would be nice too :O Ever tested it OP?

      • Easysurfer
      • 27. Sep. 2012 2:38pm

      Not so far, but PlayCraw is also .NET based. Where can you get an trial version?

        • Bombom
        • 27. Sep. 2012 9:43pm

        I downloaded PlayClaw from their homepage. No idea if there is a trial version though. Just finding a way to remove the logo or make it transparent would work. I will try and see if it uses a png, could just make it 000000000000000000 etc in hex editor then :p

        • Bombom
        • 30. Sep. 2012 11:16pm

        I think both PlayClaw and Dxtory builds a DIB image that is then used as the watermark. I can’t confirm this and I am not sure, but it was the only thing I found when looking through with some assembly program, not that I know much about it ;p

          • Easysurfer
          • 1. Okt. 2012 7:19pm

          I’m currently analysing PlayClaw (post about this will follow) and there I found this peace of code:

          ho = CreateDIBSection(BitmapHandle, &bmi, 0, &ppvBits, 0, 0);
            h = SelectObject(BitmapHandle, ho);
            SetTextAlign(BitmapHandle, 0);
            SetBkColor(BitmapHandle, 0);
            SetTextColor(BitmapHandle, 0xFFFFFFu);
            if ( v4->dword3C )
            {
              Text = &String;
              v25 = 0;
              v24 = 2;
              v23 = 1;
              v22 = 1;
            }
            else
            {
              Text = &String;
              v25 = 0;
              v24 = 2;
              v23 = 0;
              v22 = 0;
            }
            ExtTextOutW(BitmapHandle, v22, v23, v24, v25, (LPCWSTR)Text, 1u, 0);

          I’m pretty sure this creates the text “unregisterd Version of Playclaw” logo, but I’m looking forward to fix this…

            • Bombom
            • 2. Okt. 2012 4:35am

            You rock man :-)

            • Bombom
            • 5. Okt. 2012 10:09pm

            Gotten anywhere in the dxtory or playclaw code?

            • Easysurfer
            • 6. Okt. 2012 10:03am

            Yeah, fully reversed the licence generation of Dxtory(RSA512), but it takes a few days to calculate the private key to generate own licences.

            • Bombom
            • 6. Okt. 2012 12:26pm

            Oh wow, epic in all and either case! It shall be a first! :p

  3. Hi hoffe doch das du dir vielleicht die Neue Version von Dxtory anschaust und dort eine Neue Sicherheitslücke findest um es zu Cracken… Da es ja den Anschein erweckt das es dort wohl zuviel Hürden gibt in der Version 2.0.118 hoffen wir auf eine Cracked 2.0.119

      • Easysurfer
      • 2. Okt. 2012 3:04pm

      Hatte mir bereits 2.0.119 angeschaut, ist so ziemlich das selbe wie 2.0.118. Da es bisher keine gecrackte Version von 2.0.118 gibt, warum sollte der Coder das Kopierschutzsystem umstellen? ;-) Ich arbeit mich grad in PlayClaw3 ein, ist vom DLL Aufbau so ziemlich das selbe wie Dxtory. Alernativ kann man dann das verwenden ;-)

    • Patric
    • 3. Okt. 2012 7:04am

    Jungs, ich fand arbeiten Lizenz für Dxtory 2.0.119. Gerade aus dem Internet trennen.

    Hier ist der Link:
    http://rutracker.org/forum/viewtopic.php?t=4200067

    EDIT by EASY: Lizenz da funktioniert für Dxtory 2.0.119.

  4. würdest du daraus vielleicht eine neue Bauen können ebenfalls für die 2.0.118 um einfach zuwissen das man hier bei einen update die neue version sich laden kann wäre das genial

      • Easysurfer
      • 6. Okt. 2012 10:04am

      Sollte auch für die 2.0.118 gehen, am Lizenz Algo hat sich nix getan :)

    • poppo
    • 6. Okt. 2012 9:49am

    Dxtory 2.0.120 Release

  5. poppo :
    Dxtory 2.0.120 Release

    Funktioniert den die Lizens aus dem Torrent oben auch mit der 2.0.120 ?

      • Patric
      • 8. Okt. 2012 5:31am

      No the licence doesn’t work with 2.0.120

    • poppo
    • 8. Okt. 2012 12:17am

    Holli :

    poppo :
    Dxtory 2.0.120 Release

    Funktioniert den die Lizens aus dem Torrent oben auch mit der 2.0.120 ?

    Dxtory 2.0.120 don’t work for 2.0.119 Licence File.

  1. Noch keine TrackBacks.