CalebFenton / simplify

Android virtual machine and deobfuscator
Other
4.46k stars 440 forks source link

Dex Writing Error after Simplification #150

Open apkunpacker opened 4 years ago

apkunpacker commented 4 years ago

Provide specific APK, DEX, or file hash classes.dex.zip

Describe the bug outputlog.txt

Writing output to classes_simple.dex Exception in thread "main" java.lang.IllegalStateException: Switch instruction at address/index 0x1c/12 refers to the wrong type of payload instruction. at org.jf.dexlib2.builder.MutableMethodImplementation.fixInstructions(MutableMethodImplementation.java:386) at org.jf.dexlib2.builder.MutableMethodImplementation.getTryBlocks(MutableMethodImplementation.java:167) at org.jf.dexlib2.writer.builder.BuilderClassPool.getTryBlocks(BuilderClassPool.java:307) at org.jf.dexlib2.writer.builder.BuilderClassPool.getTryBlocks(BuilderClassPool.java:64) at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1011) at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:345) at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:300) at org.cf.simplify.Launcher.run(Launcher.java:149) at org.cf.simplify.Main.main(Main.java:14)

To Reproduce

java -jar simplify.jar --max-call-depth 999 --max-address-visits 999 --max-method-visits 999 --ignore-error classes.dex

Attempted work-arounds You are the work-around sir 😊😎

CalebFenton commented 4 years ago

Key error is: Multiple switch instructions refer to the same payload. This is not currently supported. Please file a bug :)

This is from Dexlib. Likely, during optimization, several execution branches are pruned and control flow collapses to a single address. Will need to come up with a work around or figure out a good way of changing the switch. It might be possible to add some nops and jump to those. Might also be possible to remove the switch, but robust modification of control flow gets a bit tricky.

To help with searching, here's the log:


/storage/emulated/0 $ cd debugging                       
/storage/emulated/0/debugging $ java -jar simplify.jar --max-call-depth 999 --max-address-visits 999 --max-method-visits 999 --ignore-error classes.dex
06:31:25.320 INFO  Main         - Options:
Input file: classes.dex
Output file: classes_simple.dex
Include filter: null
Exclude filter: null
Max execution time: 300
Max address visits: 999
Max call depth: 999
Max method visits: 999
Max optimization passes: 100
Output API level: 15
Include support library: false
06:31:28.867 INFO  Main         - Filtered 0 support library classes
[1 / 10] Processing top level class Lru/leymoy/ۦ;
(1 / 29) Executing top level method: Lru/leymoy/ۦ;->ۦۨۖ(Ljava/lang/Object;)Ljava/lang/ClassLoader;
WARNING: An illegal reflective access operation has occurredWARNING: Illegal reflective access by com.rits.cloning.Cloner (file:/storage/emulated/0/debugging/simplify.jar) to field java.util.TreeSet.m
WARNING: Please consider reporting this to the maintainers of com.rits.cloning.Cloner
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
06:31:58.454 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۨۖ(Ljava/lang/Object;)Ljava/lang/ClassLoader;, depth=0
06:31:58.471 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۦۙۢ()I, depth=1
06:31:58.550 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=2
06:31:58.847 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۗ()Ljava/lang/ClassLoader;, depth=1
06:31:58.859 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۙۢ(Ljava/lang/Object;)Ljava/lang/Class;, depth=2
06:31:58.865 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:31:58.869 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:31:58.991 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧۚ(Ljava/lang/Object;)Ljava/lang/String;, depth=2
06:31:59.003 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۢۚ;->ۦۥ۟()I, depth=3
06:31:59.011 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:31:59.109 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۡۦ;->ۥۚ([B)Ljava/lang/String;, depth=3
06:31:59.120 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۥ(Ljava/lang/Object;I)[B, depth=4
06:31:59.124 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:31:59.127 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.427 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۡۦ;->ۦ۬()I, depth=4
06:31:59.434 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:31:59.438 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.449 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:31:59.451 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.471 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۚ(Ljava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/String;, depth=2
06:31:59.473 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۢۚ;->ۦۥ۟()I, depth=3
06:31:59.475 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:31:59.513 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۚ([BLjava/lang/String;ZZ)Ljava/lang/String;, depth=3
06:31:59.520 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۥۘ(Ljava/lang/Object;)I, depth=4
06:31:59.528 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:31:59.533 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.569 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:31:59.572 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:31:59.578 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.613 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:31:59.618 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.653 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:31:59.655 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:31:59.657 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.672 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:31:59.674 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.712 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:31:59.715 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:31:59.718 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.765 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:31:59.766 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:31:59.768 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.792 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:31:59.797 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.832 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:31:59.835 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:31:59.840 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.864 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:31:59.867 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.903 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:31:59.907 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:31:59.911 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.935 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:31:59.939 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:31:59.976 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:31:59.979 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:31:59.983 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.023 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:32:00.026 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.030 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.052 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.056 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.098 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:32:00.101 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:00.105 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.126 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:32:00.129 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.167 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:32:00.169 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:00.170 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.178 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:00.179 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.196 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:32:00.198 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:00.199 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.218 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:32:00.219 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.221 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.228 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.230 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.248 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:32:00.249 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:00.251 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.258 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:32:00.260 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.280 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:32:00.281 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:00.283 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.302 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:00.305 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.382 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:32:00.385 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:00.388 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.470 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:32:00.473 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.477 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.498 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.501 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.589 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:32:00.592 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:00.595 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.614 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:32:00.618 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.716 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:32:00.719 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:00.722 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.741 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:00.744 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.826 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:32:00.829 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:00.832 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.948 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:32:00.951 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.954 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:00.971 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:00.974 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.128 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:32:01.131 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:01.134 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.153 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:32:01.156 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.293 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:32:01.296 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:01.300 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.318 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:01.322 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.468 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:32:01.471 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:01.474 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.623 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:32:01.626 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:01.629 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.644 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:01.647 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.690 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۚ()I, depth=4
06:32:01.691 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:01.693 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.699 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=5
06:32:01.701 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.735 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۦۥ()I, depth=4
06:32:01.736 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:01.738 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.744 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=5
06:32:01.746 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.782 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۚ;->ۥۚ(Ljava/lang/Object;I)C, depth=4
06:32:01.784 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=5
06:32:01.785 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.823 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۚ;->ۥۡۦ()I, depth=4
06:32:01.824 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:01.825 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.831 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=5
06:32:01.832 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=6
06:32:01.854 WARN  InvokeOp     - org.cf.smalivm.exception.MaxMethodVisitsExceededException: Exceeded max method visits @0 ExecutionNode{signature=Lru/leymoy/ۥۚ;->ۥۚ([BLjava/lang/String;ZZ)Ljava/lang/String;, op=array-length r3, r6, @=0} in Lru/leymoy/ۥۚ;->ۥۚ([BLjava/lang/String;ZZ)Ljava/lang/String;
06:32:01.854 INFO  InvokeOp     - Problem executing Lru/leymoy/ۥۚ;->ۥۚ([BLjava/lang/String;ZZ)Ljava/lang/String;, propagating ambiguity.
06:32:01.902 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۥۚ(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/reflect/Field;, depth=2
06:32:01.903 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:32:01.912 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:01.975 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۥۚ(Ljava/lang/Object;Z)V, depth=2
06:32:01.977 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=3
06:32:01.980 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.002 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۦۙ(Ljava/lang/Object;)Ljava/lang/ref/WeakReference;, depth=2
06:32:02.006 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=3
06:32:02.009 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.049 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦۥ(Ljava/lang/Object;)Ljava/lang/Object;, depth=2
06:32:02.051 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:32:02.055 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.079 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۘۦ(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;, depth=2
06:32:02.081 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۦۙۢ()I, depth=3
06:32:02.084 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.118 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦ۠()I, depth=2
06:32:02.121 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:32:02.124 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.138 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۦۙۢ()I, depth=3
06:32:02.141 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.172 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۥ۠ۦۚ(Ljava/lang/Object;)V, depth=2
06:32:02.174 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=3
06:32:02.177 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.199 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۦ()I, depth=2
06:32:02.202 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۢۚ;->ۦۥ۟()I, depth=3
06:32:02.205 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.219 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=3
06:32:02.222 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.241 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦ۠()I, depth=2
06:32:02.244 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:32:02.247 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.263 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۦۙۢ()I, depth=3
06:32:02.265 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.288 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦ۠()I, depth=2
06:32:02.291 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:32:02.293 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.309 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۦۙۢ()I, depth=3
06:32:02.312 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.333 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۦ()I, depth=2
06:32:02.335 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۢۚ;->ۦۥ۟()I, depth=3
06:32:02.338 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.353 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۧ()I, depth=3
06:32:02.355 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
Simplifying: Lru/leymoy/ۦ;->ۦۨۖ(Ljava/lang/Object;)Ljava/lang/ClassLoader;
Optimizations:
        constantized ifs = 1
        constantized ops = 1
        dead assignments removed = 1
        dead ops removed = 106
        dead results removed = 1
        nops removed = 1
        peephole optmizations = 0
        unreflected fields = 0
        unreflected methods = 0
        useless gotos removed = 0
(2 / 29) Executing top level method: Lru/leymoy/ۦ;->ۦۥ۟(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/reflect/Field;
06:32:02.814 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۥ۟(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/reflect/Field;, depth=0
06:32:02.816 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=1
06:32:02.819 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=2
06:32:02.935 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۚ(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/reflect/Field;, depth=1
06:32:02.939 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۬(Ljava/lang/Object;)Ljava/lang/Class;, depth=2
06:32:02.942 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=3
06:32:02.944 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:02.972 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۥۚ(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/reflect/Field;, depth=2
06:32:02.974 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=3
06:32:02.977 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:03.003 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۦۦ(Ljava/lang/Object;)Z, depth=2
06:32:03.005 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۦ۠()I, depth=3
06:32:03.008 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
06:32:03.033 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۥ;->ۥۚ(Ljava/lang/Object;Z)V, depth=2
06:32:03.036 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=3
06:32:03.039 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=4
Simplifying: Lru/leymoy/ۦ;->ۦۥ۟(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/reflect/Field;
Optimizations:
        constantized ifs = 1
        constantized ops = 1
        dead assignments removed = 1
        dead ops removed = 106
        dead results removed = 1
        nops removed = 1
        peephole optmizations = 0
        unreflected fields = 0
        unreflected methods = 0
        useless gotos removed = 0
(3 / 29) Executing top level method: Lru/leymoy/ۦ;->ۦۙ()I
06:32:03.277 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙ()I, depth=0
06:32:03.278 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=1
Simplifying: Lru/leymoy/ۦ;->ۦۙ()I
Exception optimizing Lru/leymoy/ۦ;->ۦۙ()I, skipping
java.lang.IllegalStateException: Multiple switch instructions refer to the same payload. This is not currently supported. Please file a bug :)
        at org.jf.dexlib2.builder.MutableMethodImplementation.fixInstructions(MutableMethodImplementation.java:392)
        at org.jf.dexlib2.builder.MutableMethodImplementation.getTryBlocks(MutableMethodImplementation.java:167)
        at org.cf.simplify.ExecutionGraphManipulator.removeEmptyTryCatchBlocks(ExecutionGraphManipulator.java:364)
        at org.cf.simplify.ExecutionGraphManipulator.removeInstruction(ExecutionGraphManipulator.java:167)
        at org.cf.simplify.ExecutionGraphManipulator.removeInstruction(ExecutionGraphManipulator.java:172)
        at java.base/java.lang.Iterable.forEach(Unknown Source)
        at org.cf.simplify.ExecutionGraphManipulator.removeInstructions(ExecutionGraphManipulator.java:180)
        at org.cf.simplify.strategy.DeadRemovalStrategy.perform(DeadRemovalStrategy.java:205)
        at org.cf.simplify.Optimizer.simplify(Optimizer.java:109)
        at org.cf.simplify.Launcher.executeMethods(Launcher.java:221)
        at org.cf.simplify.Launcher.run(Launcher.java:141)
        at org.cf.simplify.Main.main(Main.java:14)
(4 / 29) Executing top level method: Lru/leymoy/ۦ;->ۦۙۢ(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/String;
06:32:03.307 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۙۢ(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/String;, depth=0
06:32:03.309 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦۢۚ;->ۦۥ۟()I, depth=1
06:32:03.311 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, depth=2
Simplifying: Lru/leymoy/ۦ;->ۦۙۢ(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/String;
Optimizations:
        constantized ifs = 1
        constantized ops = 1
        dead assignments removed = 1
        dead ops removed = 105
        dead results removed = 1
        nops removed = 1
        peephole optmizations = 0
        unreflected fields = 0
        unreflected methods = 0
        useless gotos removed = 0
(5 / 29) Executing top level method: Lru/leymoy/ۦ;->ۦۗ()Ljava/lang/ClassLoader;
06:32:03.527 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ;->ۦۗ()Ljava/lang/ClassLoader;, depth=0
06:32:03.530 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۙۢ(Ljava/lang/Object;)Ljava/lang/Class;, depth=1
06:32:03.546 WARN  NodeExecutor - ExecutionNode{signature=Lru/leymoy/ۦ;->ۦۗ()Ljava/lang/ClassLoader;, op=invoke-static {r5}, Lru/leymoy/ۦ۬;->ۦۙۢ(Ljava/lang/Object;)Ljava/lang/Class;, @=0} 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.RuntimeException: Real exception was thrown executing ExecutionNode{signature=Lru/leymoy/ۦ۬;->ۦۙۢ(Ljava/lang/Object;)Ljava/lang/Class;, op=invoke-static {}, Lru/leymoy/ۦ;->ۦۙ()I, @=0} and was not handled. This could be a bug in smalivm.
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:92)
        at org.cf.smalivm.MethodExecutor.step(MethodExecutor.java:50)
        at org.cf.smalivm.NonInteractiveMethodExecutor.execute(NonInteractiveMethodExecutor.java:54)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:76)
        at org.cf.smalivm.opcode.InvokeOp.executeLocalMethod(InvokeOp.java:434)
        at org.cf.smalivm.opcode.InvokeOp.execute(InvokeOp.java:136)
        at org.cf.smalivm.context.ExecutionNode.execute(ExecutionNode.java:53)
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:81)
        at org.cf.smalivm.MethodExecutor.step(MethodExecutor.java:50)
        at org.cf.smalivm.NonInteractiveMethodExecutor.execute(NonInteractiveMethodExecutor.java:54)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:76)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:63)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:59)
        at org.cf.simplify.Launcher.executeMethods(Launcher.java:195)
        at org.cf.simplify.Launcher.run(Launcher.java:141)
        at org.cf.simplify.Main.main(Main.java:14)
Caused by: java.lang.IllegalStateException: Multiple switch instructions refer to the same payload. This is not currently supported. Please file a bug :)
        at org.jf.dexlib2.builder.MutableMethodImplementation.fixInstructions(MutableMethodImplementation.java:392)
        at org.jf.dexlib2.builder.MutableMethodImplementation.getInstructions(MutableMethodImplementation.java:141)
        at org.cf.smalivm.context.ExecutionGraph.buildAddressToLocation(ExecutionGraph.java:69)
        at org.cf.smalivm.context.ExecutionGraph.<init>(ExecutionGraph.java:61)
        at org.cf.smalivm.VirtualMachine.updateInstructionGraph(VirtualMachine.java:180)
        at org.cf.smalivm.VirtualMachine.spawnInstructionGraph(VirtualMachine.java:131)
        at org.cf.smalivm.MethodExecutorFactory.build(MethodExecutorFactory.java:62)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:75)
        at org.cf.smalivm.opcode.InvokeOp.executeLocalMethod(InvokeOp.java:434)
        at org.cf.smalivm.opcode.InvokeOp.execute(InvokeOp.java:136)
        at org.cf.smalivm.context.ExecutionNode.execute(ExecutionNode.java:53)
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:81)
        ... 15 common frames omitted

... snip ...

(17 / 17) Executing top level method: Lru/leymoy/ۦ۬;->ۦۥ(Ljava/lang/Object;I)[B
06:32:09.267 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۦ۬;->ۦۥ(Ljava/lang/Object;I)[B, depth=0
06:32:09.270 INFO  NonInteractiveMethodExecutor - Executing Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, depth=1
Unexpected, non-virtual exception executing Lru/leymoy/ۦ۬;->ۦۥ(Ljava/lang/Object;I)[B; skipping
java.lang.RuntimeException: Real exception was thrown executing ExecutionNode{signature=Lru/leymoy/ۦ۬;->ۦۥ(Ljava/lang/Object;I)[B, op=invoke-static {}, Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, @=0} and was not handled. This could be a bug in smalivm.
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:92)
        at org.cf.smalivm.MethodExecutor.step(MethodExecutor.java:50)
        at org.cf.smalivm.NonInteractiveMethodExecutor.execute(NonInteractiveMethodExecutor.java:54)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:76)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:63)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:59)
        at org.cf.simplify.Launcher.executeMethods(Launcher.java:195)
        at org.cf.simplify.Launcher.run(Launcher.java:141)
        at org.cf.simplify.Main.main(Main.java:14)
Caused by: java.lang.RuntimeException: Real exception was thrown executing ExecutionNode{signature=Lru/leymoy/ۥ۬;->ۦ۟ۙ()I, op=invoke-static {r0}, Lru/leymoy/ۥۙۚ;->ۥۥ۫ۚ(Ljava/lang/Object;)I, @=2} and was not handled. This could be a bug in smalivm.        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:92)
        at org.cf.smalivm.MethodExecutor.step(MethodExecutor.java:50)
        at org.cf.smalivm.NonInteractiveMethodExecutor.execute(NonInteractiveMethodExecutor.java:54)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:76)
        at org.cf.smalivm.opcode.InvokeOp.executeLocalMethod(InvokeOp.java:434)
        at org.cf.smalivm.opcode.InvokeOp.execute(InvokeOp.java:136)
        at org.cf.smalivm.context.ExecutionNode.execute(ExecutionNode.java:53)
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:81)
        ... 8 more
Caused by: java.lang.IllegalStateException: Multiple switch instructions refer to the same payload. This is not currently supported. Please file a bug :)
        at org.jf.dexlib2.builder.MutableMethodImplementation.fixInstructions(MutableMethodImplementation.java:392)
        at org.jf.dexlib2.builder.MutableMethodImplementation.getInstructions(MutableMethodImplementation.java:141)
        at org.cf.smalivm.context.ExecutionGraph.buildAddressToLocation(ExecutionGraph.java:69)
        at org.cf.smalivm.context.ExecutionGraph.<init>(ExecutionGraph.java:61)
        at org.cf.smalivm.VirtualMachine.updateInstructionGraph(VirtualMachine.java:180)
        at org.cf.smalivm.VirtualMachine.spawnInstructionGraph(VirtualMachine.java:131)
        at org.cf.smalivm.MethodExecutorFactory.build(MethodExecutorFactory.java:62)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:75)
        at org.cf.smalivm.opcode.InvokeOp.executeLocalMethod(InvokeOp.java:434)
        at org.cf.smalivm.opcode.InvokeOp.execute(InvokeOp.java:136)
        at org.cf.smalivm.context.ExecutionNode.execute(ExecutionNode.java:53)
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:81)
        ... 15 more
Simplification complete:
        total classes = 10
        total methods = 17
        optimized methods = 137
        failed methods = 112
        run time = 43944 ms
Total optimizations:
        constantized ifs = 25
        constantized ops = 27
        dead assignments removed = 25
        dead ops removed = 2345
        dead results removed = 27
        nops removed = 25
        peephole optmizations = 0
        unreflected fields = 0
        unreflected methods = 0
        useless gotos removed = 0
Writing output to classes_simple.dex
Exception in thread "main" java.lang.IllegalStateException: Switch instruction at address/index 0x1c/12 refers to the wrong type of payload instruction.
        at org.jf.dexlib2.builder.MutableMethodImplementation.fixInstructions(MutableMethodImplementation.java:386)
        at org.jf.dexlib2.builder.MutableMethodImplementation.getTryBlocks(MutableMethodImplementation.java:167)
        at org.jf.dexlib2.writer.builder.BuilderClassPool.getTryBlocks(BuilderClassPool.java:307)
        at org.jf.dexlib2.writer.builder.BuilderClassPool.getTryBlocks(BuilderClassPool.java:64)
        at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1011)
        at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:345)
        at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:300)
        at org.cf.simplify.Launcher.run(Launcher.java:149)
        at org.cf.simplify.Main.main(Main.java:14)```
CalebFenton commented 4 years ago

One workaround, though not good, is to only optimize classes / methods you care about. Some methods optimize without upsetting dexlib.

apkunpacker commented 4 years ago

its possible to found exact location of error so i can patch with nop as you suggested ? skipping other classes is not best idea though as if someone need to simplify those similer errorpron classes they will face writing issue. something in simplify or dexlib should be tweaked to handle control flow properly . right sir ?

CalebFenton commented 4 years ago

What I said was for "future me" to understand better what to do. By "adding nops" I meant "simplify should add nops when multiple switch branches point to the same address and then modify the jump addresses to those nops so that there's no overlap". It's not something you could do manually, unless you were debugging simplify.

As for the work-around, I qualified the work around as "not good" and you're correctly pointing out explicitly why it's not good.

On Mon, Oct 26, 2020 at 10:42 AM Apkunpacker notifications@github.com wrote:

its possible to found exact location of error so i can patch with nop as you suggested ? skipping other classes is not best idea though as if someone need to simplify those similer errorpron classes they will face writing issue. something in simplify or dexlib should be tweaked to handle control flow properly . right sir ?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/CalebFenton/simplify/issues/150#issuecomment-716713814, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKLG4WD5GNDBRWIAGLZMFTSMWYGTANCNFSM4S67CEVA .

apkunpacker commented 4 years ago

okay sir as you are creater you know it perfectly that how it work and how to fix it , i am only end user . hope to see some fixes from you . good luck 👍