yocontra / JMD

Java bytecode analysis/deobfuscation tool
MIT License
198 stars 50 forks source link

Fixed a NullException Bug #15

Closed Wetitpig closed 6 years ago

Wetitpig commented 6 years ago

A null exception bug may occur if the list is null.

To fix this, return from function if list is null.

Please add this. Thanks

yocontra commented 6 years ago

In what case is the instruction list null?

Wetitpig commented 6 years ago

I have tried to deobfuscate a jar file like this, with: java -jar jmd-cli/build/libs/jmd-cli-1.6.jar ../classes.jar smokescreen true

and here is the log output: Java Multi-Purpose Deobfuscator Version UNKNOWN Created by Contra. Please read LICENSE.txt Tons of code from skoalman, super_, ollie, popcorn89, the prophecy, and saevion [SmokeScreenTransformer][DEBUG]Classes loaded from JAR [SmokeScreenTransformer]SmokeScreen Deobfuscator [SmokeScreenTransformer]Decrypting Strings... [SmokeScreenTransformer][DEBUG]Found key for com.google.android.exoplayer2.metadata.id3.a: 3 [SmokeScreenTransformer][DEBUG]Strings for class: &Kkk [SmokeScreenTransformer][DEBUG]Found key for com.google.android.exoplayer2.metadata.id3.a: 4 [SmokeScreenTransformer][DEBUG]Strings for class: !G[7kk [SmokeScreenTransformer][DEBUG]Found key for com.google.android.exoplayer2.metadata.id3.a: 3 [SmokeScreenTransformer][DEBUG]Strings for class: &Kkk [SmokeScreenTransformer][DEBUG]Found key for com.google.android.exoplayer2.metadata.id3.a: 4 [SmokeScreenTransformer][DEBUG]Strings for class: !G[7kk [SmokeScreenTransformer][DEBUG]Found key for com.google.android.exoplayer2.metadata.id3.a: 3 [SmokeScreenTransformer][DEBUG]Strings for class: &Kkk [SmokeScreenTransformer][DEBUG]Found key for com.google.android.exoplayer2.metadata.id3.a: 4 [SmokeScreenTransformer][DEBUG]Strings for class: !G[7kk

Then, an exception was caught, which was fixed by this fix. Exception in thread "main" java.lang.NullPointerException at net.contra.jmd.transformers.smokescreen.SmokeScreenTransformer.grabStrings(SmokeScreenTransformer.java:77) at net.contra.jmd.transformers.smokescreen.SmokeScreenTransformer.transform(SmokeScreenTransformer.java:137) at net.contra.jmd.Deobfuscator.main(Deobfuscator.java:56)