[Soot-list] Android instrumentation

Jin Li lijin1988 at gmail.com
Tue Jul 22 22:26:08 EDT 2014


Hi Peter,
Soot introduced Dexpler to convert Dalvik bytecode to Jimple. So source
code is not needed. You can read this paper: Dexpler: Converting Android
Dalvik Bytecode to Jimple for Static Analysis with Soot.

In practice, you don't need to include rt.jar manually if you set the java
classpath and soot classpath properly.
In order to make it distinguished from the classpaths in my system, I set
classpath like that:
java -cp .;soot.jar AndroidInstrument -android-jars path-to-android-jar
-allow-phantom-refs -process-dir path-to-apk -soot-classpath .;<path-to-sdk>

Best Regards,
Jin





2014-07-23 2:56 GMT+08:00 Peter Kim <chpkim at gmail.com>:

> Hello,
>
> I'm trying to run AndroidInstrument.java (
> http://www.bodden.de/2013/01/08/soot-android-instrumentation/) against
> snake.apk (http://www.abartel.net/dexpler/), using the following
> arguments:
>
> -cp "c:\rt.jar;c:\android.jar;C:\snake.apk" -d C:\sootoutput -android-jars
> C:\androidjars -allow-phantom-refs -ire -process-dir C:\snake.apk
> -output-format dex -src-prec apk
>
> But I'm running into the following problems:
>
> Could not find sdk version in Android manifest! Using default: 15
> Using 'C:\androidjars\android-15\android.jar' as android.jar
> Warning: libcore.icu.NativePluralRules is a phantom class!
> Warning: org.xmlpull.v1.XmlPullParserException is a phantom class!
> Warning: org.xmlpull.v1.XmlPullParser is a phantom class!
> Warning: javax.microedition.khronos.opengles.GL is a phantom class!
> array element type: (filled narr)int
> Transforming com.example.android.snake.SnakeView...
> Transforming com.example.android.snake.SnakeView$RefreshHandler...
> Transforming com.example.android.snake.SnakeView$Coordinate...
> Transforming com.example.android.snake.R$attr...
> Transforming com.example.android.snake.R$string...
> Transforming com.example.android.snake.R$drawable...
> Transforming com.example.android.snake.R$styleable...
> Transforming com.example.android.snake.R$layout...
> Transforming com.example.android.snake.TileView...
> Transforming com.example.android.snake.Snake...
> Transforming com.example.android.snake.R$id...
> Transforming com.example.android.snake.R...
> Exception in thread "main" java.lang.RuntimeException: No method source
> set for method <com.example.android.snake.SnakeView: void
> setFocusable(boolean)>
>  at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:90)
> at soot.SootMethod.retrieveActiveBody(SootMethod.java:324)
>  at soot.toDex.DexPrinter.toMethodImplementation(DexPrinter.java:808)
> at soot.toDex.DexPrinter.toMethods(DexPrinter.java:744)
>  at soot.toDex.DexPrinter.addAsClassDefItem(DexPrinter.java:460)
> at soot.toDex.DexPrinter.add(DexPrinter.java:1047)
>  at soot.PackManager.writeClass(PackManager.java:983)
> at soot.PackManager.writeOutput(PackManager.java:592)
>  at soot.PackManager.writeOutput(PackManager.java:500)
> at soot.Main.run(Main.java:206)
> at soot.Main.main(Main.java:147)
>  at
> com.example.androidtest1.AndroidInstrument.main(AndroidInstrument.java:83)
>
> My understanding is that the source code shouldn't be needed. Also, I'm
> not sure why, but if  I don't include rt.jar in Soot's classpath, then
> java.lang.* classes are not picked up, even if android.jar is included in
> the classpath (shouldn't android.jar have the java.lang.* classes?).
>
> I appreciate your help.
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140723/ffbb7310/attachment.html 


More information about the Soot-list mailing list