androguard中androdd文件名过长bug

来源:互联网 发布:数控加工中心编程100例 编辑:程序博客网 时间:2024/06/08 16:23

最近做android应用的分析,用到了androguard。这是一个相当强大的android逆向工程和静态分析工具,使用python编写,其中的androdd.py用来生成apk文件的每个类的方法调用图,可以生成png,jpg以及dot文件。

在这里有一个bug,由于androdd.py中使用如下方法生成文件名:

filename = output_name + valid_class_name( method.get_class_name() )

部分文件名(尤其是android内核自带方法生成的文件)长度很长,而Linux系统对文件名长度限制为256,造成程序终止,如下图:


解决方法很直接,在执行前判断文件名的长度,手动设置一个上限:

if len(filename) >= 128:    filename = filename[0:128]

这里没有设置256,因为还要实际长度还要加上文件路径。

另外,其实自己写的方法不会有这么深的路径,因此文件名也不会这么长,而且分析的时候主要分析的是应用程序的代码,而不希望生成android自带的代码块(这也很浪费时间),因此如果只希望生成与应用程序相关的代码,则可加上一句判断:

if valid_class_name( method.get_class_name() )[0:7] != "android":    ......

这样也基本不会发生文件名过长问题。

最终生成的png分析图例子如下:


可通过程序操作获取生成的dot文件。


0 0
原创粉丝点击