Androguard的androdd.py模块在使用过程中可能遇到的问题
来源:互联网 发布:数据库减少了数据冗余 编辑:程序博客网 时间:2024/05/29 03:26
androguard主要用来进行静态分析,提供了一组工具包(py文件),辅助分析人员快速分析APK文件 ,其中 androdd.py用于生成apk文件中每个类的方法的调用流程图,可以选择生成.dot格式的,另外还可以是PNG和JPG中的一种,但是在使用过程中可能会遇到如下问题:
1、AttributeError: ‘Dot’ object has no attribute ‘write_PNG’
具体如下图所示:
解决办法:在Wiki上提示的选择图形格式时“-f PNG”使用的大写字母,实际运行时发现会报如图所示的错误。这是因为选择不论png还是jpg都会和write拼成一个函数,而这个函数是小写的,所以png或者jpg必须用小写的才行。
2、IOError: [Errno 36] File name too long: ‘./out/android/support/v4/app/NotificationCompatHoneycomb/add-Landroid_content_ContextLandroid_app_NotificationLjava_lang_CharSequenceLjava_lang_CharSequenceLjava_lang_CharSequenceLandroid_widget_RemoteViewsILandroid_app_PendingIntentLandroid_app_PendingIntentLandroid_graphics_Bitmap-Landroid_app_Notification.png’
具体如下图所示:
解决办法:这是因为android自带方法生成的调用流程图文件的文件名长度过长(Linux系统的文件名长度限制为256),从而造成程序终止。可以通过修改androdd.py的代码来解决这个问题。
在androdd.py文件中,通过如下代码生成文件名:
filename = output_name + valid_class_name( method.get_class_name() )
因此,可以通过设置一个文件名长度上限,如128,并在执行前判断文件名的长度,如果文件名不超过上限,就继续操作,否则截取文件名:
if len(filename) >= 128: filename = filename[0:128]
另外,在分析代码的时候主要分析的是应用程序的代码,因此如果只希望生成与应用程序相关的代码的调用流程图,而不希望生成android自带的代码块的调用流程图(这也很浪费时间),则可加上一句判断:
if valid_class_name( method.get_class_name() )[0:7] != "android": ......
最终代码如下图所示:
我解决上述问题之后,顺利生成的png分析图例子如下:
参考博客:
http://blog.csdn.net/clasnake/article/details/18089089
- Androguard的androdd.py模块在使用过程中可能遇到的问题
- TensorFlow 初学者在使用过程中可能遇到的问题及解决办法
- [转]TensorFlow 在使用过程中可能遇到的问题及解决办法
- TensorFlow 初学者在使用过程中可能遇到的问题及解决办法(转)
- androguard中androdd文件名过长bug
- ubuntu 使用过程中可能遇到的问题,和所需要用到的情况设置
- SQL server安装过程中可能遇到的问题
- hadoop环境配置过程中可能遇到问题的解决方案
- 苹果面试过程中求职者可能遇到的问题
- hadoop环境配置过程中可能遇到问题的解决方案
- hadoop环境配置过程中可能遇到问题的解决方案
- 安装skyeye1.3.3 过程中可能遇到的问题
- iOS app上架过程中可能遇到的问题
- Android开发过程中可能遇到的问题
- hadoop环境配置过程中可能遇到问题的解决方案
- 安装ubuntu16.04过程中可能遇到的问题
- 安装使用过程中可能遇到的问题解决办法
- OSG新手使用过程中可能遇到的坑
- Spring Boot + Spring Security + Thymeleaf 举例
- HDU1241-Oil Deposits
- ZBar移植到ARM
- Java8 lambda表达式10个示例
- import Error: No module named mock
- Androguard的androdd.py模块在使用过程中可能遇到的问题
- 功能强大的全新 T-SQL 语法极大地提升了 SQL Server 的可编程性
- Linux安装Redis
- 洛谷P1854 花店橱窗布置 分析+题解代码
- 慕课网bootstrap笔记------1------
- MySql数据库
- Hadoop集群安装 无法检测根权限 解决
- C语言中的 联合体 union 说明
- 在Windows平台下自己生成crt证书