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
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……
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
Mach’s besser Trottel.
Love,
~ManyakCadi x3
Cool! Waiting for watermark fix
Looking forward to fix this ASAP
New update still watermark?, hmmm hard to crack then? Thanks anyway.
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.
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.
Mein Fehler, ich meinte eine mit beigefügter gültiger Lizenzdatei.
[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
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)
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.
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:
Allerdings hat der Wegpatchen dieses Checks absolut nichts gebracht, das Logo war weiter drin…
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.
Omg es ist eindeutig spät… man verzeihe mir willkürliche Groß- und Kleinschreibung. :-/
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
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.
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
Danke für die Blumen
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…
Is this going to get fixed or should I just give up waiting and get an earlier version that was cracked properly?
Well, thats your own decision
Currently you’ve to use an earlier version for a working crack without any trail-logo, but i’ll update this post soon
New dxtory 2.0.119 is out. Will you crack it?
Dxtory 2.0.119 is out! Will u take a lookt at it?
regards
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
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.
Try PlayClaw 3 out, a crack for that would be nice too :O Ever tested it OP?
Not so far, but PlayCraw is also .NET based. Where can you get an trial version?
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
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
I’m currently analysing PlayClaw (post about this will follow) and there I found this peace of code:
I’m pretty sure this creates the text “unregisterd Version of Playclaw” logo, but I’m looking forward to fix this…
You rock man
Gotten anywhere in the dxtory or playclaw code?
Yeah, fully reversed the licence generation of Dxtory(RSA512), but it takes a few days to calculate the private key to generate own licences.
Oh wow, epic in all and either case! It shall be a first! :p
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
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
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.
Yay, it works perfect. Thanks!
Yeah ! Work perfectly
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
Sollte auch für die 2.0.118 gehen, am Lizenz Algo hat sich nix getan
Dxtory 2.0.120 Release
Funktioniert den die Lizens aus dem Torrent oben auch mit der 2.0.120 ?
No the licence doesn’t work with 2.0.120
Dxtory 2.0.120 don’t work for 2.0.119 Licence File.