Tools | Stack Trace TranslateOverviewThe "Stack Trace Translate" tool translates a stack trace produced by obfuscated bytecode by replacing obfuscated class and method names with the unobfuscated equivalents. If you used Zelix KlassMaster's line number scrambling feature then the scrambled line numbers will be translated to the original numbers. The tool reads the change log that you created when obfuscating your classes and, ideally, it will also analyze the obfuscated bytecode itself. By analyzing the obfuscated bytecode, the Stack Trace Translate tool can usually identify a single original method for each obfuscated method name in the stack trace, even if line numbers are not present in the stack trace. Alternatively, if you do not specify the path to your obfuscated bytecode, then the Stack Trace Translate tool will not be able to distinguish between overloaded obfuscated method names and it will have to present you with a list of possible alternative original method names. Note that there is also an API that allows you to call the Stack Trace Translate tool from another program.Obfuscated stack traceException in thread "main" java.lang.NullPointerException at a.a.c.a(c.java:7) at a.a.b.a(b.java:7) at a.a.a.a(a.java:3) at a.a.a.main(a.java:10) Translated stack trace if obfuscated bytecode is analyzedException in thread "main" java.lang.NullPointerException at com.mycompany.MyClass2.method1(String)(MyClass2.java:9) at com.mycompany.MyClass1.method1(String)(MyClass1.java:9) at com.mycompany.MyClass0.method1(String)(MyClass0.java:9) at com.mycompany.MyClass0.main(String[])(MyClass0.java:25) Translated stack trace if obfuscated bytecode is NOT analyzedNOTE: Obfuscated bytecode not analyzed so there could be multiple possible methods for each trace line. Exception in thread "main" java.lang.NullPointerException at com.mycompany.MyClass2.method1(String) method2() at com.mycompany.MyClass1.method1(String) method2() at com.mycompany.MyClass0.method1(String) method2() method3(String, int) at com.mycompany.MyClass0.main(String[])(MyClass0.java:25) |
|
BasicsYou can start the Stack Trace Translate tool at any time by selecting the "Tools | Stack Trace Translate" menu. Note that there is also an API that allows you to call the Stack Trace Translate tool from another program. |
|
The first step is to select your change log file by clicking on to the right of the in the "Change log file" label to browse for the file. You should select the change log that was produced when you obfuscated the bytecode that generated the stack trace. The selected file name will appear in the field to the left of the button. You must specify a change log. You can select more than one change log. However, you would only need to do that in unusual circumstances. For example, you would have to specify more than one change log if the bytecode that generated the stack trace consisted of a number of components which was obfuscated separately. It is highly recommended that you then specify the obfuscated bytecode classpath that the Stack Trace Translate tool should use to find the obfuscated bytecode that generated the stack trace. You do this by clicking on the to the right of the in the "Obfuscated bytecode" label. | |
After clicking on the to the right of the in the "Obfuscated bytecode" label
you will be presented with the Obfuscated Bytecode Classpath dialog that will allow you to specify
java.lang.Object and all the classes that your
application requires to be able to run.
Note also that Zelix KlassMaster will look inside of any archives appearing in the specified classpath and recursively add any embedded archives to the effective classpath.
So, if you have an archive myJar.jar in your obfuscated bytecode classpath which contains another archive named embedded.jar then both myJar.jar and embedded.jar will be in the effective classpath.
You can import or export a classpath from or to a text file by clicking on the or buttons.
If you choose to not set the obfuscated bytecode path then you should deselect the "Analyze obfuscated bytecode" checkbox so
that the tool knows to ignore the classpath setting.
|
|
You should then
|