Es ist: 20.01.2017, 18:59 Hallo, Gast! (AnmeldenRegistrierenSicherer Login)


Antwort schreiben 
[Java] - Stackstrace manipulieren
08.01.2017, 12:08
Beitrag: #1
[Java] - Stackstrace manipulieren
Hallo,

ich möchte bei einem Javaprogramm mir die Lizenzüberprüfung genauer anschauen. Durch den ein oder anderen Link bin ich auf dieses Forum gestoßen und hoffe, dass ich hier Hilfe finde.


Was ich bereits gemacht habe:
- Ich habe die Jar-Datei decompiliert
- Die einzelnen Strings, um das Programm besser zu verstehen sind encrypted.
- Die Methoden die den encrypteten String entschlüssen, habe ich per reflection aufgerufen.
- Leider sind die Methoden alle static und von einander abhängig bzw. rufen sich selbstständig auf. Kurz gesagt: Wenn ich einen encrypteten String übergebe, kommt nicht das selbe raus, als wenn das Programm die Funktion zum entschlüsseln des Strings selbst aufruft.
- Ein paar deobfuscator habe ich schon ausprobiert, aber diese scheiterten leider alle. Die jar ist > 100MB


Dabei ist mir aufgefallen, dass der interne Key mit dem der String wieder entschlüsselt wird, aus dem Stacktrace berechtet wird.
Code:
StackTraceElement[] arrstackTraceElement = Thread.currentThread().getStackTrace();
        StringBuilder stringBuilder = new StringBuilder();
        String string = arrstackTraceElement[2].getClassName();
        stringBuilder = stringBuilder.append(string);
        string = arrstackTraceElement[2].getMethodName();
        int n2 = stringBuilder.append(string).toString().hashCode();

Daher meine Frage: Wie kann ich den Stacktrace manipulieren?
Ist das der "richtige" Weg, um eine Software freizuschalten? Oder gibt es bessere Möglichkeiten?
Ich habe mir auch schon "OllyDbg" angeschaut, aber das Programm besteht nicht aus nativen Code, sondern wurde in Java geschrieben und dachte ich mir, dass das Untersuchen der .jar-Datei erstmal der bessere Weg ist.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2017, 11:33
Beitrag: #2
RE: [Java] - Stackstrace manipulieren
Zitat:Ich habe mir auch schon "OllyDbg" angeschaut, aber das Programm besteht nicht aus nativen Code, sondern wurde in Java geschrieben und dachte ich mir, dass das Untersuchen der .jar-Datei erstmal der bessere Weg ist.
Mit dieser Annahme liegst Du sehr richtig. Du wirst nicht nativen Code (der von der Java VM gejitted wird) untersuchen müssen, wenn Du doch viel leichter den .jar Code untersuchen kannst.

Viele Obfuscatoren beziehen sich auf einen Wert aus dem Stack als Key um Daten zu entschlüsseln, in diesem Fall Strings. Du weist zwar nicht genau wie der Stacktrace aussieht, aber in der Regel gibt es immer nur einen Call zu einer solchen String-Decrypt funktion. Und genau diesen Call kannst Du herrausfinden und damit "manuell" den Stacktrace aufbauen.

In dem Fall wird ja der Method-Name, als auch der Class-Name der übergeordneten (oder zwei übergeordneten, weis nicht genau worauf sich die Stacktrace-Funktion in Java bezieht) Klasse verwendet. Schau dir das am besten mit einem eigenen Javaprogramm an. Dann schreibst Du dir ein Programm was alle diese Calls rausfiltert und schaut, welche Funktionen diese String-Decrypt Funktion aufruft. Im Anschluss entschlüsselst Du die Strings indem Du damit den "Stracktrace" manuell ermittelt hast.

Grüße

Gamehacking, Security and Programming
Easysurfer's Blog
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


© Back2Hack.cc | Powered by MyBB | Design by Cwis | Top | RSS | Kontakt