2022/4/2 更新FlowDroid环境配置-windows
环境变量
电脑上有adnroid studio自带的sdk platforms工具
作者写的很明白
EXPORT ANDROID_JARS=Android JAR folder #windows路径\AppData\Local\Android\Sdk\platforms\android-32\android.jar
EXPORT DROIDBENCH=DroidBench folder #不想编译测试官方样本的话不用配置
安装 maven,配置好本地仓库和settings.xml,我安的3.8.5,就改了本地仓库位置,源没动,公司网不错。
命令行工具
最简单,直接就能运行
java -jar soot-infoflow-cmd/target/soot-infoflow-cmd-jar-with-dependencies.jar \ -a <APK File> \ -p <Android JAR folder platforms路径\AppData\Local\Android\Sdk\platforms\> \ -s <SourcesSinks file>
例如:
java -jar soot-infoflow-cmd-2.9.0-jar-with-dependencies.jar \ -a enriched1.apk \ -p C:\Users\silver\AppData\Local\Android\Sdk\platforms \ -s SourcesAndSinks.txt
使用maven构建
ida创建好maven工程后,在pom.xml中添加下面的仓库就行。
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-summaries</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-android</artifactId>
<version>2.10.0</version>
</dependency>
</dependencies>
提示缺少junit加上就行
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-summaries</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-android</artifactId>
<version>2.10.0</version>
</dependency>
重新刷新下载,没有问题,外部库加载上了
编写一个检测apk基本信息的程序
点击查看代码
public class App
{
private static String apkPath = "G:\\TEST\\11.apk";
public static void main(String[] args) throws IOException, XmlPullParserException {
ProcessManifest processManifest = new ProcessManifest(apkPath);
//获取包名
System.out.println("packagename:" + processManifest.getManifest().getAttribute("package"));
Iterator<BinaryManifestActivity> itact = processManifest.getActivities().iterator();
while (itact.hasNext()) {
String name = itact.next().getNameString();
System.out.println("activity: " + name);
}
Iterator<BinaryManifestService> itser = processManifest.getServices().iterator();
while (itser.hasNext()) {
String name = itser.next().getNameString();
System.out.println("services: " + name);
}
Iterator<BinaryManifestBroadcastReceiver> itrec = processManifest.getBroadcastReceivers().iterator();
while (itrec.hasNext()) {
String name = itrec.next().getNameString();
System.out.println("receives: " + name);
}
Iterator<BinaryManifestContentProvider> itpro = processManifest.getContentProviders().iterator();
while (itpro.hasNext()) {
String name = itpro.next().getNameString();
System.out.println("providers: " + name);
}
Iterator<String> itper = processManifest.getPermissions().iterator();
while (itper.hasNext()) {
String name = itper.next();
System.out.println("Permissions: " + name);
}
Iterator<AXmlNode> itInt = processManifest.getLaunchableActivityNodes().iterator();
while (itInt.hasNext()) {
String name = itInt.next().toString();
System.out.println("Intent" + name);
}
System.out.println(processManifest.getMinSdkVersion());
System.out.println(processManifest.getTargetSdkVersion());
}
}
部分运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架