apk解析工具

apk_parse_ph4的Python项目详细描述


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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何让ruby和maven协同工作   如何从Java代码中调用Excel VBA宏?   java是公共类的默认成员   java Android TextToSpeech总是无法运行   导入JAVA包的类不存在   java中有很多JSP/Servlet应用程序示例,为什么是。使用inc扩展代替。包含的jsp?   tomcat向JavaWebApp添加JAR   java如何在MySQL中向表中插入变量   java在Spring web app中找不到类[org.springframework.scheduling.quartz.SchedulerFactoryBean]   swing Java GUI布局建议   java Google HTTP库JSON解析,空值默认为True   java使用Eclipse和Apache Tomcat 9.0开发聊天机器人   java我可以使用vmware软件包更改虚拟机的IP地址吗?   java在单击“后台运行”后返回进度监视器对话框   java uibinder onload not调用   java Spring数据分页和排序存储库的工作原理