【Android安全】Soot 静态分析教程

本文详细介绍了在Windows和Linux环境下配置Soot的步骤,包括解决Gradle版本不兼容和AndroidSDK路径缺失的问题。此外,还展示了如何生成Android应用的Callgraph以及添加新功能,如AndroidReachMethod,并提供了相应的命令行参数示例。
摘要由CSDN通过智能技术生成

参考教程

https://github.com/noidsirius/SootTutorial

1. Windows Soot 环境配置

下载代码

git 拷贝仓库

git init
git clone https://github.com/noidsirius/SootTutorial.git
./gradlew.bat build

报错:Unsupported class file major version 57

./gradlew.bat build时,报错如下:

* What went wrong:
Could not compile settings file 'E:\AcademicWorkplace\Soot\Soot1\SootTutorial\settings.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57

原因:
这是因为Gradle 5 is incompatible with Java 13

需要:
或者update Gradle (the wrapped version in your project) to Gradle 6 or later
或者use a lower version of the JRE

解决方法:
需要进入\SootTutorial\gradle\wrapper
修改gradle-wrapper.properties
改为:distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

参考:https://stackoverflow.com/a/63548566

报错:\Library\Android\sdk\platforms does not exist!

./gradlew.bat build时,报错如下:
例如

dev.navids.soottutorial.android.CGPTATest > testPointsToAnalysis FAILED
    soot.AndroidPlatformException: Android platform directory 'C:\Users\juruo\Library\Android\sdk\platforms' does not exist!

原因:
Soot代码中使用了Android-SDK,但是系统环境变量中没有"ANDROID_HOME"
例如AndroidCallgraph.java中:
在这里插入图片描述
解决方法:
添加系统环境变量:
在这里插入图片描述

build成功

./gradlew.bat build

在这里插入图片描述

2. Linux Soot 环境配置

build报错:-bash: ./gradlew: Permission denied

$ ./gradlew build
-bash: ./gradlew: Permission denied

解决:

chmod +x gradlew

3. 生成Android app的call graph

命令格式:

./gradlew.bat run --args="AndroidCallGraph <CG_Algorithm> (draw)"

例如:

./gradlew.bat run --args="AndroidCallGraph SPARK draw"

首先会进入Main.java
位于\SootTutorial\src\main\java\dev\navids\soottutorial\Main.java
会根据"AndroidCallGraph"调用到AndroidCallgraph.main方法。
AndroidCallgraph.main方法的参数为--args中除了"AndroidCallGraph"以外的其余部分。
在这里插入图片描述
AndroidCallgraph.main方法在AndroidCallgraph.java

在这里插入图片描述

Example APK在/SootTutorial/demo/Android/st_demo.apk
结果:
在这里插入图片描述
每次修改代码后,要重新运行一次./gradlew.bat build

添加功能

创建
\SootTutorial\src\main\java\dev\navids\soottutorial\android\AndroidReachMethod.java
在这里插入图片描述
写AndroidReachMethod.main方法:

// ./gradlew.bat run --args="AndroidReachMethod <CG_Algorithm> <apkPath> <apkMainActivityName> <targetMethodCls> <targetMethodRet> <targetMethodName>"

在这里插入图片描述
此处省略具体代码

改Main.java:

在这里插入图片描述
在这里插入图片描述
测试

./gradlew.bat build
./gradlew.bat run --args="AndroidReachMethod SPARK E:\AcademicWorkplace\DeviceIntegrity\LargeScalScan\testCase\st_demo.apk dev.navids.multicomp1.MainActivity dev.navids.multicomp1.ClassParent void unreachableMethod()"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值