Code Monkey home page Code Monkey logo

deobfuscator's People

Contributors

col-e avatar cubxity avatar fee1-dead avatar firemasterk avatar janmm14 avatar minidigger avatar mizzmaster avatar netindev avatar picknchew avatar samczsun avatar theoparis avatar thistestuser avatar wninayyds avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

deobfuscator's Issues

JumpFrame's toString through GSON causes StackOverflow

c.g.gson.i.LinkedTreeMap.find:175
c.g.gson.i.LinkedTreeMap.put:94
JsonObject.add:57
JsonTreeWriter.put:79
JsonTreeWriter.value:187
TypeAdapter$7.write:254
TypeAdapter$7.write:239
TypeAdapterRuntimeWrapper.write:68
ReflectiveTypeAdapterFactory$1.write:112
ReflectiveTypeAdapterFactory$Adapter.write:239

The last three are repeated many times. Tried with -Xss512M.
I printed out the class before I called toString to see which it was.

NPE in zelix.StringEncryptionTransformer

Deobfuscation failed. Please open a ticket on GitHub
java.lang.NullPointerException
        at com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer.lambda$transform$249(StringEncryptionTransformer.java:89)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
        at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.forEach(Unknown Source)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:57)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:152)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Could this even work at all? In https://github.com/java-deobfuscator/deobfuscator/blob/master/src/main/java/com/javadeobfuscator/deobfuscator/transformers/zelix/StringEncryptionTransformer.java#L78 the while is left due to next == null, so calling next.getNext() in https://github.com/java-deobfuscator/deobfuscator/blob/master/src/main/java/com/javadeobfuscator/deobfuscator/transformers/zelix/StringEncryptionTransformer.java#L89 fails.

PackageNormalizer renames packages of library classes

If a class of a library is referenced is ignored by the package normalizer and it just renames the package reference.
This happens only if a package or a part of a package is named identically in a library and the file to deobfuscate. Things still have to be done on a per-class basis.

NoSuchComparisonHandlerException java/lang/String and [C

Transformer: zelix.ReflectionObfuscationTransformer

Deobfuscation failed. Please open a ticket on GitHub
com.javadeobfuscator.deobfuscator.executor.exceptions.NoSuchComparisonHandlerException: No comparator found for java/lang/String
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:865)
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:79)
        at com.javadeobfuscator.deobfuscator.executor.defined.MappedMethodProvider.invokeMethod(MappedMethodProvider.java:53)
        at com.javadeobfuscator.deobfuscator.executor.providers.DelegatingProvider.invokeMethod(DelegatingProvider.java:32)
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:764)
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:79)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.ReflectionObfuscationTransformer.lambda$null$275(ReflectionObfuscationTransformer.java:160)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.ReflectionObfuscationTransformer$$Lambda$76/965674262.accept(Unknown Source)
        at java.util.ArrayList.forEach(Unknown Source)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.ReflectionObfuscationTransformer.lambda$inlineReflection$276(ReflectionObfuscationTransformer.java:116)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.ReflectionObfuscationTransformer$$Lambda$75/1318395825.accept(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
        at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.forEach(Unknown Source)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.ReflectionObfuscationTransformer.inlineReflection(ReflectionObfuscationTransformer.java:115)
        at com.javadeobfuscator.deobfuscator.transformers.zelix.ReflectionObfuscationTransformer.transform(ReflectionObfuscationTransformer.java:63)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:152)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Dummy classes can be used to prevent deobfuscation

Since the deobfuscator tries to deobfuscate every single class regardless of whether it is loaded by the application, one can insert a dummy class that implements "some/random/Thing", and the deobfuscator will fail on the class and not deobfuscate the rest of the jar.

Invalid access flags

I got this error while attempting to deobfuscate, don't really know what is causing it, i think the classes have some checks against modifications?
java.lang.IllegalArgumentException: Invalid access flags: 56 at com.javadeobfuscator.deobfuscator.org.objectweb.asm.util.CheckClassAdapter.checkAccess(CheckClassAdapter.java:599) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.util.CheckClassAdapter.visit(CheckClassAdapter.java:377) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.accept(ClassReader.java:622) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.accept(ClassReader.java:506) at com.javadeobfuscator.deobfuscator.Deobfuscator.toByteArray(Deobfuscator.java:322) at com.javadeobfuscator.deobfuscator.Deobfuscator.lambda$start$5(Deobfuscator.java:179) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:177) at Main.main(Main.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

LabelNodes stopping PeepholeOptimizer

I got onto some bytecode today that randomly had some LabelNodes, leading to the issue that one ldc-pop structure was not removed by the PeepholeOptimizer (the POP was added by me with my just-created DupPop2Replacer through the iterator of InsnList).

Just as a note - there was also no jump to that particular LabelNode.

NoClassInPathException: java/lang/Object

I'm getting this error message when trying to deobfuscate something:
com.javadeobfuscator.deobfuscator.Deobfuscator$NoClassInPathException: java/lang/Object at com.javadeobfuscator.deobfuscator.Deobfuscator.assureLoaded(Deobfuscator.java:197) at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:230) at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:207) at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:160) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

I've tried multiple transformers, none of them worked.
I am running OpenJDK 8 on Ubuntu 16.04.

Can't use the general.peephole.PeepholeOptimizer Tranformer Error: java.lang.StackOverflowError

everytime when I try to use that tranformer i get an error.

C:\Users\My-PC>java -jar deobfuscator.jar -input "C:\Users\My-PC\Plugin-deobfuscatedv6.jar" -output "C:\Users\My-PC\AlmostFinalv7.jar" -transformer general.peephole.PeepholeOptimizer -path "C:\Program Files\Java\jre1.8.0_77\lib\rt.jar" -path "C:\Users\My-PC\Desktop\Coding\a test server\spigot.jar" -path "C:\Users\My-PC\Deobfuscator\ProtocolLib.jar"
Warning! Output file already exists

Reading complete. Loading hierachy

Transforming

Rearranged 17 goto blocks
Removed 0 continous gotos
Removed 0 unconditional switches
Error while removing dead code from com/Plugin/ClassManager/Abilities/Class88 ALLATORIxDEMO()[I
Deobfuscation failed. Please open a ticket on GitHub
java.lang.StackOverflowError
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:993)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1001)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.execute(MethodAnalyzer.java:1015)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.analyze(MethodAnalyzer.java:267)
at com.javadeobfuscator.deobfuscator.analyzer.MethodAnalyzer.analyze(MethodAnalyzer.java:221)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$null$2(DeadCodeRemover.java:42)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$transform$3(DeadCodeRemover.java:40)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.transform(DeadCodeRemover.java:39)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.PeepholeOptimizer.transform(PeepholeOptimizer.java:45)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:170)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Cannot Deobfuscate Allitori String Decryption

I get this error when I try to decrypt:
Reading complete. Transforming

Deobfuscation failed. Please open a ticket on GitHub
java.lang.NullPointerException
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.lambda$null$246(StringEncryptionTransformer.java:61)
at java.util.ArrayList.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.lambda$transform$247(StringEncryptionTransformer.java:49)
at java.util.HashMap$Values.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:48)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:162)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

java.lang.NullPointerException

Error while deobfuscating a jar -

[Stringer] [StringEncryptionTransformer] Starting
[Stringer] [StringEncryptionTransformer] Found 2186 encrypted strings
Deobfuscation failed. Please open a ticket on GitHub
java.lang.NullPointerException
at java.lang.reflect.Array.get(Native Method)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.executeArrayLoad(MethodExecutor.java:101)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:426)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:80)
at com.javadeobfuscator.deobfuscator.transformers.stringer.StringEncryptionTransformer.decrypt(StringEncryptionTransformer.java:204)
at com.javadeobfuscator.deobfuscator.transformers.stringer.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:61)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:170)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

https://www.dropbox.com/s/bs2cq59lngje1jj/stringerx1.jar?dl=0

Here's the link to the file if you need it

Allatori Deobfuscation

I dont know how to do this can someone help me?

C:\Users\User\Desktop\deob>java -jar deob.jar -input input.jar -output output.jar -transformer allatori.StringEncryptionTransformer -path "C:\Program Files\Java\jre1.8.0_91\lib\rt.jar"
Warning! Output file already exists

Reading complete. Loading hierachy

Could not locate a class file.
Have you added the necessary files to the -path argument?
The error was:
com.javadeobfuscator.deobfuscator.Deobfuscator$NoClassInPathException: com/google/common/base/Function
at com.javadeobfuscator.deobfuscator.Deobfuscator.assureLoaded(Deobfuscator.java:197)
at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:240)
at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:207)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:160)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

C:\Users\User\Desktop\deob>java -jar deob.jar -input input.jar -output output.jar -transformer stringer.StringEncryptionTransformer -path "C:\Program Files\Java\jre1.8.0_91\lib\rt.jar" "C:\Program Files\Java\jre1.8.0_91\lib\jce.jar"
Warning! Output file already exists

Reading complete. Loading hierachy

Could not locate a class file.
Have you added the necessary files to the -path argument?
The error was:
com.javadeobfuscator.deobfuscator.Deobfuscator$NoClassInPathException: com/google/common/base/Function
at com.javadeobfuscator.deobfuscator.Deobfuscator.assureLoaded(Deobfuscator.java:197)
at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:240)
at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:207)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:160)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

DashO deobfuscator only works for low-setting configurations.

Here are different setting combinations of DashO's string encryption.

What currently is checked:

  • Is the description (String, int)String?
  • Are the parameters and method calls directly next to each-other?

Some things to account for:

  • Parameters that are not constants loaded right before the method call.
  • Methods that have the same description but paramters do different things.

Example:

    final int n = 14 * 12;
    final int n2 = 4;
    this.setTitle(Type.subSequence((n + (n2 + (n2 + n2))) / (14 << 2), 11, "[xwmBv9 !'?{ie"));

    final int n3 = 5 << 2;
    final int n4 = 2;
    final int n5 = n3 + (n4 + n4);
    final int n6 = 5;
    final String subSequence = Type.subSequence(n5 / (n6 + n6), 52, ";s;n;5L6f)l+>e8){9}}+)--\u0004w.pdq?swz,h6lz|t.m36h4r > \u0000{*,`\tz\"f+)mmJ~;k8o%sJ>{+8o\u0011r*>/,ek\u001e@\n;\u000bfd(m:wo&l97}!9\u001df&;oe3g\u001df&{/\u0011r*~olek^\u0000J;\u000bf$hm:w/f,97=ay\u0017K\u0000-k\fg5r!d8\bp=to.m#x#|o/b/i");
    this.d.setToolTipText(subSequence);

Samples: DashO String Encryption Samples.zip

UnsupportedOperationException on PeepholeOptimizer

Transformer: general.peephole.PeepholeOptimizer

Deobfuscation failed. Please open a ticket on GitHub
java.lang.UnsupportedOperationException
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.execute(DeadCodeRemover.java:797)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.execute(DeadCodeRemover.java:241)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$null$49(DeadCodeRemover.java:85)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover$$Lambda$28/729214165.accept(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
        at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.forEach(Unknown Source)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$transform$50(DeadCodeRemover.java:46)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover$$Lambda$26/1207755460.accept(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
        at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.forEach(Unknown Source)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.transform(DeadCodeRemover.java:45)
        at com.javadeobfuscator.deobfuscator.transformers.general.peephole.PeepholeOptimizer.transform(PeepholeOptimizer.java:38)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:152)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Problem using Allatori.STRING_ENCRYPTION.

Hello, I have been trying to use with the command below but it didn't work.

C:\Users\sniffer\Desktop>java -jar deobfuscator-1.0.0.jar -input "e2413e6df124e4
d319df8a869de2a8c936d907016d7f41424fe9f97d5c9b8049(jar).jar" -output output.jar
-transformer allatori.StringEncryptionTransformer -path "C:\Program Files\Java\j
re1.8.0_101\lib\rt.jar"

Reading complete. Loading hierachy

Transforming

Deobfuscation failed. Please open a ticket on GitHub
java.lang.ClassCastException: com.javadeobfuscator.deobfuscator.org.objectweb.as
m.tree.InsnNode cannot be cast to com.javadeobfuscator.deobfuscator.org.objectwe
b.asm.tree.LdcInsnNode
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncrypt
ionTransformer.lambda$null$1(StringEncryptionTransformer.java:72)
at java.util.ArrayList.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncrypt
ionTransformer.lambda$transform$2(StringEncryptionTransformer.java:61)
at java.util.HashMap$Values.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncrypt
ionTransformer.transform(StringEncryptionTransformer.java:60)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.jav
a:170)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMa
in.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorM
ain.java:26)

Here is the image using obfuscation.
deob

Some strings don't deobfuscated

Today I have come across some obfuscate texts (Allatori) that have not been deobfuscated. I don't know why. I let them here, maybe can help to improve the strings deobfuscate.

  • Jzh|[M -> Accept
  • XHZNI\u007f4Gxe~~xL\ -> Accept-Language
  • Hvewnz\u007fpDW -> Connection
  • @|ni&Xgp]\ -> Keep-Alive
  • mZ,\u0003m\tdy\pG0\u0001

Best regards.

Allatori Deobfuscation problem

I tried to deobfuscate allatori but that's the result 👍

`C:\Users\x0r\Desktop>java -jar deob.jar -input andro.jar -output fanis.jar -transformer allatori.StringEncryptionTransformer

Reading complete. Loading hierachy

Deobfuscation failed. Please open a ticket on GitHub
com.javadeobfuscator.deobfuscator.Deobfuscator$NoClassInPathException: javax/swing/JFrame
at com.javadeobfuscator.deobfuscator.Deobfuscator.assureLoaded(Deobfuscator.java:197)
at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:230)
at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:207)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:160)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)`

maybe because i haven't set the -path ? if yes , could you explain me which file should i put in the -path ? i don't understand very well ! sorry i'm korean.

Unable to deofuscate Allori

The Jar File Using Allori Demo :
https://mega.nz/#!PVpyhAoR!3qn4AvPs4eW6r2DmjA2LGbby-8YsNgwmDVxbmq8Qayw

Error while decrypting Allatori string.
Are you sure you're deobfuscating something obfuscated by Allatori?
com.javadeobfuscator.deobfuscator.executor.exceptions.NoSuchMethodHandlerException: Could not find invoker for a$hC ALLATORIxDEMO(Ljava/lang/String;)Ljava/lang/String;
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:1165)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:80)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.lambda$null$1(StringEncryptionTransformer.java:66)
at java.util.ArrayList.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.lambda$transform$2(StringEncryptionTransformer.java:51)
at java.util.HashMap$Values.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:50)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:170)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)
Deobfuscation failed. Please open a ticket on GitHub
java.lang.NullPointerException
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.lambda$null$1(StringEncryptionTransformer.java:63)
at java.util.ArrayList.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.lambda$transform$2(StringEncryptionTransformer.java:51)
at java.util.HashMap$Values.forEach(Unknown Source)
at com.javadeobfuscator.deobfuscator.transformers.allatori.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:50)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:170)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Allatory + Synthetic/Bridge modifiers

Hi again, how are you? Well, I'm try to deobfucate a jar onfuscate with Allatori.

First, run the allatori command to do it and everything is OK. Now, I go to Enigma Decompiler to see the code and I realize that use / Synthetic / so I run the second command to remove this, again, everything is ok.

Well, now, when I go to see the code and with only one class the decompiler crashes and say this:

java.lang.IllegalArgumentException: bad position: 58
    at javax.swing.text.JTextComponent.setCaretPosition(JTextComponent.java:1629)
    at cuchaz.enigma.gui.CodeReader.navigateToToken(CodeReader.java:160)
    at cuchaz.enigma.gui.Gui.showToken(Gui.java:740)
    at cuchaz.enigma.gui.Gui.showTokens(Gui.java:756)
    at cuchaz.enigma.gui.GuiController.showReference(GuiController.java:280)
    at cuchaz.enigma.gui.GuiController.openReference(GuiController.java:269)
    at cuchaz.enigma.gui.GuiController.openDeclaration(GuiController.java:250)
    at cuchaz.enigma.gui.Gui.navigateTo(Gui.java:908)
    at cuchaz.enigma.gui.Gui.access$0(Gui.java:900)
    at cuchaz.enigma.gui.Gui$2.onSelectClass(Gui.java:170)
    at cuchaz.enigma.gui.ClassSelector$3.mouseClicked(ClassSelector.java:92)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
    at java.awt.Component.processMouseEvent(Component.java:6538)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

So, I extract the source and the conflict class have this within:

public class ClassName
{
    public static void ClassName(final String a1) {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     0: aconst_null    
        //     1: astore_1       
        //     2: new             Ljava/io/FileOutputStream;
        //     5: dup            
        //     6: ldc             "csolver.properties"
        //     8: invokespecial   java/io/FileOutputStream.<init>:(Ljava/lang/String;)V
        //    11: astore_1       
        //    12: aload_0         /* a1 */
        //    13: aload_1        
        //    14: aconst_null    
        //    15: invokevirtual   java/util/Properties.store:(Ljava/io/OutputStream;Ljava/lang/String;)V
        //    18: aload_1        
        //    19: ifnull          75
        //    22: aload_1        
        //    23: invokevirtual   java/io/OutputStream.close:()V
        //    26: return         
        //    27: athrow         
        //    28: astore_2       
        //    29: aload_2        
        //    30: invokevirtual   java/io/IOException.printStackTrace:()V
        //    33: return         
        //    34: athrow         
        //    35: astore_2       
        //    36: aload_2        
        //    37: invokevirtual   java/io/IOException.printStackTrace:()V
        //    40: aload_1        
        //    41: ifnull          75
        //    44: aload_1        
        //    45: invokevirtual   java/io/OutputStream.close:()V
        //    48: return         
        //    49: astore_2       
        //    50: aload_2        
        //    51: invokevirtual   java/io/IOException.printStackTrace:()V
        //    54: return         
        //    55: astore_3       
        //    56: aload_1        
        //    57: ifnull          73
        //    60: aload_1        
        //    61: invokevirtual   java/io/OutputStream.close:()V
        //    64: aload_3        
        //    65: goto            74
        //    68: astore_1       
        //    69: aload_1        
        //    70: invokevirtual   java/io/IOException.printStackTrace:()V
        //    73: aload_3        
        //    74: athrow         
        //    75: return         
        //    LocalVariableTable:
        //  Start  Length  Slot  Name  Signature
        //  -----  ------  ----  ----  ----------------------
        //  0      76      0     a1    Ljava/util/Properties;
        //    Exceptions:
        //  Try           Handler
        //  Start  End    Start  End    Type                 
        //  -----  -----  -----  -----  ---------------------
        //  22     26     28     34     Ljava/io/IOException;
        //  2      18     35     55     Ljava/io/IOException;
        //  44     48     49     55     Ljava/io/IOException;
        //  2      18     55     75     Any
        //  35     40     55     75     Any
        //  60     64     68     73     Ljava/io/IOException;
        //  55     56     55     75     Any
        // 
        // The error that occurred was:
        // 
        // java.lang.IllegalStateException: Inconsistent stack size at #0074 (coming from #0065).
        //     at com.strobel.decompiler.ast.AstBuilder.performStackAnalysis(AstBuilder.java:2182)
        //     at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:109)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:210)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105)
        //     at cuchaz.enigma.Deobfuscator.getSourceTree(Deobfuscator.java:224)
        //     at cuchaz.enigma.Deobfuscator.writeSources(Deobfuscator.java:306)
        //     at cuchaz.enigma.gui.GuiController$1.run(GuiController.java:110)
        //     at cuchaz.enigma.gui.ProgressDialog$1.run(ProgressDialog.java:98)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }

    public static Properties IiIiIiiiiiii() {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     0: new             Ljava/util/Properties;
        //     3: dup            
        //     4: invokespecial   java/util/Properties.<init>:()V
        //     7: astore_0       
        //     8: aconst_null    
        //     9: astore_1       
        //    10: ldc             "csolver.properties"
        //    12: astore_2       
        //    13: new             Ljava/io/FileInputStream;
        //    16: dup            
        //    17: aload_2        
        //    18: invokespecial   java/io/FileInputStream.<init>:(Ljava/lang/String;)V
        //    21: dup            
        //    22: astore_1       
        //    23: ifnonnull       75
        //    26: aconst_null    
        //    27: astore_3       
        //    28: aload_1        
        //    29: ifnull          46
        //    32: aload_1        
        //    33: invokevirtual   java/io/InputStream.close:()V
        //    36: aload_3        
        //    37: areturn        
        //    38: athrow         
        //    39: astore          4
        //    41: aload           4
        //    43: invokevirtual   java/io/IOException.printStackTrace:()V
        //    46: aload_3        
        //    47: areturn        
        //    48: nop            
        //    49: nop            
        //    50: nop            
        //    51: athrow         
        //    52: astore_3       
        //    53: aconst_null    
        //    54: astore          4
        //    56: aload_1        
        //    57: ifnull          72
        //    60: aload_1        
        //    61: invokevirtual   java/io/InputStream.close:()V
        //    64: aload           4
        //    66: areturn        
        //    67: astore_3       
        //    68: aload_3        
        //    69: invokevirtual   java/io/IOException.printStackTrace:()V
        //    72: aload           4
        //    74: areturn        
        //    75: aload_0        
        //    76: aload_1        
        //    77: invokevirtual   java/util/Properties.load:(Ljava/io/InputStream;)V
        //    80: aload_1        
        //    81: ifnull          142
        //    84: aload_1        
        //    85: invokevirtual   java/io/InputStream.close:()V
        //    88: aload_0        
        //    89: areturn        
        //    90: astore_2       
        //    91: aload_0        
        //    92: aload_2        
        //    93: invokevirtual   java/io/IOException.printStackTrace:()V
        //    96: areturn        
        //    97: astore_2       
        //    98: aload_2        
        //    99: invokevirtual   java/io/IOException.printStackTrace:()V
        //   102: aload_1        
        //   103: ifnull          142
        //   106: aload_1        
        //   107: invokevirtual   java/io/InputStream.close:()V
        //   110: aload_0        
        //   111: areturn        
        //   112: astore_2       
        //   113: aload_0        
        //   114: aload_2        
        //   115: invokevirtual   java/io/IOException.printStackTrace:()V
        //   118: areturn        
        //   119: astore          5
        //   121: aload_1        
        //   122: ifnull          139
        //   125: aload_1        
        //   126: invokevirtual   java/io/InputStream.close:()V
        //   129: aload           5
        //   131: goto            141
        //   134: astore_1       
        //   135: aload_1        
        //   136: invokevirtual   java/io/IOException.printStackTrace:()V
        //   139: aload           5
        //   141: athrow         
        //   142: aload_0        
        //   143: areturn        
        //    Exceptions:
        //  Try           Handler
        //  Start  End    Start  End    Type                 
        //  -----  -----  -----  -----  ---------------------
        //  32     36     39     46     Ljava/io/IOException;
        //  13     28     52     75     Ljava/lang/Exception;
        //  60     64     67     72     Ljava/io/IOException;
        //  84     88     90     97     Ljava/io/IOException;
        //  10     28     97     119    Ljava/io/IOException;
        //  52     56     97     119    Ljava/io/IOException;
        //  75     80     97     119    Ljava/io/IOException;
        //  106    110    112    119    Ljava/io/IOException;
        //  10     28     119    142    Any
        //  52     56     119    142    Any
        //  75     80     119    142    Any
        //  97     102    119    142    Any
        //  125    129    134    139    Ljava/io/IOException;
        //  119    121    119    142    Any
        // 
        // The error that occurred was:
        // 
        // java.lang.IllegalStateException: Inconsistent stack size at #0141 (coming from #0131).
        //     at com.strobel.decompiler.ast.AstBuilder.performStackAnalysis(AstBuilder.java:2182)
        //     at com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:109)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:210)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105)
        //     at cuchaz.enigma.Deobfuscator.getSourceTree(Deobfuscator.java:224)
        //     at cuchaz.enigma.Deobfuscator.writeSources(Deobfuscator.java:306)
        //     at cuchaz.enigma.gui.GuiController$1.run(GuiController.java:110)
        //     at cuchaz.enigma.gui.ProgressDialog$1.run(ProgressDialog.java:98)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
}

I hope you can see what is wrong here and fix the problem.... the problem is only with one class as I said.

NoSuchMethodHandlerException - java/lang/reflect/Method hashCode()I

While deobfuscating stringer with your program, I found an error, which as follows ------
[Stringer] [StringEncryptionTransformer] Starting
[Stringer] [StringEncryptionTransformer] Found 6342 encrypted strings
Deobfuscation failed. Please open a ticket on GitHub
com.javadeobfuscator.deobfuscator.executor.exceptions.NoSuchMethodHandlerException: Could not find invoker for java/lang/reflect/Method hashCode()I
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:1060)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:80)
at com.javadeobfuscator.deobfuscator.executor.defined.MappedMethodProvider.invokeMethod(MappedMethodProvider.java:53)
at com.javadeobfuscator.deobfuscator.executor.providers.DelegatingProvider.invokeMethod(DelegatingProvider.java:33)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:1131)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:80)
at com.javadeobfuscator.deobfuscator.executor.defined.MappedMethodProvider.invokeMethod(MappedMethodProvider.java:53)
at com.javadeobfuscator.deobfuscator.executor.providers.DelegatingProvider.invokeMethod(DelegatingProvider.java:33)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:1131)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:80)
at com.javadeobfuscator.deobfuscator.transformers.stringer.StringEncryptionTransformer.decrypt(StringEncryptionTransformer.java:203)
at com.javadeobfuscator.deobfuscator.transformers.stringer.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:61)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:170)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

(Newest version of stringer, I have a dl if you want it)

The deobfuscator can't handle empty package names

Example jar: https://www.spigotmc.org/resources/anothercheat-anti-cheat.24323/

java.lang.IllegalArgumentException: Invalid class name (must be a fully qualified class name in internal form): /ç?´ç??人ç?´ç??ç??ç??/è¦?ç?´/ç?´ç??è¦
?/ä¸?/人ä¸?ç??ç?´/ä¸?/ç?´ç??ç?¼äººç?¼/ç?¼/人/è¦?è¦?ä¸?人ç?¼ç??ç??ç?´äººç?¼/ç?´è¦?/è¦?ç?¼ä¸?人/ç??ç?¼è¦?/ç??/ç?¼ä¸?ç?´ä¸?ç?¼ä¸?/ç??ç??ç??人è¦?/é??
ç?´ç?´ç?´ç?¼ç??è¦?é??ç?´ä¸?ç??é??ä¸?ç??è§?人ç??é??人ç?´ç??è¦?è§?ç??人人人è§?ç??ç??人ä¸?人è¦?ç?¼ç??è§?è¦?è§?ç??ç??ç?¼ç??ç??ç??ç?¼ç??ç?´ç??人é??
人ç??ç??ç??ç??人ç?¼ç??è§?人ç??ç?´ç?¼ç??è¦?ä¸?é??ç?´äººç?´ç??è¦?ç??ä¸?ç??è¦?ç??ç?´ç??HA
        at com.javadeobfuscator.deobfuscator.org.objectweb.asm.util.CheckMethodAdapter.checkInternalName(CheckMethodAdapter.java:1351)
        at com.javadeobfuscator.deobfuscator.org.objectweb.asm.util.CheckMethodAdapter.checkInternalName(CheckMethodAdapter.java:1318)
        at com.javadeobfuscator.deobfuscator.org.objectweb.asm.util.CheckClassAdapter.visit(CheckClassAdapter.java:383)
        at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.accept(ClassReader.java:622)
        at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.accept(ClassReader.java:506)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.toByteArray(Deobfuscator.java:322)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.lambda$start$5(Deobfuscator.java:179)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
        at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
        at java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.forEach(Unknown Source)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:177)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Renaming capabilities

It might be really useful if some basic renaming capabilities could be implemented. Then it should also output what has been renamed exactly.

Method renaming - rename ambiguous methods by for example appending the return type to the method name
Class renaming - rename classes so they don't collide with member names by adding a prefix.

UnsupportedOperationException

Rearranged 683 goto blocks
Removed 0 continous gotos
Removed 0 unconditional switches
Deobfuscation failed. Please open a ticket on GitHub
java.lang.UnsupportedOperationException
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.execute(DeadCodeRemover.java:797)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$null$49(DeadCodeRemover.java:85)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$transform$50(DeadCodeRemover.java:46)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.transform(DeadCodeRemover.java:45)
at com.javadeobfuscator.deobfuscator.transformers.general.peephole.PeepholeOptimizer.transform(PeepholeOptimizer.java:38)
at com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:142)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:152)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Error

Might be doing something wrong idk. I have a server with KVM that has a proprietary client that I want to cleanup.

$ java -jar deobfuscator-1.0.0.jar -input avctKVM.jar -output output.jar -trans
former general.SyntheticBridgeTransformer

Reading complete. Loading hierachy

Could not locate a class file.
Have you added the necessary files to the -path argument?
The error was:
com.javadeobfuscator.deobfuscator.Deobfuscator$NoClassInPathException: java/lang/Object
        at com.javadeobfuscator.deobfuscator.Deobfuscator.assureLoaded(Deobfuscator.java:197)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:230)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:207)
        at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:160)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

avctKVM.zip

Allatori issue

When I try to deob Allatori jar file ofuscated I get:

> java -jar deobfuscator.jar -input test.jar -output output.jar -transformer allatori.StringEncryptionTransformer
> Warning! Output file already exists
> 
> Reading complete. Loading hierachy
> 
> Deobfuscation failed. Please open a ticket on GitHub
> com.javadeobfuscator.deobfuscator.Deobfuscator$NoClassInPathException: java/lang/Object
>         at com.javadeobfuscator.deobfuscator.Deobfuscator.assureLoaded(Deobfuscator.java:197)
>         at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:230)
>         at com.javadeobfuscator.deobfuscator.Deobfuscator.loadHierachy(Deobfuscator.java:207)
>         at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:160)
>         at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
>         at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Hope u can fix it soon, if you need I can upload the test file.

zelix.StringEncryptionTransformer - UnsupportedOperationException

java.lang.UnsupportedOperationException
    at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.execute(DeadCodeRemover.java:797)
    at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$null$49(DeadCodeRemover.java:85)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.lambda$transform$50(DeadCodeRemover.java:46)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.javadeobfuscator.deobfuscator.transformers.general.peephole.DeadCodeRemover.transform(DeadCodeRemover.java:45)
    at com.javadeobfuscator.deobfuscator.transformers.general.peephole.PeepholeOptimizer.transform(PeepholeOptimizer.java:38)
    at com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:142)
    at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:152)
    at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
    at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Zelix Klassmaster

Code is still too hacky to be released. Help is appreciated with full deobfuscation of (eg not just decrypting class strings but also local vars storing temporarily decrypted strings)

Format opcodes in gson

Code I used to use (needs -1 handlng and maybe some more prefixes to ignore)

    private static final Map<Integer, String> opcodeMap = new HashMap<>();

    static {
        for (Field field : Opcodes.class.getDeclaredFields()) {
            try {
                String name = field.getName();
                if (!name.startsWith("ACC_") && !name.startsWith("H_")) {
                    opcodeMap.put((Integer) field.get(null), name);
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }

    public static String opcodeToString(int opcode) {
        return opcodeMap.get(opcode);
    }

Unicode chars in classnames stop normalization

the deobfuscator seems to have some problems with some unicode chars. the jar I am trying to normalize has a bunch of chineese letters, some of which can't even be displayed on win10.

this seems to be a issue with asm.
this input jar is this one, I didn't made it so proceed with caution http://www.mediafire.com/download/w99tvemr6u864uk/Output.zip
java -jar deobfuscator-1.0.0.jar -input input.jar -output output.jar -transformer normalizer.ClassNormalizer normalizer.MethodNormalizer normalizer.FieldNormalizer -path "C:\Program Files\Java\jre1.8.0_91\lib\rt.jar" Could not parse ??.class (is it a class?) java.lang.IllegalArgumentException at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:170) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424) at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:105) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26) Could not parse ??.class (is it a class?) java.lang.IllegalArgumentException at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:170) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424) at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:105) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26) Deobfuscation failed. Please open a ticket on GitHub java.lang.ArrayIndexOutOfBoundsException: 55572 at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:181) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153) at com.javadeobfuscator.deobfuscator.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424) at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:105) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102) at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Ignore.

Spoof issue to tease author.

Could not find invoker for java/lang/BootstrapMethodError ()V

Stringer] [InvokedynamicTransformer] Starting
[Stringer] [InvokedynamicTransformer] Finding invokedynamic instructions
[Stringer] [InvokedynamicTransformer] Found 1242 invokedynamic instructions
[Stringer] [InvokedynamicTransformer] Inlining invokedynamic
Deobfuscation failed. Please open a ticket on GitHub
com.javadeobfuscator.deobfuscator.executor.exceptions.NoSuchMethodHandlerException: Could not find invoker for java/lang/BootstrapMethodError ()V
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:742)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:923)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:75)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.lambda$null$96(InvokedynamicTransformer.java:111)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.lambda$inlineInvokeDynamic$97(InvokedynamicTransformer.java:91)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.inlineInvokeDynamic(InvokedynamicTransformer.java:90)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.transform(InvokedynamicTransformer.java:55)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:145)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

BootstrapMethodError

Still getting this error
[Stringer] [InvokedynamicTransformer] Starting
[Stringer] [InvokedynamicTransformer] Finding invokedynamic instructions
[Stringer] [InvokedynamicTransformer] Found 1242 invokedynamic instructions
[Stringer] [InvokedynamicTransformer] Inlining invokedynamic
Deobfuscation failed. Please open a ticket on GitHub
java.lang.BootstrapMethodError
at com.javadeobfuscator.deobfuscator.executor.defined.JVMMethodProvider$1$22.lambda$new$232(JVMMethodProvider.java:203)
at com.javadeobfuscator.deobfuscator.executor.defined.JVMMethodProvider.invokeMethod(JVMMethodProvider.java:218)
at com.javadeobfuscator.deobfuscator.executor.providers.DelegatingProvider.invokeMethod(DelegatingProvider.java:32)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:745)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:947)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:947)
at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:78)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.lambda$null$146(InvokedynamicTransformer.java:149)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.lambda$inlineInvokeDynamic$147(InvokedynamicTransformer.java:129)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.inlineInvokeDynamic(InvokedynamicTransformer.java:128)
at com.javadeobfuscator.deobfuscator.transformers.stringer.InvokedynamicTransformer.transform(InvokedynamicTransformer.java:57)
at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:152)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:102)
at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.