androguard中androdd文件名过长bug

1 篇文章 0 订阅
1 篇文章 0 订阅

最近做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文件。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值