1、AnalyzeAPK(filename) 加载文件开始分析
$ androguard analyze
Androguard version 3.1.1 started
In [1]: a, d, dx = AnalyzeAPK("examples/android/abcore/app-prod-debug.apk")
# Depending on the size of the APK, this might take a while...
In [2]:
1) a 表示apk对象,通过apk对象,我们获取到apk包的信息。比如,包名、权限、AndroidManifest.xml、resources
(AndroidManifest是应用清单,每个应用的根目录中都必须包含一个,并且文件名必须一模一样。它包含了app的配置信息,系统需要根据里面的内容运行APP的代码,显示界面)
2) d 表示DalvikVMFormat对象数组。DalvikVMFormat对应apk文件中的dex文件,从dex文件中我们可以获取类、方法和字符串
3)dx 表示Analysis对象,包含特殊的类,这些类链接了关于classes.dex的信息,甚至可以一次处理许多DEX文件
(dex文件:Dalvik字节码文件,是一种能够被Dalvik虚拟机(DVM:Dalvik Virtual Machine)或者Art虚拟机执行并且加载的文件格式。)
注:dex 与 class

2、根据返回对象获取apk信息
A> APK 对象
1)a.get_permissions() //apk 权限获取
2)a.get_activities() //获取定义在AndroidManifest.xml中的活动列表
3)a.get_package() //获取包名
3) a.get_app_name() //获取app 名
4)a.get_app_icon() //获取icon path
5)a.get_androidversion_code() //numeric version
6)a.get_androidversion_name() //字符串version
//the minimal, maximal, target and effective SDK version
7)a.get_min_sdk_version()
8)a.get_max_sdk_version()
9)a.get_target_sdk_version()
10)a.get_effective_target_sdk_version()
11) a.get_android_manifest_axml().get_xml() //AndroidManifest.xml
12) a.get_android_manifest_xml() //AndroidManifest.xml的 ElementTree 对象
B> Analysis对象
Analysis object 包含在DEX文件中classes, methods, fields and strings中的所有信息,同时还可以获取graphs和 crossreferences (XREFs) 为每一个 method, class, field和 string.(可以研究特定API调用的应用程序或者创建图形来查看不同类的依赖关系)
1)analysis.ClassAnalysis //返回a list of ClassAnalysis objects
注:有些版本返回的是dict_value 类型,通过下标访问时需通过list()强转
2)dx.get_classes()[2].get_vm_class() //ClassAnalysis不包含实际的代码,但ClassDefItem可以使用get_vm_class()来加载
//如果类是EXTERNAL, 则返回a ExternalClass.
本文介绍使用Androguard分析APK文件的方法,包括如何加载APK进行分析,解析APK对象、DalvikVMFormat对象及Analysis对象,以及如何通过这些对象获取应用权限、活动列表、包名、版本信息等关键数据。
2973

被折叠的 条评论
为什么被折叠?



