diff --git a/build.gradle b/build.gradle index ada3518..e20dc09 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,9 @@ allprojects { maven { url 'https://repo.cleanroommc.com/releases/' } + maven { + url 'https://jitpack.io' + } } apply plugin: 'java' @@ -20,8 +23,8 @@ allprojects { targetCompatibility = 1.8 dependencies { - compileOnly 'org.projectlombok:lombok:1.18.24' - annotationProcessor 'org.projectlombok:lombok:1.18.24' + compileOnly 'org.projectlombok:lombok:1.18.36' + annotationProcessor 'org.projectlombok:lombok:1.18.36' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' @@ -30,6 +33,15 @@ allprojects { compileJava { options.encoding = "UTF-8" // Will fail on the non-ascii comments if not set } + + ext { + asm = 'org.ow2.asm:asm:9.7.1' + asm_commons = 'org.ow2.asm:asm-commons:9.7.1' + asm_tree = 'org.ow2.asm:asm-tree:9.7.1' + cafedude = 'com.github.Col-E:CAFED00D:2.1.1' + slf4j_api = 'org.slf4j:slf4j-api:1.7.36' + jlinker = 'com.github.xxDark:jlinker:1.0.7' + } } group 'dev.skidfuscator.community' diff --git a/dev.skidfuscator.commons/build.gradle b/dev.skidfuscator.commons/build.gradle index e8fcf76..5da55d5 100644 --- a/dev.skidfuscator.commons/build.gradle +++ b/dev.skidfuscator.commons/build.gradle @@ -8,7 +8,7 @@ repositories { dependencies { api 'com.typesafe:config:1.4.2' - compileOnly 'org.projectlombok:lombok:1.18.24' + compileOnly 'org.projectlombok:lombok:1.18.36' api project(":annotations") api project(':main') diff --git a/dev.skidfuscator.obfuscator.pureanalysis/build.gradle b/dev.skidfuscator.obfuscator.pureanalysis/build.gradle index 40391bf..44296a9 100644 --- a/dev.skidfuscator.obfuscator.pureanalysis/build.gradle +++ b/dev.skidfuscator.obfuscator.pureanalysis/build.gradle @@ -8,11 +8,15 @@ version = '2.0.0-SNAPSHOT' repositories { mavenCentral() maven { url 'https://jitpack.io' } + mavenLocal() } dependencies { api project(':modasm') - api 'com.github.terminalsin:SSVM:dev-SNAPSHOT' + //api 'io.github.terminalsin:SSVM:dev-SNAPSHOT' + api 'dev.xdark:ssvm-core:2.0.2' + api 'dev.xdark:ssvm-invoke:2.0.2' + api 'dev.xdark:ssvm-io:2.0.2' testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' diff --git a/dev.skidfuscator.obfuscator/build.gradle b/dev.skidfuscator.obfuscator/build.gradle index 2192c66..7c7ff69 100644 --- a/dev.skidfuscator.obfuscator/build.gradle +++ b/dev.skidfuscator.obfuscator/build.gradle @@ -13,8 +13,8 @@ configurations { } dependencies { - testCompileOnly 'org.projectlombok:lombok:1.18.24' - compileOnly 'org.projectlombok:lombok:1.18.24' + testCompileOnly 'org.projectlombok:lombok:1.18.36' + compileOnly 'org.projectlombok:lombok:1.18.36' api project(':commons') api project(':pure-analysis') @@ -24,8 +24,9 @@ dependencies { api 'com.github.Col-E:jphantom:1.4.3' implementation 'dev.dirs:directories:26' implementation 'de.femtopedia.dex2jar:dex2jar:2.4.24' + implementation 'org.apache.commons:commons-compress:1.24.0' - testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.36' implementation 'org.fusesource.jansi:jansi:2.4.0' implementation 'org.yaml:snakeyaml:1.33' diff --git a/dev.skidfuscator.obfuscator/skidfuscator-error-ium.txt b/dev.skidfuscator.obfuscator/skidfuscator-error-ium.txt new file mode 100644 index 0000000..d2bbffe --- /dev/null +++ b/dev.skidfuscator.obfuscator/skidfuscator-error-ium.txt @@ -0,0 +1,1235 @@ +handler=Block #CE, types=[Ljava/lang/IllegalStateException;], range=[Block #C, Block #D, Block #G, Block #E, Block #F, Block #I, Block #H] +handler=Block #CU, types=[Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;], range=[Block #C, Block #D, Block #G, Block #E, Block #F, Block #I, Block #H] +handler=Block #DK, types=[Ljava/lang/IllegalAccessException;], range=[Block #P, Block #O] +handler=Block #DQ, types=[Ljava/lang/RuntimeException;], range=[Block #S, Block #R] +handler=Block #DW, types=[Ljava/io/IOException;], range=[Block #V, Block #U] +handler=Block #EC, types=[Ljava/lang/IllegalAccessException;], range=[Block #Y, Block #X] +===#Block A(size=8, flags=1)=== + 0. if ({1454303676 ^ 439034243} != 1283835967) + goto AP + 1. lvar56 = {224992149 ^ {1454303676 ^ 439034243}}; + 2. if (lvar56 != 1106039722) + goto AO + 3. synth(lvar0 = lvar0); + 4. lvar90 = "A : var expect: 258383186"; + 5. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 258383186) + goto AD + 6. lvar56 = {1728135292 ^ lvar56}; + 7. if (lvar56 != 653104086) + goto AU + -> ConditionalJump[IF_ICMPNE] #A -> #AU + -> Immediate #A -> #B + -> ConditionalJump[IF_ICMPNE] #A -> #AP + -> ConditionalJump[IF_ICMPNE] #A -> #AD + -> ConditionalJump[IF_ICMPNE] #A -> #AO +===#Block AO(size=1, flags=0)=== + 0. throw new java/io/IOException("Failed to match seed of value 1106039722"); + <- ConditionalJump[IF_ICMPNE] #A -> #AO +===#Block AP(size=1, flags=0)=== + 0. throw new java/io/IOException(new java/lang/StringBuilder("Failed to match entry seed of value 1283835967 of entry public: 1067300903 and private: 1283835967 and value: ").append({1454303676 ^ 439034243}).toString()); + <- ConditionalJump[IF_ICMPNE] #A -> #AP +===#Block B(size=7, flags=0)=== + 0. lvar1 = {653104086 ^ lvar56}; + 1. lvar170 = "[Constant] 0 -> 653104086 predicate=653104086"; + 2. lvar4 = lvar1; + 3. lvar84 = "B : var expect: 929865393"; + 4. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 929865393) + goto AE + 5. lvar56 = {1832829081 ^ lvar56}; + 6. if (lvar56 != 1272140623) + goto AT + -> ConditionalJump[IF_ICMPNE] #B -> #AT + -> Immediate #B -> #C + -> ConditionalJump[IF_ICMPNE] #B -> #AE + <- Immediate #A -> #B +===#Block AE(size=16, flags=0)=== + 0. throw new java/io/IOException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 141870657) + goto AE + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {678601203 ^ lvar56}) + goto AE + 3. lvar158 = "[Constant] 2045360848 -> 678601203 predicate=1369119523"; + 4. _consume({324553256 ^ lvar56}); + 5. throw new java/lang/RuntimeException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 929865393) + goto AE + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {354133477 ^ lvar56}) + goto AE + 8. lvar156 = "[Constant] 1149288134 -> 354133477 predicate=1369119523"; + 9. _consume({2067786231 ^ lvar56}); + 10. throw new java/lang/RuntimeException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -475011464) + goto AE + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1542592368 ^ lvar56}) + goto AE + 13. lvar154 = "[Constant] 174656595 -> 1542592368 predicate=1369119523"; + 14. _consume({221170507 ^ lvar56}); + 15. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AE -> #AE + <- ConditionalJump[IF_ICMPNE] #AE -> #AE + <- ConditionalJump[IF_ICMPNE] #S -> #AE + <- ConditionalJump[IF_ICMPNE] #B -> #AE + <- ConditionalJump[IF_ICMPNE] #G -> #AE +===#Block C(size=20, flags=0)=== + 0. lvar6 = {1272140622 ^ lvar56}; + 1. lvar160 = "[Constant] 1 -> 1272140622 predicate=1272140623"; + 2. lvar49 = lvar6; + 3. lvar7 = {1272140623 ^ lvar56}; + 4. lvar162 = "[Constant] 0 -> 1272140623 predicate=1272140623"; + 5. lvar8 = new java.lang.String[lvar7]; + 6. _consume(dev.skidfuscator.testclasses.evaluator.util.crypto.AES.main(lvar8, 2050942566)); + 7. lvar9 = {1272140621 ^ lvar56}; + 8. lvar166 = "[Constant] 2 -> 1272140621 predicate=1272140623"; + 9. lvar50 = lvar9; + 10. lvar10 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.data; + 11. lvar2 = {1272140623 ^ lvar56}; + 12. lvar168 = "[Constant] 0 -> 1272140623 predicate=1272140623"; + 13. lvar11 = lvar10[lvar2]; + 14. if (lvar11 != {1272140623 ^ lvar56}) + goto BX + 15. lvar164 = "[Constant] 0 -> 1272140623 predicate=1272140623"; + 16. lvar80 = "C : var expect: 1587190394"; + 17. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1587190394) + goto AD + 18. lvar56 = {1229722527 ^ lvar56}; + 19. if (lvar56 != 43991248) + goto AS + -> TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + -> ConditionalJump[IF_ICMPNE] #C -> #AD + -> ConditionalJump[IF_ICMPNE] #C -> #AS + -> Immediate #C -> #D + -> ConditionalJump[IF_ICMPNE] #C -> #BX + <- Immediate #B -> #C +===#Block BX(size=4, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 485992155); + 1. lvar226 = "C -> AC : c-loc - cond : 1462039956"; + 2. if (lvar56 != 1462039956) + goto BY + 3. goto AC + -> UnconditionalJump[GOTO] #BX -> #AC + -> ConditionalJump[IF_ICMPNE] #BX -> #BY + <- ConditionalJump[IF_ICMPNE] #C -> #BX +===#Block BY(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("BX --> AC # Failed to match seed of type Conditional and value 1462039956"); + <- ConditionalJump[IF_ICMPNE] #BX -> #BY +===#Block AC(size=5, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) == -1188582238) + goto BR + 1. lvar66 = "AC : var expect: -1188582238"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1188582238) + goto AD + 3. lvar206 = "AC -> AB : c-loc - uncond : 1574287175"; + 4. goto BB + -> ConditionalJump[IF_ICMPNE] #AC -> #AD + -> ConditionalJump[IF_ICMPEQ] #AC -> #BR + -> UnconditionalJump[GOTO] #AC -> #BB + <- UnconditionalJump[GOTO] #BX -> #AC +===#Block BB(size=2, flags=10100)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56)) { + case 82916327: + goto #BB + case 148360426: + goto #BC + case 1221623750: + goto #AB + case 1778286659: + goto #AK + default: + goto #AK + } + 1. if (lvar56 != 1574287175) + goto BD + -> DefaultSwitch #BB -> #AK + -> Switch[1778286659] #BB -> #AK + -> Switch[82916327] #BB -> #BB + -> Immediate #BB -> #BC + -> Switch[1221623750] #BB -> #AB + -> ConditionalJump[IF_ICMPNE] #BB -> #BD + -> Switch[148360426] #BB -> #BC + <- Switch[82916327] #BB -> #BB + <- UnconditionalJump[GOTO] #AC -> #BB +===#Block BD(size=1, flags=0)=== + 0. throw new java/io/IOException("BB --> AB # Failed to match seed of type Unconditional and value 1574287175"); + <- ConditionalJump[IF_ICMPNE] #BB -> #BD +===#Block BC(size=2, flags=100)=== + 0. lvar56 = {183583443 ^ lvar56}; + 1. goto AB + -> UnconditionalJump[GOTO] #BC -> #AB + <- Immediate #BB -> #BC + <- Switch[148360426] #BB -> #BC +===#Block BR(size=4, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1660999038); + 1. lvar220 = "AC -> I : c-loc - cond : 874782954"; + 2. if (lvar56 != 874782954) + goto BS + 3. goto I + -> UnconditionalJump[GOTO] #BR -> #I + -> ConditionalJump[IF_ICMPNE] #BR -> #BS + <- ConditionalJump[IF_ICMPEQ] #AC -> #BR +===#Block BS(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("BR --> I # Failed to match seed of type Conditional and value 874782954"); + <- ConditionalJump[IF_ICMPNE] #BR -> #BS +===#Block I(size=12, flags=0)=== + 0. lvar27 = new java.lang.IllegalArgumentException; + 1. lvar39 = new java.lang.StringBuilder; + 2. _consume(lvar39.()); + 3. lvar47 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.xrmhzznmxl(dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.ityagplkacclgrd(), lvar56); + 4. lvar40 = lvar39.append(lvar47); + 5. lvar48 = lvar50; + 6. lvar41 = lvar40.append(lvar48); + 7. lvar42 = lvar41.toString(); + 8. _consume(lvar27.(lvar42)); + 9. throw lvar27; + 10. lvar100 = "I : var expect: -1591670959"; + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1591670959) + goto AF + -> TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + -> TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> ConditionalJump[IF_ICMPNE] #I -> #AF + <- UnconditionalJump[GOTO] #BR -> #I +===#Block D(size=8, flags=0)=== + 0. lvar12 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.data; + 1. lvar28 = {43991249 ^ lvar56}; + 2. lvar150 = "[Constant] 1 -> 43991249 predicate=43991248"; + 3. lvar13 = lvar12[lvar28]; + 4. svar116 = {lvar13 ^ lvar56}; + 5. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(svar116)) { + case 41242204: + goto #BZ + default: + goto #CC + } + 6. lvar76 = "D : var expect: 351929984"; + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 351929984) + goto AG + -> TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> Switch[41242204] #D -> #BZ + -> DefaultSwitch #D -> #CC + -> ConditionalJump[IF_ICMPNE] #D -> #AG + -> TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- Immediate #C -> #D +===#Block CC(size=4, flags=10100)=== + 0. lvar56 = {1268655333 ^ lvar56}; + 1. lvar230 = "D -> F : c-loc - switch : 1224827957"; + 2. if (lvar56 != 1224827957) + goto CD + 3. goto F + -> UnconditionalJump[GOTO] #CC -> #F + -> ConditionalJump[IF_ICMPNE] #CC -> #CD + <- DefaultSwitch #D -> #CC +===#Block CD(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("CC --> F # Failed to match seed of type Switch Default and value 1224827957"); + <- ConditionalJump[IF_ICMPNE] #CC -> #CD +===#Block F(size=7, flags=0)=== + 0. lvar25 = {-1224827954 ^ lvar56}; + 1. lvar186 = "[Constant] -5 -> -1224827954 predicate=1224827957"; + 2. lvar51 = lvar25; + 3. lvar108 = "F : var expect: 1208689066"; + 4. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1208689066) + goto AJ + 5. lvar218 = "F -> Y : c-loc - uncond : 543171221"; + 6. goto BP + -> ConditionalJump[IF_ICMPNE] #F -> #AJ + -> UnconditionalJump[GOTO] #F -> #BP + -> TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + -> TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- UnconditionalJump[GOTO] #CC -> #F +===#Block BP(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1767982752); + 1. if (lvar56 != 543171221) + goto BQ + 2. goto Y + -> UnconditionalJump[GOTO] #BP -> #Y + -> ConditionalJump[IF_ICMPNE] #BP -> #BQ + <- UnconditionalJump[GOTO] #F -> #BP +===#Block BQ(size=1, flags=0)=== + 0. throw new java/io/IOException("BP --> Y # Failed to match seed of type Unconditional and value 543171221"); + <- ConditionalJump[IF_ICMPNE] #BP -> #BQ +===#Block Y(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56) == 247096160) + goto X + 1. throw nullconst; + 2. lvar86 = "Y : var expect: 50402473"; + 3. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 50402473) + goto AH + -> ConditionalJump[IF_ICMPEQ] #Y -> #X + -> TryCatch range: [Y...X] -> EC ([Ljava/lang/IllegalAccessException;]) + -> ConditionalJump[IF_ICMPNE] #Y -> #AH + <- UnconditionalJump[GOTO] #BP -> #Y +===#Block AH(size=6, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 50402473) + goto AH + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1769781932 ^ lvar56}) + goto AH + 3. lvar118 = "[Constant] 1000214968 -> 1769781932 predicate=1390586644"; + 4. _consume({1320157410 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AH -> #AH + <- ConditionalJump[IF_ICMPNE] #AH -> #AH + <- ConditionalJump[IF_ICMPNE] #Y -> #AH +===#Block X(size=3, flags=0)=== + 0. throw new java/lang/IllegalAccessException(); + 1. lvar82 = "X : var expect: 1037731394"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1037731394) + goto AB + -> ConditionalJump[IF_ICMPNE] #X -> #AB + -> TryCatch range: [Y...X] -> EC ([Ljava/lang/IllegalAccessException;]) + <- ConditionalJump[IF_ICMPEQ] #Y -> #X +===#Block EC(size=1, flags=0)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.kulmpcuobvixubyj(lvar56)) { + case 50402473: + goto #ED + case 1037731394: + goto #EF + default: + goto #EH + } + -> DefaultSwitch #EC -> #EH + -> Switch[50402473] #EC -> #ED + -> Switch[1037731394] #EC -> #EF + <- TryCatch range: [Y...X] -> EC ([Ljava/lang/IllegalAccessException;]) + <- TryCatch range: [Y...X] -> EC ([Ljava/lang/IllegalAccessException;]) +===#Block EF(size=3, flags=10100)=== + 0. lvar56 = {67830485 ^ lvar56}; + 1. if (lvar56 != 1135628829) + goto EG + 2. goto Z + -> ConditionalJump[IF_ICMPNE] #EF -> #EG + -> UnconditionalJump[GOTO] #EF -> #Z + <- Switch[1037731394] #EC -> #EF +===#Block EG(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("EF --> Z # Failed to match seed of type Exception Range [Ljava/lang/IllegalAccessException;] and value 1135628829"); + <- ConditionalJump[IF_ICMPNE] #EF -> #EG +===#Block ED(size=3, flags=10100)=== + 0. lvar56 = {1674604680 ^ lvar56}; + 1. if (lvar56 != 1135628829) + goto EE + 2. goto Z + -> UnconditionalJump[GOTO] #ED -> #Z + -> ConditionalJump[IF_ICMPNE] #ED -> #EE + <- Switch[50402473] #EC -> #ED +===#Block EE(size=1, flags=0)=== + 0. throw new java/io/IOException("ED --> Z # Failed to match seed of type Exception Range [Ljava/lang/IllegalAccessException;] and value 1135628829"); + <- ConditionalJump[IF_ICMPNE] #ED -> #EE +===#Block Z(size=5, flags=0)=== + 0. _consume(catch()); + 1. lvar72 = "Z : var expect: 495096042"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 495096042) + goto AD + 3. lvar208 = "Z -> H : c-loc - uncond : 714299572"; + 4. goto BE + -> ConditionalJump[IF_ICMPNE] #Z -> #AD + -> UnconditionalJump[GOTO] #Z -> #BE + <- UnconditionalJump[GOTO] #ED -> #Z + <- UnconditionalJump[GOTO] #EF -> #Z +===#Block BE(size=3, flags=10100)=== + 0. lvar56 = {1763904169 ^ lvar56}; + 1. if (lvar56 != 714299572) + goto BF + 2. goto H + -> ConditionalJump[IF_ICMPNE] #BE -> #BF + -> UnconditionalJump[GOTO] #BE -> #H + <- UnconditionalJump[GOTO] #Z -> #BE +===#Block BF(size=1, flags=0)=== + 0. throw new java/io/IOException("BE --> H # Failed to match seed of type Unconditional and value 714299572"); + <- ConditionalJump[IF_ICMPNE] #BE -> #BF +===#Block EH(size=1, flags=0)=== + 0. throw new java/io/IOException("Error in hash"); + <- DefaultSwitch #EC -> #EH +===#Block BZ(size=3, flags=10100)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56)) { + case 41242204: + goto #CA + case 613988668: + goto #E + case 1864816902: + goto #AI + case 1910729165: + goto #BZ + default: + goto #AI + } + 1. lvar228 = "D -> E : c-loc - switch : 1294796711"; + 2. if (lvar56 != 1294796711) + goto CB + -> Switch[1864816902] #BZ -> #AI + -> DefaultSwitch #BZ -> #AI + -> Switch[613988668] #BZ -> #E + -> Immediate #BZ -> #CA + -> ConditionalJump[IF_ICMPNE] #BZ -> #CB + -> Switch[41242204] #BZ -> #CA + -> Switch[1910729165] #BZ -> #BZ + <- Switch[41242204] #D -> #BZ + <- Switch[1910729165] #BZ -> #BZ +===#Block CB(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("BZ --> E # Failed to match seed of type Switch Entry [41242204, og:E, redirected: BZ) and value 1294796711"); + <- ConditionalJump[IF_ICMPNE] #BZ -> #CB +===#Block CA(size=2, flags=100)=== + 0. lvar56 = {1337083767 ^ lvar56}; + 1. goto E + -> UnconditionalJump[GOTO] #CA -> #E + <- Immediate #BZ -> #CA + <- Switch[41242204] #BZ -> #CA +===#Block E(size=7, flags=0)=== + 0. lvar14 = {1294796708 ^ lvar56}; + 1. lvar182 = "[Constant] 3 -> 1294796708 predicate=1294796711"; + 2. lvar51 = lvar14; + 3. lvar98 = "E : var expect: 1768439098"; + 4. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1768439098) + goto AK + 5. lvar212 = "E -> V : c-loc - uncond : 1459860970"; + 6. goto BI + -> TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + -> ConditionalJump[IF_ICMPNE] #E -> #AK + -> TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> UnconditionalJump[GOTO] #E -> #BI + <- UnconditionalJump[GOTO] #CA -> #E + <- Switch[613988668] #BZ -> #E +===#Block BI(size=2, flags=10100)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56)) { + case 41577974: + goto #BI + case 92763134: + goto #BJ + case 211499072: + goto #V + case 2121522158: + goto #AF + default: + goto #AF + } + 1. if (lvar56 != 1459860970) + goto BK + -> Immediate #BI -> #BJ + -> ConditionalJump[IF_ICMPNE] #BI -> #BK + -> Switch[2121522158] #BI -> #AF + -> DefaultSwitch #BI -> #AF + -> Switch[211499072] #BI -> #V + -> Switch[92763134] #BI -> #BJ + -> Switch[41577974] #BI -> #BI + <- UnconditionalJump[GOTO] #E -> #BI + <- Switch[41577974] #BI -> #BI +===#Block BK(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("BI --> V # Failed to match seed of type Unconditional and value 1459860970"); + <- ConditionalJump[IF_ICMPNE] #BI -> #BK +===#Block BJ(size=2, flags=100)=== + 0. lvar56 = {439267917 ^ lvar56}; + 1. goto V + -> UnconditionalJump[GOTO] #BJ -> #V + <- Immediate #BI -> #BJ + <- Switch[92763134] #BI -> #BJ +===#Block V(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56) == 144140150) + goto U + 1. throw nullconst; + 2. lvar70 = "V : var expect: -1206014126"; + 3. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1206014126) + goto AF + -> TryCatch range: [V...U] -> DW ([Ljava/io/IOException;]) + -> ConditionalJump[IF_ICMPEQ] #V -> #U + -> ConditionalJump[IF_ICMPNE] #V -> #AF + <- UnconditionalJump[GOTO] #BJ -> #V + <- Switch[211499072] #BI -> #V +===#Block U(size=3, flags=0)=== + 0. throw new java/io/IOException(); + 1. lvar112 = "U : var expect: -2111001710"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -2111001710) + goto AG + -> ConditionalJump[IF_ICMPNE] #U -> #AG + -> TryCatch range: [V...U] -> DW ([Ljava/io/IOException;]) + <- ConditionalJump[IF_ICMPEQ] #V -> #U +===#Block DW(size=1, flags=0)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.kulmpcuobvixubyj(lvar56)) { + case -2111001710: + goto #DZ + case -1206014126: + goto #DX + default: + goto #EB + } + -> DefaultSwitch #DW -> #EB + -> Switch[-1206014126] #DW -> #DX + -> Switch[-2111001710] #DW -> #DZ + <- TryCatch range: [V...U] -> DW ([Ljava/io/IOException;]) + <- TryCatch range: [V...U] -> DW ([Ljava/io/IOException;]) +===#Block DZ(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1305119366); + 1. if (lvar56 != 495919092) + goto EA + 2. goto W + -> ConditionalJump[IF_ICMPNE] #DZ -> #EA + -> UnconditionalJump[GOTO] #DZ -> #W + <- Switch[-2111001710] #DW -> #DZ +===#Block EA(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("DZ --> W # Failed to match seed of type Exception Range [Ljava/io/IOException;] and value 495919092"); + <- ConditionalJump[IF_ICMPNE] #DZ -> #EA +===#Block DX(size=3, flags=10100)=== + 0. lvar56 = {1250732574 ^ lvar56}; + 1. if (lvar56 != 495919092) + goto DY + 2. goto W + -> ConditionalJump[IF_ICMPNE] #DX -> #DY + -> UnconditionalJump[GOTO] #DX -> #W + <- Switch[-1206014126] #DW -> #DX +===#Block W(size=5, flags=0)=== + 0. _consume(catch()); + 1. lvar102 = "W : var expect: -327614560"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -327614560) + goto AL + 3. lvar214 = "W -> H : c-loc - uncond : 714299572"; + 4. goto BL + -> ConditionalJump[IF_ICMPNE] #W -> #AL + -> UnconditionalJump[GOTO] #W -> #BL + <- UnconditionalJump[GOTO] #DX -> #W + <- UnconditionalJump[GOTO] #DZ -> #W +===#Block BL(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 924600128); + 1. if (lvar56 != 714299572) + goto BM + 2. goto H + -> ConditionalJump[IF_ICMPNE] #BL -> #BM + -> UnconditionalJump[GOTO] #BL -> #H + <- UnconditionalJump[GOTO] #W -> #BL +===#Block H(size=15, flags=0)=== + 0. lvar15 = lvar0; + 1. lvar29 = lvar51; + 2. _consume(lvar15.self(lvar29, 1480640691)); + 3. lvar16 = new java.lang.IllegalArgumentException; + 4. lvar3 = new java.lang.StringBuilder; + 5. _consume(lvar3.()); + 6. lvar43 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.xrmhzznmxl(dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.omwbqokgbtcfrul(), lvar56); + 7. lvar32 = lvar3.append(lvar43); + 8. lvar44 = lvar51; + 9. lvar33 = lvar32.append(lvar44); + 10. lvar34 = lvar33.toString(); + 11. _consume(lvar16.(lvar34)); + 12. throw lvar16; + 13. lvar106 = "H : var expect: 1419429281"; + 14. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1419429281) + goto AB + -> ConditionalJump[IF_ICMPNE] #H -> #AB + -> TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- UnconditionalJump[GOTO] #BE -> #H + <- UnconditionalJump[GOTO] #BN -> #H + <- UnconditionalJump[GOTO] #BL -> #H +===#Block BM(size=1, flags=0)=== + 0. throw new java/io/IOException("BL --> H # Failed to match seed of type Unconditional and value 714299572"); + <- ConditionalJump[IF_ICMPNE] #BL -> #BM +===#Block AL(size=6, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -327614560) + goto AL + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {97247105 ^ lvar56}) + goto AL + 3. lvar124 = "[Constant] 94890884 -> 97247105 predicate=7091205"; + 4. _consume({2000967383 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AL -> #AL + <- ConditionalJump[IF_ICMPNE] #W -> #AL + <- ConditionalJump[IF_ICMPNE] #AL -> #AL +===#Block DY(size=1, flags=0)=== + 0. throw new java/io/IOException("DX --> W # Failed to match seed of type Exception Range [Ljava/io/IOException;] and value 495919092"); + <- ConditionalJump[IF_ICMPNE] #DX -> #DY +===#Block EB(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Error in hash"); + <- DefaultSwitch #DW -> #EB +===#Block AK(size=6, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1768439098) + goto AK + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {513532846 ^ lvar56}) + goto AK + 3. lvar148 = "[Constant] 225905182 -> 513532846 predicate=334293424"; + 4. _consume({213075862 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AK -> #AK + <- ConditionalJump[IF_ICMPNE] #E -> #AK + <- DefaultSwitch #BB -> #AK + <- Switch[1778286659] #BB -> #AK + <- ConditionalJump[IF_ICMPNE] #AK -> #AK +===#Block AS(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException(new java/lang/StringBuilder("C --> D # Failed to match seed of type Immediate and value 43991248 and got ").append(lvar56).toString()); + <- ConditionalJump[IF_ICMPNE] #C -> #AS +===#Block CE(size=1, flags=0)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.kulmpcuobvixubyj(lvar56)) { + case -1591670959: + goto #CP + case -475011464: + goto #CJ + case 351929984: + goto #CH + case 1208689066: + goto #CN + case 1419429281: + goto #CR + case 1587190394: + goto #CF + case 1768439098: + goto #CL + default: + goto #CT + } + -> Switch[1587190394] #CE -> #CF + -> Switch[1419429281] #CE -> #CR + -> Switch[1208689066] #CE -> #CN + -> Switch[351929984] #CE -> #CH + -> Switch[-475011464] #CE -> #CJ + -> Switch[-1591670959] #CE -> #CP + -> Switch[1768439098] #CE -> #CL + -> DefaultSwitch #CE -> #CT + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> CE ([Ljava/lang/IllegalStateException;]) +===#Block CT(size=1, flags=0)=== + 0. throw new java/io/IOException("Error in hash"); + <- DefaultSwitch #CE -> #CT +===#Block CL(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1604976096); + 1. if (lvar56 != 310704711) + goto CM + 2. goto J + -> ConditionalJump[IF_ICMPNE] #CL -> #CM + -> UnconditionalJump[GOTO] #CL -> #J + <- Switch[1768439098] #CE -> #CL +===#Block CM(size=1, flags=0)=== + 0. throw new java/io/IOException("CL --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CL -> #CM +===#Block CP(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 648075949); + 1. if (lvar56 != 310704711) + goto CQ + 2. goto J + -> ConditionalJump[IF_ICMPNE] #CP -> #CQ + -> UnconditionalJump[GOTO] #CP -> #J + <- Switch[-1591670959] #CE -> #CP +===#Block CQ(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("CP --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CP -> #CQ +===#Block CJ(size=3, flags=10100)=== + 0. lvar56 = {250676872 ^ lvar56}; + 1. if (lvar56 != 310704711) + goto CK + 2. goto J + -> ConditionalJump[IF_ICMPNE] #CJ -> #CK + -> UnconditionalJump[GOTO] #CJ -> #J + <- Switch[-475011464] #CE -> #CJ +===#Block CK(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("CJ --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CJ -> #CK +===#Block CH(size=3, flags=10100)=== + 0. lvar56 = {270252695 ^ lvar56}; + 1. if (lvar56 != 310704711) + goto CI + 2. goto J + -> UnconditionalJump[GOTO] #CH -> #J + -> ConditionalJump[IF_ICMPNE] #CH -> #CI + <- Switch[351929984] #CE -> #CH +===#Block CI(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("CH --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CH -> #CI +===#Block CN(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1535483506); + 1. if (lvar56 != 310704711) + goto CO + 2. goto J + -> ConditionalJump[IF_ICMPNE] #CN -> #CO + -> UnconditionalJump[GOTO] #CN -> #J + <- Switch[1208689066] #CE -> #CN +===#Block CO(size=1, flags=0)=== + 0. throw new java/io/IOException("CN --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CN -> #CO +===#Block CR(size=3, flags=10100)=== + 0. lvar56 = {941073139 ^ lvar56}; + 1. if (lvar56 != 310704711) + goto CS + 2. goto J + -> ConditionalJump[IF_ICMPNE] #CR -> #CS + -> UnconditionalJump[GOTO] #CR -> #J + <- Switch[1419429281] #CE -> #CR +===#Block CS(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("CR --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CR -> #CS +===#Block CF(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1498917128); + 1. if (lvar56 != 310704711) + goto CG + 2. goto J + -> ConditionalJump[IF_ICMPNE] #CF -> #CG + -> UnconditionalJump[GOTO] #CF -> #J + <- Switch[1587190394] #CE -> #CF +===#Block J(size=9, flags=0)=== + 0. lvar17 = catch(); + 1. lvar5 = lvar17; + 2. lvar18 = {310704707 ^ lvar56}; + 3. lvar116 = "[Constant] 4 -> 310704707 predicate=310704711"; + 4. lvar52 = lvar18; + 5. lvar58 = "J : var expect: -1809329608"; + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1809329608) + goto AB + 7. lvar200 = "J -> P : c-loc - uncond : 1511539599"; + 8. goto AV + -> ConditionalJump[IF_ICMPNE] #J -> #AB + -> UnconditionalJump[GOTO] #J -> #AV + <- UnconditionalJump[GOTO] #CH -> #J + <- UnconditionalJump[GOTO] #CP -> #J + <- UnconditionalJump[GOTO] #CF -> #J + <- UnconditionalJump[GOTO] #CJ -> #J + <- UnconditionalJump[GOTO] #CR -> #J + <- UnconditionalJump[GOTO] #CN -> #J + <- UnconditionalJump[GOTO] #CL -> #J +===#Block AV(size=3, flags=10100)=== + 0. lvar56 = {1218230728 ^ lvar56}; + 1. if (lvar56 != 1511539599) + goto AW + 2. goto P + -> UnconditionalJump[GOTO] #AV -> #P + -> ConditionalJump[IF_ICMPNE] #AV -> #AW + <- UnconditionalJump[GOTO] #J -> #AV +===#Block AW(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("AV --> P # Failed to match seed of type Unconditional and value 1511539599"); + <- ConditionalJump[IF_ICMPNE] #AV -> #AW +===#Block P(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56) == 244275453) + goto O + 1. throw nullconst; + 2. lvar68 = "P : var expect: -792585094"; + 3. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -792585094) + goto AB + -> ConditionalJump[IF_ICMPNE] #P -> #AB + -> ConditionalJump[IF_ICMPEQ] #P -> #O + -> TryCatch range: [P...O] -> DK ([Ljava/lang/IllegalAccessException;]) + <- UnconditionalJump[GOTO] #AV -> #P +===#Block O(size=3, flags=0)=== + 0. throw new java/lang/IllegalAccessException(); + 1. lvar88 = "O : var expect: 1692268378"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1692268378) + goto AI + -> ConditionalJump[IF_ICMPNE] #O -> #AI + -> TryCatch range: [P...O] -> DK ([Ljava/lang/IllegalAccessException;]) + <- ConditionalJump[IF_ICMPEQ] #P -> #O +===#Block DK(size=1, flags=0)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.kulmpcuobvixubyj(lvar56)) { + case -792585094: + goto #DL + case 1692268378: + goto #DN + default: + goto #DP + } + -> Switch[1692268378] #DK -> #DN + -> Switch[-792585094] #DK -> #DL + -> DefaultSwitch #DK -> #DP + <- TryCatch range: [P...O] -> DK ([Ljava/lang/IllegalAccessException;]) + <- TryCatch range: [P...O] -> DK ([Ljava/lang/IllegalAccessException;]) +===#Block DP(size=1, flags=0)=== + 0. throw new java/io/IOException("Error in hash"); + <- DefaultSwitch #DK -> #DP +===#Block DL(size=3, flags=10100)=== + 0. lvar56 = {1047585592 ^ lvar56}; + 1. if (lvar56 != 1684578487) + goto DM + 2. goto Q + -> ConditionalJump[IF_ICMPNE] #DL -> #DM + -> UnconditionalJump[GOTO] #DL -> #Q + <- Switch[-792585094] #DK -> #DL +===#Block DM(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("DL --> Q # Failed to match seed of type Exception Range [Ljava/lang/IllegalAccessException;] and value 1684578487"); + <- ConditionalJump[IF_ICMPNE] #DL -> #DM +===#Block DN(size=3, flags=10100)=== + 0. lvar56 = {687021660 ^ lvar56}; + 1. if (lvar56 != 1684578487) + goto DO + 2. goto Q + -> UnconditionalJump[GOTO] #DN -> #Q + -> ConditionalJump[IF_ICMPNE] #DN -> #DO + <- Switch[1692268378] #DK -> #DN +===#Block DO(size=1, flags=0)=== + 0. throw new java/io/IOException("DN --> Q # Failed to match seed of type Exception Range [Ljava/lang/IllegalAccessException;] and value 1684578487"); + <- ConditionalJump[IF_ICMPNE] #DN -> #DO +===#Block Q(size=5, flags=0)=== + 0. _consume(catch()); + 1. lvar92 = "Q : var expect: 591726011"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 591726011) + goto AJ + 3. lvar210 = "Q -> L : c-loc - uncond : 612227402"; + 4. goto BG + -> ConditionalJump[IF_ICMPNE] #Q -> #AJ + -> UnconditionalJump[GOTO] #Q -> #BG + <- UnconditionalJump[GOTO] #DN -> #Q + <- UnconditionalJump[GOTO] #DL -> #Q +===#Block BG(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1075149309); + 1. if (lvar56 != 612227402) + goto BH + 2. goto L + -> UnconditionalJump[GOTO] #BG -> #L + -> ConditionalJump[IF_ICMPNE] #BG -> #BH + <- UnconditionalJump[GOTO] #Q -> #BG +===#Block BH(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("BG --> L # Failed to match seed of type Unconditional and value 612227402"); + <- ConditionalJump[IF_ICMPNE] #BG -> #BH +===#Block AJ(size=11, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1208689066) + goto AJ + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {137631800 ^ lvar56}) + goto AJ + 3. lvar174 = "[Constant] 1239585194 -> 137631800 predicate=1104578962"; + 4. _consume({1507141880 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 591726011) + goto AJ + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {976847025 ^ lvar56}) + goto AJ + 8. lvar172 = "[Constant] 2079263011 -> 976847025 predicate=1104578962"; + 9. _consume({1660209801 ^ lvar56}); + 10. throw new java/io/IOException("double"); + -> ConditionalJump[IF_ICMPNE] #AJ -> #AJ + <- ConditionalJump[IF_ICMPNE] #AJ -> #AJ + <- ConditionalJump[IF_ICMPNE] #Q -> #AJ + <- ConditionalJump[IF_ICMPNE] #F -> #AJ +===#Block AI(size=6, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1692268378) + goto AI + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {373582960 ^ lvar56}) + goto AI + 3. lvar120 = "[Constant] 159036106 -> 373582960 predicate=524213946"; + 4. _consume({489526235 ^ lvar56}); + 5. throw new java/io/IOException("double"); + -> ConditionalJump[IF_ICMPNE] #AI -> #AI + <- Switch[1864816902] #BZ -> #AI + <- ConditionalJump[IF_ICMPNE] #AI -> #AI + <- DefaultSwitch #BZ -> #AI + <- ConditionalJump[IF_ICMPNE] #O -> #AI +===#Block CG(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("CF --> J # Failed to match seed of type Exception Range [Ljava/lang/IllegalStateException;] and value 310704711"); + <- ConditionalJump[IF_ICMPNE] #CF -> #CG +===#Block CU(size=1, flags=0)=== + 0. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.kulmpcuobvixubyj(lvar56)) { + case -1591670959: + goto #DF + case -475011464: + goto #CZ + case 351929984: + goto #CX + case 1208689066: + goto #DD + case 1419429281: + goto #DH + case 1587190394: + goto #CV + case 1768439098: + goto #DB + default: + goto #DJ + } + -> Switch[1419429281] #CU -> #DH + -> Switch[1208689066] #CU -> #DD + -> Switch[-1591670959] #CU -> #DF + -> Switch[1768439098] #CU -> #DB + -> DefaultSwitch #CU -> #DJ + -> Switch[1587190394] #CU -> #CV + -> Switch[351929984] #CU -> #CX + -> Switch[-475011464] #CU -> #CZ + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> CU ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) +===#Block CZ(size=3, flags=10100)=== + 0. lvar56 = {1245697182 ^ lvar56}; + 1. if (lvar56 != 1447700561) + goto DA + 2. goto K + -> UnconditionalJump[GOTO] #CZ -> #K + -> ConditionalJump[IF_ICMPNE] #CZ -> #DA + <- Switch[-475011464] #CU -> #CZ +===#Block DA(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("CZ --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #CZ -> #DA +===#Block CX(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1423272065); + 1. if (lvar56 != 1447700561) + goto CY + 2. goto K + -> ConditionalJump[IF_ICMPNE] #CX -> #CY + -> UnconditionalJump[GOTO] #CX -> #K + <- Switch[351929984] #CU -> #CX +===#Block CY(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("CX --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #CX -> #CY +===#Block CV(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 496597790); + 1. if (lvar56 != 1447700561) + goto CW + 2. goto K + -> ConditionalJump[IF_ICMPNE] #CV -> #CW + -> UnconditionalJump[GOTO] #CV -> #K + <- Switch[1587190394] #CU -> #CV +===#Block CW(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("CV --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #CV -> #CW +===#Block DJ(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Error in hash"); + <- DefaultSwitch #CU -> #DJ +===#Block DB(size=3, flags=10100)=== + 0. lvar56 = {459747318 ^ lvar56}; + 1. if (lvar56 != 1447700561) + goto DC + 2. goto K + -> UnconditionalJump[GOTO] #DB -> #K + -> ConditionalJump[IF_ICMPNE] #DB -> #DC + <- Switch[1768439098] #CU -> #DB +===#Block DC(size=1, flags=0)=== + 0. throw new java/io/IOException("DB --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #DB -> #DC +===#Block DF(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 1651378363); + 1. if (lvar56 != 1447700561) + goto DG + 2. goto K + -> ConditionalJump[IF_ICMPNE] #DF -> #DG + -> UnconditionalJump[GOTO] #DF -> #K + <- Switch[-1591670959] #CU -> #DF +===#Block DG(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("DF --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #DF -> #DG +===#Block DD(size=3, flags=10100)=== + 0. lvar56 = {525028452 ^ lvar56}; + 1. if (lvar56 != 1447700561) + goto DE + 2. goto K + -> UnconditionalJump[GOTO] #DD -> #K + -> ConditionalJump[IF_ICMPNE] #DD -> #DE + <- Switch[1208689066] #CU -> #DD +===#Block DE(size=1, flags=0)=== + 0. throw new java/io/IOException("DD --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #DD -> #DE +===#Block DH(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 2094624997); + 1. if (lvar56 != 1447700561) + goto DI + 2. goto K + -> ConditionalJump[IF_ICMPNE] #DH -> #DI + -> UnconditionalJump[GOTO] #DH -> #K + <- Switch[1419429281] #CU -> #DH +===#Block K(size=11, flags=0)=== + 0. lvar22 = catch(); + 1. lvar53 = lvar22; + 2. lvar23 = lvar53; + 3. _consume(lvar23.printStackTrace()); + 4. lvar24 = {-1447700562 ^ lvar56}; + 5. lvar122 = "[Constant] -1 -> -1447700562 predicate=1447700561"; + 6. lvar52 = lvar24; + 7. lvar60 = "K : var expect: -1303297398"; + 8. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1303297398) + goto AB + 9. lvar56 = {1916268827 ^ lvar56}; + 10. if (lvar56 != 612227402) + goto AQ + -> ConditionalJump[IF_ICMPNE] #K -> #AQ + -> Immediate #K -> #L + -> ConditionalJump[IF_ICMPNE] #K -> #AB + <- UnconditionalJump[GOTO] #DB -> #K + <- UnconditionalJump[GOTO] #DD -> #K + <- UnconditionalJump[GOTO] #DH -> #K + <- UnconditionalJump[GOTO] #CZ -> #K + <- UnconditionalJump[GOTO] #CX -> #K + <- UnconditionalJump[GOTO] #DF -> #K + <- UnconditionalJump[GOTO] #CV -> #K +===#Block L(size=10, flags=0)=== + 0. lvar19 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.data; + 1. lvar30 = {612227400 ^ lvar56}; + 2. lvar146 = "[Constant] 2 -> 612227400 predicate=612227402"; + 3. lvar20 = lvar19[lvar30]; + 4. lvar31 = lvar52; + 5. if (lvar20 == lvar31) + goto BV + 6. lvar74 = "L : var expect: 602851921"; + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 602851921) + goto AB + 8. lvar56 = {1856681785 ^ lvar56}; + 9. if (lvar56 != 1255632499) + goto AR + -> ConditionalJump[IF_ICMPNE] #L -> #AR + -> Immediate #L -> #M + -> ConditionalJump[IF_ICMPEQ] #L -> #BV + -> ConditionalJump[IF_ICMPNE] #L -> #AB + <- UnconditionalJump[GOTO] #BG -> #L + <- Immediate #K -> #L +===#Block BV(size=4, flags=10100)=== + 0. lvar56 = {2027284892 ^ lvar56}; + 1. lvar224 = "L -> AA : c-loc - cond : 1554526422"; + 2. if (lvar56 != 1554526422) + goto BW + 3. goto AA + -> UnconditionalJump[GOTO] #BV -> #AA + -> ConditionalJump[IF_ICMPNE] #BV -> #BW + <- ConditionalJump[IF_ICMPEQ] #L -> #BV +===#Block BW(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("BV --> AA # Failed to match seed of type Conditional and value 1554526422"); + <- ConditionalJump[IF_ICMPNE] #BV -> #BW +===#Block AA(size=5, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) == -448690510) + goto BT + 1. lvar62 = "AA : var expect: -448690510"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -448690510) + goto AD + 3. lvar202 = "AA -> AB : c-loc - uncond : 1574287175"; + 4. goto AX + -> ConditionalJump[IF_ICMPNE] #AA -> #AD + -> UnconditionalJump[GOTO] #AA -> #AX + -> ConditionalJump[IF_ICMPEQ] #AA -> #BT + <- UnconditionalJump[GOTO] #BV -> #AA +===#Block BT(size=4, flags=10100)=== + 0. lvar56 = {2095182444 ^ lvar56}; + 1. lvar222 = "AA -> N : c-loc - cond : 541704890"; + 2. if (lvar56 != 541704890) + goto BU + 3. goto N + -> ConditionalJump[IF_ICMPNE] #BT -> #BU + -> UnconditionalJump[GOTO] #BT -> #N + <- ConditionalJump[IF_ICMPEQ] #AA -> #BT +===#Block N(size=3, flags=0)=== + 0. return; + 1. lvar96 = "N : var expect: 38671825"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 38671825) + goto AG + -> ConditionalJump[IF_ICMPNE] #N -> #AG + <- UnconditionalJump[GOTO] #BT -> #N +===#Block AG(size=16, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -2111001710) + goto AG + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1985139726 ^ lvar56}) + goto AG + 3. lvar128 = "[Constant] 1525469093 -> 1985139726 predicate=750656427"; + 4. _consume({134793986 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 38671825) + goto AG + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1110543100 ^ lvar56}) + goto AG + 8. lvar132 = "[Constant] 1854902615 -> 1110543100 predicate=750656427"; + 9. _consume({2070608960 ^ lvar56}); + 10. throw new java/lang/RuntimeException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 351929984) + goto AG + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1049221118 ^ lvar56}) + goto AG + 13. lvar130 = "[Constant] 305646677 -> 1049221118 predicate=750656427"; + 14. _consume({180882403 ^ lvar56}); + 15. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AG -> #AG + <- ConditionalJump[IF_ICMPNE] #AG -> #AG + <- ConditionalJump[IF_ICMPNE] #U -> #AG + <- ConditionalJump[IF_ICMPNE] #D -> #AG + <- ConditionalJump[IF_ICMPNE] #N -> #AG +===#Block BU(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException("BT --> N # Failed to match seed of type Conditional and value 541704890"); + <- ConditionalJump[IF_ICMPNE] #BT -> #BU +===#Block AX(size=3, flags=10100)=== + 0. lvar56 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.qavqkwyrtjwtkffr(lvar56, 25003921); + 1. if (lvar56 != 1574287175) + goto AY + 2. goto AB + -> UnconditionalJump[GOTO] #AX -> #AB + -> ConditionalJump[IF_ICMPNE] #AX -> #AY + <- UnconditionalJump[GOTO] #AA -> #AX +===#Block AY(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("AX --> AB # Failed to match seed of type Unconditional and value 1574287175"); + <- ConditionalJump[IF_ICMPNE] #AX -> #AY +===#Block AB(size=33, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1419429281) + goto AB + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1637996328 ^ lvar56}) + goto AB + 3. lvar188 = "[Constant] 1014259823 -> 1637996328 predicate=1574287175"; + 4. _consume({1131183641 ^ lvar56}); + 5. throw new java/lang/RuntimeException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1037731394) + goto AB + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {249634494 ^ lvar56}) + goto AB + 8. lvar196 = "[Constant] 1395960313 -> 249634494 predicate=1574287175"; + 9. _consume({482896703 ^ lvar56}); + 10. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 602851921) + goto AB + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1654916503 ^ lvar56}) + goto AB + 13. lvar192 = "[Constant] 1064415952 -> 1654916503 predicate=1574287175"; + 14. _consume({1659522322 ^ lvar56}); + 15. throw new java/lang/RuntimeException("Failed to proper vm"); + 16. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -792585094) + goto AB + 17. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1609443040 ^ lvar56}) + goto AB + 18. lvar190 = "[Constant] 37458343 -> 1609443040 predicate=1574287175"; + 19. _consume({1101704478 ^ lvar56}); + 20. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 21. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1303297398) + goto AB + 22. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {446439918 ^ lvar56}) + goto AB + 23. lvar198 = "[Constant] 1196005033 -> 446439918 predicate=1574287175"; + 24. _consume({2015974439 ^ lvar56}); + 25. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 26. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1809329608) + goto AB + 27. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1845612652 ^ lvar56}) + goto AB + 28. lvar194 = "[Constant] 869558059 -> 1845612652 predicate=1574287175"; + 29. _consume({1229433881 ^ lvar56}); + 30. throw new java/lang/IllegalAccessException(); + 31. lvar114 = "AB : var expect: -290604486"; + 32. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -290604486) + goto AN + -> ConditionalJump[IF_ICMPNE] #AB -> #AB + -> ConditionalJump[IF_ICMPNE] #AB -> #AN + <- ConditionalJump[IF_ICMPNE] #AB -> #AB + <- ConditionalJump[IF_ICMPNE] #J -> #AB + <- ConditionalJump[IF_ICMPNE] #X -> #AB + <- UnconditionalJump[GOTO] #AX -> #AB + <- ConditionalJump[IF_ICMPNE] #H -> #AB + <- ConditionalJump[IF_ICMPNE] #K -> #AB + <- Switch[1221623750] #BB -> #AB + <- ConditionalJump[IF_ICMPNE] #P -> #AB + <- ConditionalJump[IF_ICMPNE] #L -> #AB + <- UnconditionalJump[GOTO] #BC -> #AB +===#Block AN(size=6, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -290604486) + goto AN + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {717641956 ^ lvar56}) + goto AN + 3. lvar184 = "[Constant] 1842016252 -> 717641956 predicate=1192015640"; + 4. _consume({1675557085 ^ lvar56}); + 5. throw new java/io/IOException("double"); + -> ConditionalJump[IF_ICMPNE] #AN -> #AN + <- ConditionalJump[IF_ICMPNE] #AN -> #AN + <- ConditionalJump[IF_ICMPNE] #AB -> #AN +===#Block AD(size=31, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1897858141) + goto AD + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {128979482 ^ lvar56}) + goto AD + 3. lvar140 = "[Constant] 947325492 -> 128979482 predicate=1070012462"; + 4. _consume({862544177 ^ lvar56}); + 5. throw new java/io/IOException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 258383186) + goto AD + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1458341559 ^ lvar56}) + goto AD + 8. lvar136 = "[Constant] 1764466329 -> 1458341559 predicate=1070012462"; + 9. _consume({564434948 ^ lvar56}); + 10. throw new java/io/IOException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1587190394) + goto AD + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {35458332 ^ lvar56}) + goto AD + 13. lvar138 = "[Constant] 1037702450 -> 35458332 predicate=1070012462"; + 14. _consume({1951717091 ^ lvar56}); + 15. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 16. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 495096042) + goto AD + 17. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {975800993 ^ lvar56}) + goto AD + 18. lvar144 = "[Constant] 99521167 -> 975800993 predicate=1070012462"; + 19. _consume({352398893 ^ lvar56}); + 20. throw new java/io/IOException("Failed to proper vm"); + 21. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1188582238) + goto AD + 22. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1820815737 ^ lvar56}) + goto AD + 23. lvar142 = "[Constant] 1396730199 -> 1820815737 predicate=1070012462"; + 24. _consume({1595339754 ^ lvar56}); + 25. throw new java/io/IOException("Failed to proper vm"); + 26. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -448690510) + goto AD + 27. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {330411197 ^ lvar56}) + goto AD + 28. lvar134 = "[Constant] 745976979 -> 330411197 predicate=1070012462"; + 29. _consume({5030112 ^ lvar56}); + 30. throw new java/lang/RuntimeException("double"); + -> ConditionalJump[IF_ICMPNE] #AD -> #AD + <- ConditionalJump[IF_ICMPNE] #AC -> #AD + <- ConditionalJump[IF_ICMPNE] #AA -> #AD + <- ConditionalJump[IF_ICMPNE] #Z -> #AD + <- ConditionalJump[IF_ICMPNE] #C -> #AD + <- ConditionalJump[IF_ICMPNE] #T -> #AD + <- ConditionalJump[IF_ICMPNE] #A -> #AD + <- ConditionalJump[IF_ICMPNE] #AD -> #AD +===#Block M(size=12, flags=0)=== + 0. lvar21 = new java.lang.IllegalArgumentException; + 1. lvar35 = new java.lang.StringBuilder; + 2. _consume(lvar35.()); + 3. lvar45 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.xrmhzznmxl(dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.mqfuffkidacyblk(), lvar56); + 4. lvar36 = lvar35.append(lvar45); + 5. lvar46 = lvar52; + 6. lvar37 = lvar36.append(lvar46); + 7. lvar38 = lvar37.toString(); + 8. _consume(lvar21.(lvar38)); + 9. throw lvar21; + 10. lvar78 = "M : var expect: 1455125402"; + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1455125402) + goto AF + -> ConditionalJump[IF_ICMPNE] #M -> #AF + <- Immediate #L -> #M +===#Block AF(size=16, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1591670959) + goto AF + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1606689712 ^ lvar56}) + goto AF + 3. lvar178 = "[Constant] 403980167 -> 1606689712 predicate=1204821047"; + 4. _consume({237083360 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1455125402) + goto AF + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1387147969 ^ lvar56}) + goto AF + 8. lvar176 = "[Constant] 360591094 -> 1387147969 predicate=1204821047"; + 9. _consume({314691604 ^ lvar56}); + 10. throw new java/lang/RuntimeException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1206014126) + goto AF + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {223193942 ^ lvar56}) + goto AF + 13. lvar180 = "[Constant] 1251850081 -> 223193942 predicate=1204821047"; + 14. _consume({1057928916 ^ lvar56}); + 15. throw new java/lang/RuntimeException("double"); + -> ConditionalJump[IF_ICMPNE] #AF -> #AF + <- Switch[2121522158] #BI -> #AF + <- DefaultSwitch #BI -> #AF + <- ConditionalJump[IF_ICMPNE] #M -> #AF + <- ConditionalJump[IF_ICMPNE] #AF -> #AF + <- ConditionalJump[IF_ICMPNE] #I -> #AF + <- ConditionalJump[IF_ICMPNE] #V -> #AF +===#Block AR(size=1, flags=0)=== + 0. throw new java/lang/RuntimeException(new java/lang/StringBuilder("L --> M # Failed to match seed of type Immediate and value 1255632499 and got ").append(lvar56).toString()); + <- ConditionalJump[IF_ICMPNE] #L -> #AR +===#Block AQ(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException(new java/lang/StringBuilder("K --> L # Failed to match seed of type Immediate and value 612227402 and got ").append(lvar56).toString()); + <- ConditionalJump[IF_ICMPNE] #K -> #AQ +===#Block DI(size=1, flags=0)=== + 0. throw new java/lang/IllegalAccessException("DH --> K # Failed to match seed of type Exception Range [Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;] and value 1447700561"); + <- ConditionalJump[IF_ICMPNE] #DH -> #DI +===#Block AT(size=1, flags=0)=== + 0. throw new java/io/IOException(new java/lang/StringBuilder("B --> C # Failed to match seed of type Immediate and value 1272140623 and got ").append(lvar56).toString()); + <- ConditionalJump[IF_ICMPNE] #B -> #AT +===#Block AU(size=1, flags=0)=== + 0. throw new java/io/IOException(new java/lang/StringBuilder("A --> B # Failed to match seed of type Immediate and value 653104086 and got ").append(lvar56).toString()); + <- ConditionalJump[IF_ICMPNE] #A -> #AU diff --git a/dev.skidfuscator.obfuscator/skidfuscator-error-sbc.txt b/dev.skidfuscator.obfuscator/skidfuscator-error-sbc.txt new file mode 100644 index 0000000..496daa3 --- /dev/null +++ b/dev.skidfuscator.obfuscator/skidfuscator-error-sbc.txt @@ -0,0 +1,599 @@ +handler=Block #J, types=[Ljava/lang/IllegalStateException;], range=[Block #C, Block #D, Block #G, Block #E, Block #F, Block #I, Block #H] +handler=Block #K, types=[Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;], range=[Block #C, Block #D, Block #G, Block #E, Block #F, Block #I, Block #H] +handler=Block #Q, types=[Ljava/lang/IllegalAccessException;], range=[Block #P, Block #O] +handler=Block #T, types=[Ljava/lang/RuntimeException;], range=[Block #S, Block #R] +handler=Block #W, types=[Ljava/io/IOException;], range=[Block #V, Block #U] +handler=Block #Z, types=[Ljava/lang/IllegalAccessException;], range=[Block #Y, Block #X] +===#Block A(size=3, flags=1)=== + 0. synth(lvar0 = lvar0); + 1. lvar90 = "A : var expect: 258383186"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 258383186) + goto AD + -> Immediate #A -> #B + -> ConditionalJump[IF_ICMPNE] #A -> #AD +===#Block B(size=5, flags=0)=== + 0. lvar1 = {653104086 ^ lvar56}; + 1. lvar170 = "[Constant] 0 -> 653104086 predicate=653104086"; + 2. lvar4 = lvar1; + 3. lvar84 = "B : var expect: 929865393"; + 4. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 929865393) + goto AE + -> Immediate #B -> #C + -> ConditionalJump[IF_ICMPNE] #B -> #AE + <- Immediate #A -> #B +===#Block AE(size=16, flags=0)=== + 0. throw new java/io/IOException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 141870657) + goto AE + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {678601203 ^ lvar56}) + goto AE + 3. lvar158 = "[Constant] 2045360848 -> 678601203 predicate=1369119523"; + 4. _consume({324553256 ^ lvar56}); + 5. throw new java/lang/RuntimeException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 929865393) + goto AE + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {354133477 ^ lvar56}) + goto AE + 8. lvar156 = "[Constant] 1149288134 -> 354133477 predicate=1369119523"; + 9. _consume({2067786231 ^ lvar56}); + 10. throw new java/lang/RuntimeException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -475011464) + goto AE + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1542592368 ^ lvar56}) + goto AE + 13. lvar154 = "[Constant] 174656595 -> 1542592368 predicate=1369119523"; + 14. _consume({221170507 ^ lvar56}); + 15. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AE -> #AE + <- ConditionalJump[IF_ICMPNE] #AE -> #AE + <- ConditionalJump[IF_ICMPNE] #S -> #AE + <- ConditionalJump[IF_ICMPNE] #B -> #AE + <- ConditionalJump[IF_ICMPNE] #G -> #AE +===#Block C(size=18, flags=0)=== + 0. lvar6 = {1272140622 ^ lvar56}; + 1. lvar160 = "[Constant] 1 -> 1272140622 predicate=1272140623"; + 2. lvar49 = lvar6; + 3. lvar7 = {1272140623 ^ lvar56}; + 4. lvar162 = "[Constant] 0 -> 1272140623 predicate=1272140623"; + 5. lvar8 = new java.lang.String[lvar7]; + 6. _consume(dev.skidfuscator.testclasses.evaluator.util.crypto.AES.main(lvar8, 2050942566)); + 7. lvar9 = {1272140621 ^ lvar56}; + 8. lvar166 = "[Constant] 2 -> 1272140621 predicate=1272140623"; + 9. lvar50 = lvar9; + 10. lvar10 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.data; + 11. lvar2 = {1272140623 ^ lvar56}; + 12. lvar168 = "[Constant] 0 -> 1272140623 predicate=1272140623"; + 13. lvar11 = lvar10[lvar2]; + 14. if (lvar11 != {1272140623 ^ lvar56}) + goto AC + 15. lvar164 = "[Constant] 0 -> 1272140623 predicate=1272140623"; + 16. lvar80 = "C : var expect: 1587190394"; + 17. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1587190394) + goto AD + -> TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + -> ConditionalJump[IF_ICMPNE] #C -> #AC + -> TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> ConditionalJump[IF_ICMPNE] #C -> #AD + -> Immediate #C -> #D + <- Immediate #B -> #C +===#Block D(size=8, flags=0)=== + 0. lvar12 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.data; + 1. lvar28 = {43991249 ^ lvar56}; + 2. lvar150 = "[Constant] 1 -> 43991249 predicate=43991248"; + 3. lvar13 = lvar12[lvar28]; + 4. svar116 = {lvar13 ^ lvar56}; + 5. switch (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(svar116)) { + case 41242204: + goto #E + default: + goto #F + } + 6. lvar76 = "D : var expect: 351929984"; + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 351929984) + goto AG + -> DefaultSwitch #D -> #F + -> TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + -> Switch[41242204] #D -> #E + -> ConditionalJump[IF_ICMPNE] #D -> #AG + -> TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- Immediate #C -> #D +===#Block E(size=6, flags=0)=== + 0. lvar14 = {1294796708 ^ lvar56}; + 1. lvar182 = "[Constant] 3 -> 1294796708 predicate=1294796711"; + 2. lvar51 = lvar14; + 3. lvar98 = "E : var expect: 1768439098"; + 4. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1768439098) + goto AK + 5. goto V + -> ConditionalJump[IF_ICMPNE] #E -> #AK + -> TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + -> UnconditionalJump[GOTO] #E -> #V + <- Switch[41242204] #D -> #E +===#Block V(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56) == 144140150) + goto U + 1. throw nullconst; + 2. lvar70 = "V : var expect: -1206014126"; + 3. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1206014126) + goto AF + -> TryCatch range: [V...U] -> W ([Ljava/io/IOException;]) + -> ConditionalJump[IF_ICMPEQ] #V -> #U + -> ConditionalJump[IF_ICMPNE] #V -> #AF + <- UnconditionalJump[GOTO] #E -> #V +===#Block U(size=3, flags=0)=== + 0. throw new java/io/IOException(); + 1. lvar112 = "U : var expect: -2111001710"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -2111001710) + goto AG + -> ConditionalJump[IF_ICMPNE] #U -> #AG + -> TryCatch range: [V...U] -> W ([Ljava/io/IOException;]) + <- ConditionalJump[IF_ICMPEQ] #V -> #U +===#Block W(size=4, flags=0)=== + 0. _consume(catch()); + 1. lvar102 = "W : var expect: -327614560"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -327614560) + goto AL + 3. goto H + -> ConditionalJump[IF_ICMPNE] #W -> #AL + -> UnconditionalJump[GOTO] #W -> #H + <- TryCatch range: [V...U] -> W ([Ljava/io/IOException;]) + <- TryCatch range: [V...U] -> W ([Ljava/io/IOException;]) +===#Block AL(size=6, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -327614560) + goto AL + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {97247105 ^ lvar56}) + goto AL + 3. lvar124 = "[Constant] 94890884 -> 97247105 predicate=7091205"; + 4. _consume({2000967383 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AL -> #AL + <- ConditionalJump[IF_ICMPNE] #W -> #AL + <- ConditionalJump[IF_ICMPNE] #AL -> #AL +===#Block AK(size=6, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1768439098) + goto AK + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {513532846 ^ lvar56}) + goto AK + 3. lvar148 = "[Constant] 225905182 -> 513532846 predicate=334293424"; + 4. _consume({213075862 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AK -> #AK + <- ConditionalJump[IF_ICMPNE] #E -> #AK + <- ConditionalJump[IF_ICMPNE] #AK -> #AK +===#Block F(size=6, flags=0)=== + 0. lvar25 = {-1224827954 ^ lvar56}; + 1. lvar186 = "[Constant] -5 -> -1224827954 predicate=1224827957"; + 2. lvar51 = lvar25; + 3. lvar108 = "F : var expect: 1208689066"; + 4. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1208689066) + goto AJ + 5. goto Y + -> TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> UnconditionalJump[GOTO] #F -> #Y + -> TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + -> ConditionalJump[IF_ICMPNE] #F -> #AJ + <- DefaultSwitch #D -> #F +===#Block Y(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56) == 247096160) + goto X + 1. throw nullconst; + 2. lvar86 = "Y : var expect: 50402473"; + 3. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 50402473) + goto AH + -> ConditionalJump[IF_ICMPEQ] #Y -> #X + -> TryCatch range: [Y...X] -> Z ([Ljava/lang/IllegalAccessException;]) + -> ConditionalJump[IF_ICMPNE] #Y -> #AH + <- UnconditionalJump[GOTO] #F -> #Y +===#Block AH(size=6, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 50402473) + goto AH + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1769781932 ^ lvar56}) + goto AH + 3. lvar118 = "[Constant] 1000214968 -> 1769781932 predicate=1390586644"; + 4. _consume({1320157410 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AH -> #AH + <- ConditionalJump[IF_ICMPNE] #AH -> #AH + <- ConditionalJump[IF_ICMPNE] #Y -> #AH +===#Block X(size=3, flags=0)=== + 0. throw new java/lang/IllegalAccessException(); + 1. lvar82 = "X : var expect: 1037731394"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1037731394) + goto AB + -> ConditionalJump[IF_ICMPNE] #X -> #AB + -> TryCatch range: [Y...X] -> Z ([Ljava/lang/IllegalAccessException;]) + <- ConditionalJump[IF_ICMPEQ] #Y -> #X +===#Block Z(size=4, flags=0)=== + 0. _consume(catch()); + 1. lvar72 = "Z : var expect: 495096042"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 495096042) + goto AD + 3. goto H + -> ConditionalJump[IF_ICMPNE] #Z -> #AD + -> UnconditionalJump[GOTO] #Z -> #H + <- TryCatch range: [Y...X] -> Z ([Ljava/lang/IllegalAccessException;]) + <- TryCatch range: [Y...X] -> Z ([Ljava/lang/IllegalAccessException;]) +===#Block H(size=15, flags=0)=== + 0. lvar15 = lvar0; + 1. lvar29 = lvar51; + 2. _consume(lvar15.self(lvar29, 1480640691)); + 3. lvar16 = new java.lang.IllegalArgumentException; + 4. lvar3 = new java.lang.StringBuilder; + 5. _consume(lvar3.()); + 6. lvar43 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.xrmhzznmxl(dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.omwbqokgbtcfrul(), lvar56); + 7. lvar32 = lvar3.append(lvar43); + 8. lvar44 = lvar51; + 9. lvar33 = lvar32.append(lvar44); + 10. lvar34 = lvar33.toString(); + 11. _consume(lvar16.(lvar34)); + 12. throw lvar16; + 13. lvar106 = "H : var expect: 1419429281"; + 14. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1419429281) + goto AB + -> TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + -> ConditionalJump[IF_ICMPNE] #H -> #AB + -> TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- UnconditionalJump[GOTO] #T -> #H + <- UnconditionalJump[GOTO] #W -> #H + <- UnconditionalJump[GOTO] #Z -> #H +===#Block AC(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) == -1188582238) + goto I + 1. lvar66 = "AC : var expect: -1188582238"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1188582238) + goto AD + 3. goto AB + -> ConditionalJump[IF_ICMPNE] #AC -> #AD + -> UnconditionalJump[GOTO] #AC -> #AB + -> ConditionalJump[IF_ICMPEQ] #AC -> #I + <- ConditionalJump[IF_ICMPNE] #C -> #AC +===#Block I(size=12, flags=0)=== + 0. lvar27 = new java.lang.IllegalArgumentException; + 1. lvar39 = new java.lang.StringBuilder; + 2. _consume(lvar39.()); + 3. lvar47 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.xrmhzznmxl(dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.ityagplkacclgrd(), lvar56); + 4. lvar40 = lvar39.append(lvar47); + 5. lvar48 = lvar50; + 6. lvar41 = lvar40.append(lvar48); + 7. lvar42 = lvar41.toString(); + 8. _consume(lvar27.(lvar42)); + 9. throw lvar27; + 10. lvar100 = "I : var expect: -1591670959"; + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1591670959) + goto AF + -> TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + -> TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + -> ConditionalJump[IF_ICMPNE] #I -> #AF + <- ConditionalJump[IF_ICMPEQ] #AC -> #I +===#Block K(size=9, flags=0)=== + 0. lvar22 = catch(); + 1. lvar53 = lvar22; + 2. lvar23 = lvar53; + 3. _consume(lvar23.printStackTrace()); + 4. lvar24 = {-1447700562 ^ lvar56}; + 5. lvar122 = "[Constant] -1 -> -1447700562 predicate=1447700561"; + 6. lvar52 = lvar24; + 7. lvar60 = "K : var expect: -1303297398"; + 8. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1303297398) + goto AB + -> Immediate #K -> #L + -> ConditionalJump[IF_ICMPNE] #K -> #AB + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) + <- TryCatch range: [C...H] -> K ([Ljavax/crypto/BadPaddingException;, Ljavax/crypto/IllegalBlockSizeException;, Ljavax/crypto/NoSuchPaddingException;, Ljava/security/InvalidKeyException;, Ljava/security/NoSuchAlgorithmException;]) +===#Block J(size=8, flags=0)=== + 0. lvar17 = catch(); + 1. lvar5 = lvar17; + 2. lvar18 = {310704707 ^ lvar56}; + 3. lvar116 = "[Constant] 4 -> 310704707 predicate=310704711"; + 4. lvar52 = lvar18; + 5. lvar58 = "J : var expect: -1809329608"; + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1809329608) + goto AB + 7. goto P + -> ConditionalJump[IF_ICMPNE] #J -> #AB + -> UnconditionalJump[GOTO] #J -> #P + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) + <- TryCatch range: [C...H] -> J ([Ljava/lang/IllegalStateException;]) +===#Block P(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.iozmupmwnsuylvjz(lvar56) == 244275453) + goto O + 1. throw nullconst; + 2. lvar68 = "P : var expect: -792585094"; + 3. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -792585094) + goto AB + -> TryCatch range: [P...O] -> Q ([Ljava/lang/IllegalAccessException;]) + -> ConditionalJump[IF_ICMPNE] #P -> #AB + -> ConditionalJump[IF_ICMPEQ] #P -> #O + <- UnconditionalJump[GOTO] #J -> #P +===#Block O(size=3, flags=0)=== + 0. throw new java/lang/IllegalAccessException(); + 1. lvar88 = "O : var expect: 1692268378"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1692268378) + goto AI + -> ConditionalJump[IF_ICMPNE] #O -> #AI + -> TryCatch range: [P...O] -> Q ([Ljava/lang/IllegalAccessException;]) + <- ConditionalJump[IF_ICMPEQ] #P -> #O +===#Block AI(size=6, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1692268378) + goto AI + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {373582960 ^ lvar56}) + goto AI + 3. lvar120 = "[Constant] 159036106 -> 373582960 predicate=524213946"; + 4. _consume({489526235 ^ lvar56}); + 5. throw new java/io/IOException("double"); + -> ConditionalJump[IF_ICMPNE] #AI -> #AI + <- ConditionalJump[IF_ICMPNE] #AI -> #AI + <- ConditionalJump[IF_ICMPNE] #O -> #AI +===#Block Q(size=4, flags=0)=== + 0. _consume(catch()); + 1. lvar92 = "Q : var expect: 591726011"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 591726011) + goto AJ + 3. goto L + -> ConditionalJump[IF_ICMPNE] #Q -> #AJ + -> UnconditionalJump[GOTO] #Q -> #L + <- TryCatch range: [P...O] -> Q ([Ljava/lang/IllegalAccessException;]) + <- TryCatch range: [P...O] -> Q ([Ljava/lang/IllegalAccessException;]) +===#Block L(size=8, flags=0)=== + 0. lvar19 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.data; + 1. lvar30 = {612227400 ^ lvar56}; + 2. lvar146 = "[Constant] 2 -> 612227400 predicate=612227402"; + 3. lvar20 = lvar19[lvar30]; + 4. lvar31 = lvar52; + 5. if (lvar20 == lvar31) + goto AA + 6. lvar74 = "L : var expect: 602851921"; + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 602851921) + goto AB + -> ConditionalJump[IF_ICMPEQ] #L -> #AA + -> Immediate #L -> #M + -> ConditionalJump[IF_ICMPNE] #L -> #AB + <- Immediate #K -> #L + <- UnconditionalJump[GOTO] #Q -> #L +===#Block M(size=12, flags=0)=== + 0. lvar21 = new java.lang.IllegalArgumentException; + 1. lvar35 = new java.lang.StringBuilder; + 2. _consume(lvar35.()); + 3. lvar45 = dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.xrmhzznmxl(dev.skidfuscator.testclasses.evaluator.test.impl.flow.OpaqueConditionTest.mqfuffkidacyblk(), lvar56); + 4. lvar36 = lvar35.append(lvar45); + 5. lvar46 = lvar52; + 6. lvar37 = lvar36.append(lvar46); + 7. lvar38 = lvar37.toString(); + 8. _consume(lvar21.(lvar38)); + 9. throw lvar21; + 10. lvar78 = "M : var expect: 1455125402"; + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1455125402) + goto AF + -> ConditionalJump[IF_ICMPNE] #M -> #AF + <- Immediate #L -> #M +===#Block AF(size=16, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1591670959) + goto AF + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1606689712 ^ lvar56}) + goto AF + 3. lvar178 = "[Constant] 403980167 -> 1606689712 predicate=1204821047"; + 4. _consume({237083360 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1455125402) + goto AF + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1387147969 ^ lvar56}) + goto AF + 8. lvar176 = "[Constant] 360591094 -> 1387147969 predicate=1204821047"; + 9. _consume({314691604 ^ lvar56}); + 10. throw new java/lang/RuntimeException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1206014126) + goto AF + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {223193942 ^ lvar56}) + goto AF + 13. lvar180 = "[Constant] 1251850081 -> 223193942 predicate=1204821047"; + 14. _consume({1057928916 ^ lvar56}); + 15. throw new java/lang/RuntimeException("double"); + -> ConditionalJump[IF_ICMPNE] #AF -> #AF + <- ConditionalJump[IF_ICMPNE] #M -> #AF + <- ConditionalJump[IF_ICMPNE] #AF -> #AF + <- ConditionalJump[IF_ICMPNE] #I -> #AF + <- ConditionalJump[IF_ICMPNE] #V -> #AF +===#Block AA(size=4, flags=0)=== + 0. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) == -448690510) + goto N + 1. lvar62 = "AA : var expect: -448690510"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -448690510) + goto AD + 3. goto AB + -> UnconditionalJump[GOTO] #AA -> #AB + -> ConditionalJump[IF_ICMPNE] #AA -> #AD + -> ConditionalJump[IF_ICMPEQ] #AA -> #N + <- ConditionalJump[IF_ICMPEQ] #L -> #AA +===#Block N(size=3, flags=0)=== + 0. return; + 1. lvar96 = "N : var expect: 38671825"; + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 38671825) + goto AG + -> ConditionalJump[IF_ICMPNE] #N -> #AG + <- ConditionalJump[IF_ICMPEQ] #AA -> #N +===#Block AG(size=16, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -2111001710) + goto AG + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1985139726 ^ lvar56}) + goto AG + 3. lvar128 = "[Constant] 1525469093 -> 1985139726 predicate=750656427"; + 4. _consume({134793986 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 38671825) + goto AG + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1110543100 ^ lvar56}) + goto AG + 8. lvar132 = "[Constant] 1854902615 -> 1110543100 predicate=750656427"; + 9. _consume({2070608960 ^ lvar56}); + 10. throw new java/lang/RuntimeException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 351929984) + goto AG + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1049221118 ^ lvar56}) + goto AG + 13. lvar130 = "[Constant] 305646677 -> 1049221118 predicate=750656427"; + 14. _consume({180882403 ^ lvar56}); + 15. throw new java/lang/IllegalAccessException("double"); + -> ConditionalJump[IF_ICMPNE] #AG -> #AG + <- ConditionalJump[IF_ICMPNE] #AG -> #AG + <- ConditionalJump[IF_ICMPNE] #U -> #AG + <- ConditionalJump[IF_ICMPNE] #D -> #AG + <- ConditionalJump[IF_ICMPNE] #N -> #AG +===#Block AD(size=31, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1897858141) + goto AD + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {128979482 ^ lvar56}) + goto AD + 3. lvar140 = "[Constant] 947325492 -> 128979482 predicate=1070012462"; + 4. _consume({862544177 ^ lvar56}); + 5. throw new java/io/IOException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 258383186) + goto AD + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1458341559 ^ lvar56}) + goto AD + 8. lvar136 = "[Constant] 1764466329 -> 1458341559 predicate=1070012462"; + 9. _consume({564434948 ^ lvar56}); + 10. throw new java/io/IOException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1587190394) + goto AD + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {35458332 ^ lvar56}) + goto AD + 13. lvar138 = "[Constant] 1037702450 -> 35458332 predicate=1070012462"; + 14. _consume({1951717091 ^ lvar56}); + 15. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 16. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 495096042) + goto AD + 17. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {975800993 ^ lvar56}) + goto AD + 18. lvar144 = "[Constant] 99521167 -> 975800993 predicate=1070012462"; + 19. _consume({352398893 ^ lvar56}); + 20. throw new java/io/IOException("Failed to proper vm"); + 21. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1188582238) + goto AD + 22. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1820815737 ^ lvar56}) + goto AD + 23. lvar142 = "[Constant] 1396730199 -> 1820815737 predicate=1070012462"; + 24. _consume({1595339754 ^ lvar56}); + 25. throw new java/io/IOException("Failed to proper vm"); + 26. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -448690510) + goto AD + 27. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {330411197 ^ lvar56}) + goto AD + 28. lvar134 = "[Constant] 745976979 -> 330411197 predicate=1070012462"; + 29. _consume({5030112 ^ lvar56}); + 30. throw new java/lang/RuntimeException("double"); + -> ConditionalJump[IF_ICMPNE] #AD -> #AD + <- ConditionalJump[IF_ICMPNE] #AA -> #AD + <- ConditionalJump[IF_ICMPNE] #AC -> #AD + <- ConditionalJump[IF_ICMPNE] #Z -> #AD + <- ConditionalJump[IF_ICMPNE] #C -> #AD + <- ConditionalJump[IF_ICMPNE] #T -> #AD + <- ConditionalJump[IF_ICMPNE] #A -> #AD + <- ConditionalJump[IF_ICMPNE] #AD -> #AD +===#Block AJ(size=11, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1208689066) + goto AJ + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {137631800 ^ lvar56}) + goto AJ + 3. lvar174 = "[Constant] 1239585194 -> 137631800 predicate=1104578962"; + 4. _consume({1507141880 ^ lvar56}); + 5. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 591726011) + goto AJ + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {976847025 ^ lvar56}) + goto AJ + 8. lvar172 = "[Constant] 2079263011 -> 976847025 predicate=1104578962"; + 9. _consume({1660209801 ^ lvar56}); + 10. throw new java/io/IOException("double"); + -> ConditionalJump[IF_ICMPNE] #AJ -> #AJ + <- ConditionalJump[IF_ICMPNE] #AJ -> #AJ + <- ConditionalJump[IF_ICMPNE] #Q -> #AJ + <- ConditionalJump[IF_ICMPNE] #F -> #AJ +===#Block AB(size=33, flags=0)=== + 0. throw new java/lang/RuntimeException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1419429281) + goto AB + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1637996328 ^ lvar56}) + goto AB + 3. lvar188 = "[Constant] 1014259823 -> 1637996328 predicate=1574287175"; + 4. _consume({1131183641 ^ lvar56}); + 5. throw new java/lang/RuntimeException("Failed to proper vm"); + 6. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 1037731394) + goto AB + 7. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {249634494 ^ lvar56}) + goto AB + 8. lvar196 = "[Constant] 1395960313 -> 249634494 predicate=1574287175"; + 9. _consume({482896703 ^ lvar56}); + 10. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 11. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != 602851921) + goto AB + 12. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1654916503 ^ lvar56}) + goto AB + 13. lvar192 = "[Constant] 1064415952 -> 1654916503 predicate=1574287175"; + 14. _consume({1659522322 ^ lvar56}); + 15. throw new java/lang/RuntimeException("Failed to proper vm"); + 16. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -792585094) + goto AB + 17. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1609443040 ^ lvar56}) + goto AB + 18. lvar190 = "[Constant] 37458343 -> 1609443040 predicate=1574287175"; + 19. _consume({1101704478 ^ lvar56}); + 20. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 21. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1303297398) + goto AB + 22. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {446439918 ^ lvar56}) + goto AB + 23. lvar198 = "[Constant] 1196005033 -> 446439918 predicate=1574287175"; + 24. _consume({2015974439 ^ lvar56}); + 25. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 26. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -1809329608) + goto AB + 27. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {1845612652 ^ lvar56}) + goto AB + 28. lvar194 = "[Constant] 869558059 -> 1845612652 predicate=1574287175"; + 29. _consume({1229433881 ^ lvar56}); + 30. throw new java/lang/IllegalAccessException(); + 31. lvar114 = "AB : var expect: -290604486"; + 32. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -290604486) + goto AN + -> ConditionalJump[IF_ICMPNE] #AB -> #AB + -> ConditionalJump[IF_ICMPNE] #AB -> #AN + <- ConditionalJump[IF_ICMPNE] #J -> #AB + <- UnconditionalJump[GOTO] #AA -> #AB + <- ConditionalJump[IF_ICMPNE] #AB -> #AB + <- UnconditionalJump[GOTO] #AC -> #AB + <- ConditionalJump[IF_ICMPNE] #X -> #AB + <- ConditionalJump[IF_ICMPNE] #H -> #AB + <- ConditionalJump[IF_ICMPNE] #K -> #AB + <- ConditionalJump[IF_ICMPNE] #P -> #AB + <- ConditionalJump[IF_ICMPNE] #L -> #AB +===#Block AN(size=6, flags=0)=== + 0. throw new java/lang/IllegalAccessException("Failed to proper vm"); + 1. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != -290604486) + goto AN + 2. if (qwbkphdpnkrldtgs.lizexrapksoalzpp.mulltcwvfjcrdhlp(lvar56) != {717641956 ^ lvar56}) + goto AN + 3. lvar184 = "[Constant] 1842016252 -> 717641956 predicate=1192015640"; + 4. _consume({1675557085 ^ lvar56}); + 5. throw new java/io/IOException("double"); + -> ConditionalJump[IF_ICMPNE] #AN -> #AN + <- ConditionalJump[IF_ICMPNE] #AN -> #AN + <- ConditionalJump[IF_ICMPNE] #AB -> #AN diff --git a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/creator/SkidFlowGraphDumper.java b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/creator/SkidFlowGraphDumper.java index 5ba5435..bc9ee82 100644 --- a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/creator/SkidFlowGraphDumper.java +++ b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/creator/SkidFlowGraphDumper.java @@ -1777,7 +1777,7 @@ private static class BundleGraph extends FastDirectedGraph implements FastGraphVertex { private BasicBlock first = null; - private BasicBlock getFirst() { + public BasicBlock getFirst() { if (first == null) first = get(0); return first; diff --git a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/number/pure/VmHashTransformer.java b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/number/pure/VmHashTransformer.java index 04c2e9a..700a4a9 100644 --- a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/number/pure/VmHashTransformer.java +++ b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/number/pure/VmHashTransformer.java @@ -4,15 +4,20 @@ import dev.skidfuscator.obfuscator.number.hash.HashTransformer; import dev.skidfuscator.obfuscator.number.hash.SkiddedHash; import dev.skidfuscator.obfuscator.predicate.factory.PredicateFlowGetter; +import dev.skidfuscator.obfuscator.ssvm.JdkBootClassFinder; import dev.skidfuscator.obfuscator.ssvm.SystemProps$RawNatives; import dev.xdark.ssvm.VirtualMachine; import dev.xdark.ssvm.api.MethodInvoker; import dev.xdark.ssvm.api.VMInterface; +import dev.xdark.ssvm.classloading.BootClassFinder; +import dev.xdark.ssvm.classloading.RuntimeBootClassFinder; import dev.xdark.ssvm.classloading.SupplyingClassLoaderInstaller; import dev.xdark.ssvm.execution.PanicException; +import dev.xdark.ssvm.execution.Result; import dev.xdark.ssvm.execution.VMException; import dev.xdark.ssvm.filesystem.FileManager; import dev.xdark.ssvm.filesystem.HostFileManager; +import dev.xdark.ssvm.filesystem.SimpleFileManager; import dev.xdark.ssvm.invoke.Argument; import dev.xdark.ssvm.invoke.InvocationUtil; import dev.xdark.ssvm.memory.management.MemoryManager; @@ -35,6 +40,7 @@ import org.objectweb.asm.Type; import java.awt.*; +import java.io.IOException; import java.util.*; import java.util.List; @@ -234,10 +240,20 @@ private void init() { ImagineBreaker.openBootModules(); // -- SENSITIVE FUCKERY DO NOT TOUCH + this.vm = new VirtualMachine() { + @Override + protected BootClassFinder createBootClassFinder() { + try { + return new JdkBootClassFinder(RuntimeBootClassFinder.create()); + } catch (IOException e) { + throw new RuntimeException("Failed to create JDK class definer", e); + } + } + @Override protected FileManager createFileManager() { - return new HostFileManager(); + return new SimpleFileManager(); } }; //vm.getProperties().put("java.class.path", ""); @@ -245,10 +261,25 @@ protected FileManager createFileManager() { final VMInterface vmi = vm.getInterface(); final MemoryManager memoryManager = vm.getMemoryManager(); vm.initialize(); + + // [fix] fuck modules + InstanceClass jdk_internal_module_ModuleBootstrap = (InstanceClass) vm.findBootstrapClass("jdk/internal/module/ModuleBootstrap"); + vmi.setInvoker( + vm.getSymbols().java_lang_System(), "initPhase2", "(ZZ)I", + ctx -> { + ctx.setResult(0); + return Result.ABORT; + } + ); + vmi.setInvoker( + jdk_internal_module_ModuleBootstrap, "boot", "()V", + MethodInvoker.noop() + ); + + // [fix] fuck JDK9+ raw natives on Liberica SystemProps$RawNatives.init(vm); - vm.bootstrap(); - // Some patches to circumvent bugs arising from VM implementation changes in later versions + // [fix] jdk8+ memory fuckery if (vm.getJvmVersion() > 8) { // Bug in SSVM makes it think there are overlapping sleeps, so until that gets fixed we stub out sleeping. InstanceClass thread = vm.getSymbols().java_lang_Thread(); @@ -259,6 +290,10 @@ protected FileManager createFileManager() { if (bits != null) vmi.setInvoker(bits.getMethod("reserveMemory", "(JJ)V"), MethodInvoker.noop()); } + // ==== FINALLY ==== + vm.bootstrap(); + // ================= + // Create a loader pulling classes and files from a root directory final CompleteResolvingJarDumper dumper = new CompleteResolvingJarDumper( null, diff --git a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/DelegatingClassDefiner.java b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/DelegatingClassDefiner.java new file mode 100644 index 0000000..f93835a --- /dev/null +++ b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/DelegatingClassDefiner.java @@ -0,0 +1,30 @@ +package dev.skidfuscator.obfuscator.ssvm; + +import dev.xdark.ssvm.classloading.ClassDefiner; +import dev.xdark.ssvm.classloading.ClassDefinitionOption; +import dev.xdark.ssvm.classloading.ClassLoaderData; +import dev.xdark.ssvm.classloading.ParsedClassData; +import dev.xdark.ssvm.mirror.type.InstanceClass; + +/** + * Delegating class definer implementation to allow intercepting class definition. + */ +public class DelegatingClassDefiner implements ClassDefiner { + private final ClassDefiner delegate; + + public DelegatingClassDefiner(ClassDefiner delegate) { + if (delegate == null) { + throw new IllegalArgumentException("Delegate cannot be null"); + } + this.delegate = delegate; + } + + @Override + public ParsedClassData parseClass(String name, byte[] bytes, int off, int len, String source) { + return delegate.parseClass(name, bytes, off, len, source); + } + + protected ClassDefiner getDelegate() { + return delegate; + } +} \ No newline at end of file diff --git a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/JdkBootClassFinder.java b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/JdkBootClassFinder.java new file mode 100644 index 0000000..55f82e3 --- /dev/null +++ b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/JdkBootClassFinder.java @@ -0,0 +1,126 @@ +package dev.skidfuscator.obfuscator.ssvm; + +import dev.skidfuscator.obfuscator.util.JdkDownloader; +import dev.xdark.ssvm.classloading.BootClassFinder; +import dev.xdark.ssvm.classloading.ParsedClassData; +import dev.xdark.ssvm.util.ClassUtil; +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.tree.ClassNode; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +public class JdkBootClassFinder implements BootClassFinder { + private final Path jmodDir; + private final Map moduleCache = new HashMap<>(); + private final BootClassFinder delegate; + + public JdkBootClassFinder(BootClassFinder delegate) throws IOException { + this.delegate = delegate; + this.jmodDir = JdkDownloader.getJdkHome().resolve("jmods"); + if (!Files.exists(jmodDir)) { + throw new IOException("JDK jmods directory not found: " + jmodDir); + } + } + + @Override + public ParsedClassData findBootClass(String name) { + // For bootstrap classes, try to load from our JDK first + if (name != null && (name.startsWith("java/") || name.startsWith("jdk/") || name.startsWith("sun/"))) { + try { + byte[] jdkBytes = loadFromJmod(name); + if (jdkBytes != null) { + ClassReader cr = new ClassReader(jdkBytes); + ClassNode node = ClassUtil.readNode(cr); + //System.out.println("[!!] Loading " + name + " from jmod"); + return new ParsedClassData(cr, node); + } + } catch (IOException e) { + // Fall through to delegate + System.err.println("Failed to load " + name + " from jmod: " + e.getMessage()); + } + } + + //System.out.println("[??] Loading " + name + " from " + delegate.getClass().getName()); + + // If not found in JDK, delegate to original finder + return null; + } + + private byte[] loadFromJmod(String name) throws IOException { + // Common modules to check first + //System.out.println("Loading " + name + " from jmod"); + String[] modulesToCheck = { + "java.base.jmod", + "java.desktop.jmod", + "java.management.jmod" + }; + + String classPath = "classes/" + name + ".class"; + + // Check common modules first + for (String module : modulesToCheck) { + byte[] result = loadFromModule(module, classPath); + if (result != null) { + return result; + } + } + + // If not found in common modules, check all jmod files + try (DirectoryStream stream = Files.newDirectoryStream(jmodDir, "*.jmod")) { + for (Path jmodPath : stream) { + String moduleName = jmodPath.getFileName().toString(); + //System.out.println("Checking " + moduleName); + byte[] result = loadFromModule(moduleName, classPath); + if (result != null) { + return result; + } + } + } + + return null; + } + + private byte[] loadFromModule(String moduleName, String classPath) throws IOException { + ZipFile zip = moduleCache.computeIfAbsent(moduleName, name -> { + try { + return new ZipFile(jmodDir.resolve(name).toFile()); + } catch (IOException e) { + return null; + } + }); + + if (zip != null) { + //System.out.println("Loading entry " + classPath + " from jmod " + moduleName); + ZipEntry entry = zip.getEntry(classPath); + if (entry != null) { + try (InputStream in = zip.getInputStream(entry)) { + return in.readAllBytes(); + } + } + } else { + System.out.println("Failed to load " + moduleName); + throw new IllegalStateException("Failed to load " + moduleName); + } + + return null; + } + + @Override + protected void finalize() throws Throwable { + // Close all cached ZipFiles + for (ZipFile zip : moduleCache.values()) { + if (zip != null) { + zip.close(); + } + } + super.finalize(); + } +} \ No newline at end of file diff --git a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/JdkClassDefiner.java b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/JdkClassDefiner.java new file mode 100644 index 0000000..44cf274 --- /dev/null +++ b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/ssvm/JdkClassDefiner.java @@ -0,0 +1,114 @@ +package dev.skidfuscator.obfuscator.ssvm; + +import dev.skidfuscator.obfuscator.util.JdkDownloader; +import dev.xdark.ssvm.classloading.ClassDefiner; +import dev.xdark.ssvm.classloading.ParsedClassData; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.*; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +public class JdkClassDefiner extends DelegatingClassDefiner { + private final Path jmodDir; + private final Map moduleCache = new HashMap<>(); + + public JdkClassDefiner(ClassDefiner delegate) throws IOException { + super(delegate); + this.jmodDir = JdkDownloader.getJdkHome().resolve("jmods"); + if (!Files.exists(jmodDir)) { + throw new IOException("JDK jmods directory not found: " + jmodDir); + } + } + + @Override + public ParsedClassData parseClass(String name, byte[] bytes, int off, int len, String source) { + // For bootstrap classes, try to load from our JDK first + //System.out.println("Loading " + name + " from " + source); + if (name != null && (name.startsWith("java/") || name.startsWith("jdk/"))) { + System.out.println("Loading " + name + " from jmod"); + try { + byte[] jdkBytes = loadFromJmod(name); + if (jdkBytes != null) { + return super.parseClass(name, jdkBytes, 0, jdkBytes.length, "jmod:" + source); + } + } catch (IOException e) { + // Fall through to original bytes + System.err.println("Failed to load " + name + " from jmod: " + e.getMessage()); + } + } + return super.parseClass(name, bytes, off, len, source); + } + + private byte[] loadFromJmod(String name) throws IOException { + // Common modules to check first + //System.out.println("Loading " + name + " from jmod"); + String[] modulesToCheck = { + "java.base.jmod", + "java.desktop.jmod", + "jdk.internal.jvmci.jmod", + "java.management.jmod", + + }; + + String classPath = "classes/" + name + ".class"; + + // Check common modules first + for (String module : modulesToCheck) { + byte[] result = loadFromModule(module, classPath); + if (result != null) { + return result; + } + } + + // If not found in common modules, check all jmod files + try (DirectoryStream stream = Files.newDirectoryStream(jmodDir, "*.jmod")) { + for (Path jmodPath : stream) { + String moduleName = jmodPath.getFileName().toString(); + if (!moduleCache.containsKey(moduleName)) { + byte[] result = loadFromModule(moduleName, classPath); + if (result != null) { + return result; + } + } + } + } + + return null; + } + + private byte[] loadFromModule(String moduleName, String classPath) throws IOException { + ZipFile zip = moduleCache.computeIfAbsent(moduleName, name -> { + try { + return new ZipFile(jmodDir.resolve(name).toFile()); + } catch (IOException e) { + return null; + } + }); + + if (zip != null) { + ZipEntry entry = zip.getEntry(classPath); + if (entry != null) { + try (InputStream in = zip.getInputStream(entry)) { + return in.readAllBytes(); + } + } + } + + return null; + } + + @Override + protected void finalize() throws Throwable { + // Close all cached ZipFiles + for (ZipFile zip : moduleCache.values()) { + if (zip != null) { + zip.close(); + } + } + super.finalize(); + } +} \ No newline at end of file diff --git a/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/util/JdkDownloader.java b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/util/JdkDownloader.java new file mode 100644 index 0000000..5168e4d --- /dev/null +++ b/dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/util/JdkDownloader.java @@ -0,0 +1,125 @@ +package dev.skidfuscator.obfuscator.util; + +import org.apache.commons.compress.archivers.tar.TarArchiveEntry; +import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; +import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; + +import java.io.IOException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +public class JdkDownloader { + private static final String OS; + private static final String JDK_URL; + + static { + // handle for all os + OS = System.getProperty("os.name").toLowerCase(); + + switch (OS) { + case "linux": + JDK_URL = "https://download.java.net/java/GA/jdk17.0.2/0d483333a00540d886896a45e7e18309295e7f3a/jdk-17.0.2_linux-x64_bin.tar.gz"; + break; + case "mac os x": + case "mac": + JDK_URL = "https://corretto.aws/downloads/resources/17.0.13.11.1/amazon-corretto-17.0.13.11.1-macosx-aarch64.tar.gz"; + break; + case "windows": + JDK_URL = "https://download.java.net/java/GA/jdk17.0.2/0d483333a00540d886896a45e7e18309295e7f3a/jdk-17.0.2_windows-x64_bin.zip"; + break; + default: + throw new IllegalStateException("Unsupported OS: " + OS); + } + } + + private static final Path CACHE_DIR = Paths.get(System.getProperty("user.home"), ".ssvm", "jdk"); + + public static Path getJdkHome() throws IOException { + String cacheName; + + switch (OS) { + case "linux": + cacheName = "jdk-17.0.2"; + break; + case "mac os x": + case "mac": + cacheName = "amazon-corretto-17.jdk"; + break; + case "windows": + cacheName = "jdk-17.0.2"; + break; + default: + throw new IllegalStateException("Unsupported OS: " + OS); + } + + Path jdkPath = CACHE_DIR.resolve(cacheName); + if (Files.exists(jdkPath)) { + System.out.println("JDK 17 already downloaded to " + jdkPath); + switch (OS) { + case "mac os x": + case "mac": + return jdkPath.resolve("Contents/Home"); + } + return jdkPath; + } + + System.out.println("JDK 17 not found in cache at " + jdkPath); + + Files.createDirectories(CACHE_DIR); + System.out.println("Downloading JDK 17..."); + + if (JDK_URL.endsWith(".zip")) { + try (ZipInputStream zis = new ZipInputStream(new URL(JDK_URL).openStream())) { + ZipEntry entry; + while ((entry = zis.getNextEntry()) != null) { + Path destPath = CACHE_DIR.resolve(entry.getName()); + if (entry.isDirectory()) { + Files.createDirectories(destPath); + } else { + Files.createDirectories(destPath.getParent()); + Files.copy(zis, destPath); + } + } + } catch (IOException e) { + Files.deleteIfExists(jdkPath); + throw e; + } + } else { + try (TarArchiveInputStream tis = new TarArchiveInputStream( + new GzipCompressorInputStream( + new URL(JDK_URL).openStream() + ))) { + TarArchiveEntry entry; + while ((entry = tis.getNextTarEntry()) != null) { + Path destPath = CACHE_DIR.resolve(entry.getName()); + if (entry.isDirectory()) { + Files.createDirectories(destPath); + } else { + Files.createDirectories(destPath.getParent()); + Files.copy(tis, destPath); + } + } + } catch (IOException e) { + Files.deleteIfExists(jdkPath); + throw e; + } + } + + System.out.println("JDK 17 downloaded to " + jdkPath); + + switch (OS) { + case "mac os x": + case "mac": + return jdkPath.resolve("Contents/Home"); + } + return jdkPath; + } + + public static String getJmodPath() throws IOException { + return getJdkHome().resolve("jmods").toString(); + } +} \ No newline at end of file diff --git a/dev.skidfuscator.obfuscator/src/test/java/dev/skidfuscator/test/vm/VmBootstrapTest.java b/dev.skidfuscator.obfuscator/src/test/java/dev/skidfuscator/test/vm/VmBootstrapTest.java new file mode 100644 index 0000000..1a28210 --- /dev/null +++ b/dev.skidfuscator.obfuscator/src/test/java/dev/skidfuscator/test/vm/VmBootstrapTest.java @@ -0,0 +1,69 @@ +package dev.skidfuscator.test.vm; + +import dev.skidfuscator.obfuscator.number.pure.ImagineBreaker; +import dev.skidfuscator.obfuscator.ssvm.JdkBootClassFinder; +import dev.skidfuscator.obfuscator.ssvm.JdkClassDefiner; +import dev.skidfuscator.obfuscator.util.JdkDownloader; +import dev.xdark.ssvm.VirtualMachine; +import dev.xdark.ssvm.api.MethodInvoker; +import dev.xdark.ssvm.classloading.*; +import dev.xdark.ssvm.execution.ExecutionContext; +import dev.xdark.ssvm.execution.Result; +import dev.xdark.ssvm.execution.VMException; +import dev.xdark.ssvm.mirror.type.InstanceClass; +import dev.xdark.ssvm.value.InstanceValue; +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +public class VmBootstrapTest { + @Test + public void testBoot() throws IOException { + ImagineBreaker.openBootModules(); + + VirtualMachine vm = new VirtualMachine() { + @Override + protected BootClassFinder createBootClassFinder() { + try { + return new JdkBootClassFinder(RuntimeBootClassFinder.create()); + } catch (IOException e) { + throw new RuntimeException("Failed to create JDK class definer", e); + } + } + }; + + + // Set JDK 17 specific properties + vm.getProperties().put("java.version", "17.0.2"); + vm.getProperties().put("java.class.path", ""); + + try { + vm.initialize(); + InstanceClass jdk_internal_module_ModuleBootstrap = (InstanceClass) vm.findBootstrapClass("jdk/internal/module/ModuleBootstrap"); + vm.getInterface().setInvoker( + vm.getSymbols().java_lang_System(), "initPhase2", "(ZZ)I", + ctx -> { + ctx.setResult(0); + return Result.ABORT; + } + ); + vm.getInterface().setInvoker( + jdk_internal_module_ModuleBootstrap, "boot", "()V", + MethodInvoker.noop() + ); + vm.bootstrap(); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof VMException) { + InstanceValue oop = ((VMException) cause).getOop(); + if (oop.getJavaClass() == vm.getSymbols().java_lang_ExceptionInInitializerError()) { + oop = (InstanceValue) vm.getOperations().getReference(oop, "exception", "Ljava/lang/Throwable;"); + } + cause.printStackTrace(); + vm.getOperations().toJavaException(oop).printStackTrace(); + } else { + throw ex; + } + } + } +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5b31b01..9355b41 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -gradle.publish.key=MWBasmHJWf7vbXU6rKeT07cRfXIshv5C -gradle.publish.secret=1nhGe7kmqKJfxmo1PZjjpCSo2ALAYF2X \ No newline at end of file diff --git a/gradlew b/gradlew index 1b6c787..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +82,12 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +134,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +217,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 107acd3..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,8 +13,10 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +27,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/org.mapleir.parent/org.mapleir.ir/build.gradle b/org.mapleir.parent/org.mapleir.ir/build.gradle index 0a05a39..6694139 100644 --- a/org.mapleir.parent/org.mapleir.ir/build.gradle +++ b/org.mapleir.parent/org.mapleir.ir/build.gradle @@ -9,7 +9,7 @@ dependencies { api project(':app-services') api 'org.apache.commons:commons-lang3:3.12.0' testImplementation 'junit:junit:3.8.2' - compileOnly 'org.projectlombok:lombok:1.18.24' + compileOnly 'org.projectlombok:lombok:1.18.36' } diff --git a/org.mapleir.parent/org.mapleir.ir/src/main/java/org/mapleir/ir/codegen/ControlFlowGraphDumper.java b/org.mapleir.parent/org.mapleir.ir/src/main/java/org/mapleir/ir/codegen/ControlFlowGraphDumper.java index 26029f7..10657d4 100644 --- a/org.mapleir.parent/org.mapleir.ir/src/main/java/org/mapleir/ir/codegen/ControlFlowGraphDumper.java +++ b/org.mapleir.parent/org.mapleir.ir/src/main/java/org/mapleir/ir/codegen/ControlFlowGraphDumper.java @@ -356,7 +356,7 @@ private static class BundleGraph extends FastDirectedGraph implements FastGraphVertex { private BasicBlock first = null; - private BasicBlock getFirst() { + public BasicBlock getFirst() { if (first == null) first = get(0); return first;