apk解析工具
apk_parse_ph4的Python项目详细描述
APK分析
- 引用androguard。
- 叉子apk_parse
- 添加了对xapks的部分支持(嵌套apk)
点
pip install apk_parse_ph4
安装MacOS X
如果在Mac上安装m2crypto有问题,请尝试以下操作:
brew install openssl brew install swig env LDFLAGS="-L$(brew --prefix openssl)/lib"\ CFLAGS="-I$(brew --prefix openssl)/include"\ SWIG_FEATURES="-cpperraswarn -includeall -I$(brew --prefix openssl)/include"\ pip install m2crypto
或
LDFLAGS="-L/opt/local/lib"\ CFLAGS="-I/opt/local/include"\ SWIG_FEATURES="-cpperraswarn -includeall -I/opt/local/include"\ pip install --user m2crypto
示例:
apkf=APK("myfile.apk")apkf=APK(read("myfile.apk"),raw=True)
扩展示例:
下面的示例在单独的调用中处理apk。作为文件名设置为true会导致文件 不是全部读取到内存中,但是如果需要的话,它作为一个文件压缩模块确实会查找。以这种方式 可以处理大的apk(例如1.5gb)。temp_dir选项允许APK处理器使用临时目录,例如 对于xapk格式,需要解析sub-apk:
apkf=APK(apk_path,process_now=False,process_file_types=False,as_file_name=True,temp_dir='/tmp')apkf.file_md5='abcd0102037292'# skips MD5 recomputing (if already computed during download)apkf.process()
包装
返回包的名称
>>> apkf.package com.android.vending >>> apkf.get_package() com.android.vending
文件
返回apk的md5文件
>>> apkf.file_md5 40bdd920a3a3d2acf432e3c5b485eb11
证书MD5
返回APK的证书MD5
>>> apkf.cert_md5 cde9f6208d672b54b1dacc0b7029f5eb
文件大小
返回APK文件大小
>>> apkf.file_size 11194863
androidversion
返回APK版本
>>> apkf.androidversion {'Code': u'80341200', 'Name': u'5.4.12'}
获取androidversion\u code()
返回Android版本代码
>>> apkf.get_androidversion_code() 80341200
获取androidversion\u name()
返回Android版本名
>>> apkf.get_androidversion_name() 5.4.12
获取最新sdk版本()
返回android:minsdkversion属性
>>> apkf.get_min_sdk_version() 9
获取目标sdk版本()
返回android:targetsdkversion属性
>>> apkf.get_target_sdk_version() 21
获取库()
返回库的android:name属性
>>> apkf.get_libraries() []
获取文件()
返回APK中的文件
>>> apkf.get_files() [u'AndroidManifest.xml', u'assets/keys/dcb-pin-encrypt-v1/1',...]
获取文件类型()
返回apk中的文件及其相关类型(通过使用 python magic)请pip install python-magic
>>> apkf.get_files_types() {u'res/layout/play_card_bundle_item_small.xml': "Android's binary XML",...}
获取主要活动()
返回主活动的名称
>>> apkf.get_main_activity() com.android.vending.AssetBrowserActivity
获取活动()
返回所有活动的android:name属性
>>> apkf.get_activities() ['com.android.vending.AssetBrowserActivity', ...]
获取服务()
返回所有服务的android:name属性
>>> apkf.get_services() ['com.android.vending.GCMIntentService', ...]
获取接收器()
返回所有接收器的android:name属性
>>> apkf.get_receivers() ['com.google.android.gcm.GCMBroadcastReceiver', ...]
获取提供者()
返回所有提供程序的android:name属性
>>> apkf.get_providers() ['com.google.android.finsky.providers.RecentSuggestionsProvider', ...]
获取权限()
返回权限
>>> apkf.get_permissions() ['com.android.vending.permission.C2D_MESSAGE', ...]
显示()
返回文件、权限、主要活动…
>>> apkf.show() FILES: ...
解析图标()
解析APK的图标,存储在图标路径上
>>> apkf.parse_icon(icon_path='/tmp') ...
证书文本
以文本形式返回开发人员证书
>>> apkf.cert_text Certificate: Data:Version: 3 (0x2) ...
认证
以PEM形式返回开发人员证书
>>> apkf.cert_pem -----BEGIN CERTIFICATE----- ...
第7包
以DER格式返回签名文件(包含签名和证书)
>>> apkf.pkcs7_der (binary data)