soot-oss / soot

Soot - A Java optimization framework
GNU Lesser General Public License v2.1
2.86k stars 705 forks source link

Bad use of primitive type(int) #646

Closed xwlin-roy closed 7 years ago

xwlin-roy commented 7 years ago

Hi,all I did instrumentation in apks,but encountered a problem.My steps:

` public void test(int index) {

    int i = randomArr[index];
}

`

The left of picture was jimple generated form apk,the other was I used soot's api to construct.

Stack trace:

Warning: Bad use of primitive type at $i0 = $r1[$i0] in  in 
    at soot.validation.CheckTypesValidator.checkCopy(CheckTypesValidator.java:95)
    at soot.validation.CheckTypesValidator.validate(CheckTypesValidator.java:45)
    at soot.Body.validate(Body.java:258)
    at soot.jimple.JimpleBody.validate(JimpleBody.java:120)
    at soot.jimple.JimpleBody.validate(JimpleBody.java:110)
    at soot.PackManager.runBodyPacks(PackManager.java:988)
    at soot.PackManager.access$000(PackManager.java:138)
    at soot.PackManager$1.run(PackManager.java:633)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

Command line:

-android-jars D:\AndroidSDK\platforms -src-prec apk -f jimple -allow-phantom-refs -validate true -include-all -cp D:\Program Files\Java\jdk1.7.0_55\jre\lib\rt.jar;D:\AndroidSDK\platforms\android-21\android.jar;E:\Users\SongJun\workspace\Soot\InstrumentationMap -process-dir F:\Master\AndroidSecurity\APK\app-debug.apk -force-overwrite
xwlin-roy commented 7 years ago

Thank you Marc. @MarcMil According to Marc,I use RefType.v("int") to generate array local,which is wrong. Int isn't a reference type,use IntType.v() instead. This issue has solved,I close it.