Reversing ist kein Ponyhof – InterCafe RE III

So, endlich habe ich es (nicht) geschafft. Der Status ist, dass ich das Programm mit enormem Aufwand patchen und somit aktivieren könnte. Dabei müsste ich entweder ein Auth-Server emulieren, welcher mit dem Client verschlüsselt kommuniziert, oder “einfach” 200 Funktionen patchen. Dazu gleich mehr, aber zurück zum Anfang :-)

Durch die in Teil II beschriebene Methode ließ ich mir die ausgehenden Daten an den Server sowie die einkommenden Daten ausgeben. Diese Messageboxen wurden so platziert, dass die Ausgaben direkt nach dem entschlüsseln bzw. direkt vor dem verschlüsseln stattfinden. In Kombination mit dem Sourcecode ergab sich dann folgendes Bild:

// Direkt nach dem Socket-Connect
str = null;
            if (this.DecryptKey != null)
            {
                   str = this.MD5INBase64(buffer); // das Byte-Array in ein MD5-Hash umwandeln
                  this.DecryptKey = str; //
            }
 
// Dieses hier passiert nach der ersten Request:
this.c("_SET_ENCRYPTION_:" + CryptoHelper.EncryptRijndeal(this.DecryptKey, "93ksmwldofneksifoemfkdjroeskmq", SaltVERSION1, "MD5", 1, IVVERSION1, 0x80));

Was genau passiert hier? Sofort nach dem Connect auf den Server sendet dieser ein Key raus. Mit diesem Key werden dann in Zukunft alle Packete über AES verschlüsselt. Dieser Key wird zur Verifizierung nochmal mit dem einzigsten Hardcoded Key verschlüsselt und an den Server verschickt. Dabei kommt als Salt SALTVERSION1 zum Einsatz, als IV IVVERSION1. Im folgenden werden die Packete mit dem Servergenerierten Key verschlüsselt und SALTVERSION2 und IVVERSION2 dabei verwendet.

Als erstes sendet der Server den aktuellen Aktivierungsstaus raus:

SETREGISTRATIONNAME>--<DEMOVERSION>

Als nächstes sendet der Server eine HardwareID raus, da wir ja noch nicht registriert sind und eine Demoversion haben.

RESPONSESHOWREGISTRATIONDIALOG>----<B5313AD0>--<>--<>--<2011.3.0>----

Da die Lizenz nicht gültig ist, wird in dem Fall dieses verschickt:

RESPONSECHECKREGISTRATION>----<INVAILD>--<

Das große Problem ist jetzt, dass die Lizenzprüfung auf dem Server abläuft. Und nur wenn diese Lizennz gültig ist, sendet der Server (höchstwarscheinlich) 150 Nachrichten raus, um alle einzelnen Funktionen und Module zu aktivieren. Aber ich hatte keine Lust zu prüfen wie dieses genau geschieht, aber die Nachrichtennamen sprechen Bände. Dieses könnte man jetzt also von Hand alles patchen oder den Server mit der Verschlüsselung emulieren. Und da ich kein Intresse an diesem Programm habe, spare ich mir das :D

Auf jeden Fall haben die Programmierer da gute Arbeit bei dem Schutz geleistet. Aber .NET Programme werden nie sicher sein, egal wieviele Prüfungen, Verschlüsselungen und Abfragen sie beinhalten. Es ist alles nur eine Sache des Aufwands :P

7 people like this post.

Andere Artikel zu dieser Serie

  1. Reversing ist kein Ponyhof – InterCafe RE IV
  2. Reversing ist kein Ponyhof – InterCafe RE III (This post)
  3. Reversing ist kein Ponyhof - InterCafe RE II
  4. Reversing ist kein Ponyhof - InterCafe RE
  1. Noch keine Kommentare vorhanden.

  1. Noch keine TrackBacks.


neun − 4 =