CalebFenton/simplify

error when deals with apk

Closed this issue · 0 comments

http://sj.qq.com/myapp/detail.htm?apkName=com.netease.yanxuan
you can download this apk , and it use La/auu/a;->c to decode string 。
the debug information is blew:
java -jar simplify.jar com.netease.yanxuan_3.2.0_880.apk -it "La/auu/a;->c" -v
20:34:38.890 INFO Main - Options:
Input file: com.netease.yanxuan_3.2.0_880.apk
Output file: com.netease.yanxuan_3.2.0_880_simple.apk
Include filter: La/auu/a;->c
Exclude filter: null
Max execution time: 300
Max address visits: 10000
Max call depth: 50
Max method visits: 1000000
Max optimization passes: 100
Output API level: 15
Include support library: false
Executing: La/auu/a;->c(Ljava/lang/String;)Ljava/lang/String;
20:34:47.529 INFO MethodExecutor - Executing La/auu/a;->()V, depth=0
20:34:47.874 INFO MethodExecutor - Executing La/auu/a;->c(Ljava/lang/String;)Ljava/lang/String;, depth=0
20:34:48.007 INFO MethodExecutor - Executing La/auu/a;->()V, depth=1
20:34:48.013 INFO MethodExecutor - Executing La/auu/a;->ooo0ooo0o0o000o(Ljava/lang/String;I)[B, depth=1
20:34:48.025 INFO MethodExecutor - Executing La/auu/a;->ooo0ooo0o0o000o([BI)[B, depth=2
20:34:48.107 INFO MethodExecutor - Executing La/auu/a;->ooo0ooo0o0o000o([BIII)[B, depth=3
20:34:48.121 INFO MethodExecutor - Executing La/auu/a;->ooo0oo00000oo000o(I[B)V, depth=4
20:34:48.167 INFO MethodExecutor - Executing La/auu/a;->ooo0ooo0o0o0([BIIZ)Z, depth=4
20:34:57.516 WARN InvokeOp - org.cf.smalivm.MaxAddressVisitsExceededException: Exceeded max address visits @105 ExecutionNode{signature=La/auu/a;->ooo0ooo0o0o0([BIIZ)Z, op=add-int/lit8 r6, r5, 0x1, @=105} in La/auu/a;->ooo0ooo0o0o0([BIIZ)Z
20:34:57.520 INFO InvokeOp - Problem executing La/auu/a;->ooo0ooo0o0o0([BIIZ)Z, propagating ambiguity.
20:34:57.605 WARN NodeExecutor - ExecutionNode{signature=La/auu/a;->c(Ljava/lang/String;)Ljava/lang/String;, op=aput-byte r8, r0, r2, @=41} threw a real exception but was caught by an exception handler. This may be a bug in smalivm or in the input code. Exception: java.lang.ClassCastException: org.cf.smalivm.type.VirtualClass cannot be cast to org.cf.smalivm.type.VirtualArray
Simplifying: La/auu/a;->c(Ljava/lang/String;)Ljava/lang/String;
Exception in thread "main" java.lang.NullPointerException
at org.cf.smalivm.context.Heap.cloneItem(Heap.java:187)
at org.cf.smalivm.context.Heap.get(Heap.java:69)
at org.cf.smalivm.context.Heap.get(Heap.java:89)
at org.cf.smalivm.context.BaseState.peekRegister(BaseState.java:90)
at org.cf.smalivm.context.BaseState.wasRegisterRead(BaseState.java:123)
at org.cf.smalivm.context.MethodState.wasRegisterRead(MethodState.java:245)
at org.cf.simplify.strategy.DeadRemovalStrategy.isAnyRegisterUsed(DeadRemovalStrategy.java:119)
at org.cf.simplify.strategy.DeadRemovalStrategy.isAnyRegisterUsed(DeadRemovalStrategy.java:103)
at org.cf.simplify.strategy.DeadRemovalStrategy.isDeadAssignment(DeadRemovalStrategy.java:344)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
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.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at org.cf.simplify.strategy.DeadRemovalStrategy.getDeadAssignmentAddresses(DeadRemovalStrategy.java:217)
at org.cf.simplify.strategy.DeadRemovalStrategy.perform(DeadRemovalStrategy.java:182)
at org.cf.simplify.Optimizer.simplify(Optimizer.java:109)
at org.cf.simplify.Launcher.executeClass(Launcher.java:202)
at org.cf.simplify.Launcher.run(Launcher.java:153)
at org.cf.simplify.Main.main(Main.java:14)