Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE in zelix.StringEncryptionTransformer #14

Closed
rmueller83 opened this issue Apr 4, 2016 · 5 comments
Closed

NPE in zelix.StringEncryptionTransformer #14

rmueller83 opened this issue Apr 4, 2016 · 5 comments

Comments

@rmueller83
Copy link

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.

@samczsun
Copy link
Member

samczsun commented Apr 4, 2016

Right. I seem to have forgotten to add a nullcheck. That portion of the transformer is pretty volatile hence the fixme note

@samczsun
Copy link
Member

samczsun commented Apr 4, 2016

Unfortunately, it would appear that specific bytecode patterns used is different here. Because of how volatile the transformer is there's really no point in expanding it to handle every edge case. Instead, I'd rather create a catch-all (see MethodAnalyzer) which can adapt to different variations of this obfuscation in general

@koxu1996
Copy link

I encountered same problem:

java.lang.IllegalArgumentException: argument type mismatch                                            
        at java.lang.reflect.Array.set(Native Method)                                                 
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.executeArrayStore(MethodExecutor.java:172)                                                                                              
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:495) 
        at com.javadeobfuscator.deobfuscator.executor.MethodExecutor.execute(MethodExecutor.java:85)  
        at com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer.lambda$transform$11(StringEncryptionTransformer.java:250)                                                        
        at java.util.HashMap$Values.forEach(HashMap.java:980)                                         
        at com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer.transform(StringEncryptionTransformer.java:198)                                                                  
        at com.javadeobfuscator.deobfuscator.Deobfuscator.start(Deobfuscator.java:172)                
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.run(DeobfuscatorMain.java:105)          
        at com.javadeobfuscator.deobfuscator.DeobfuscatorMain.main(DeobfuscatorMain.java:26)

@ThisTestUser
Copy link
Contributor

#121 fixes this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants
@rmueller83 @koxu1996 @samczsun @ThisTestUser and others