hanada31 / ICCBot

ICCBot: A Fragment-Aware and Context-Sensitive ICC Resolution Tool for Android Applications
36 stars 10 forks source link

[Bug]: RuntimeException when analyzing APK #15

Open LightningRS opened 2 years ago

LightningRS commented 2 years ago

Contact Details

No response

ICCBot Command Line

java -jar "/home/user/ICCBot/ICCBot.jar" -path "/home/user/dataset/APKs" -name "dataset2-Google_Chrome_Fast_Secure58.0.3029.83.apk" -androidJar "/home/user/ICCBot/lib/platforms" -time 2880 -noLibCode -maxPathNumber 100 -client ICCSpecClient -outputDir "/home/user/dataset/ICCResult"

Technical Details

When using ICCBot to analyze APK [dataset2-Google_Chrome_Fast_Secure58.0.3029.83.apk], it crashed at the very beginning and produced error log.

APK File

https://drive.google.com/file/d/1pHJhsgqdwJ-4Hn-XGmOxkthfCXpZ8bAd/view?usp=sharing

Version of ICCBot

1.0-stable & 1.1-SNAPSHOT

Version of Java

Oracle JDK 18.0.2.1

Relevant log output

Exception in thread "Thread-37" java.lang.RuntimeException: NOT POSSIBLE StringConstant or NewExpr at $u0#19[$u2#25] = "_data"
    at soot.dexpler.DexIfTransformer$2.caseAssignStmt(DexIfTransformer.java:313)
    at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:242)
    at soot.dexpler.DexIfTransformer.internalTransform(DexIfTransformer.java:190)
    at soot.BodyTransformer.transform(BodyTransformer.java:55)
    at soot.BodyTransformer.transform(BodyTransformer.java:59)
    at soot.dexpler.DexBody.jimplify(DexBody.java:751)
    at soot.dexpler.DexMethod$1.getBody(DexMethod.java:120)
    at soot.SootMethod.retrieveActiveBody(SootMethod.java:402)
    at soot.PackManager$1.run(PackManager.java:1279)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
java.lang.RuntimeException: NOT POSSIBLE StringConstant or NewExpr at $u0#19[$u2#25] = "_data"
    at soot.dexpler.DexIfTransformer$2.caseAssignStmt(DexIfTransformer.java:313)
    at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:242)
    at soot.dexpler.DexIfTransformer.internalTransform(DexIfTransformer.java:190)
    at soot.BodyTransformer.transform(BodyTransformer.java:55)
    at soot.BodyTransformer.transform(BodyTransformer.java:59)
    at soot.dexpler.DexBody.jimplify(DexBody.java:751)
    at soot.dexpler.DexMethod$1.getBody(DexMethod.java:120)
    at soot.SootMethod.retrieveActiveBody(SootMethod.java:402)
    at soot.PackManager$1.run(PackManager.java:1279)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
The analysis is stopped, caused by NOT POSSIBLE StringConstant or NewExpr at $u0#19[$u2#25] = "_data"
LightningRS commented 2 years ago

This bug is also exists in 1.1-SNAPSHOT version, which seems related to FlowDroid. It's difficult to solve at this point.