开源静态分析工具androguard体验(二)

逆向分析dex的话,个人还是比较中意VTS,JEB(穷人买不起),IDA等。之前有尝试使用过androguard,感觉还是不咋习惯,虽然基于其基础上演变的一些项目挺有吸引力。不过作为项目的基础,androguard确实再适合不过了。至少静态分析很多功能直接调用或者在其上修改效果倒是事半功倍。也正因为这个目的,才有了第二篇体验。

其实官网的wiki写的很详细了,包括一些使用方法,api参考,都挺丰富的。但是官网提供的demo不多,我觉得通过对androlyze.py的一些常见功能的使用,可以帮助我们完善程序demo。这一篇主要内容正是介绍androlyze.py的一些使用样例,官网 wiki http://code.google.com/p/androguard/wiki/RE

这次采用的样本还是之前第一篇分析的。这次借助分析触发sendsms的条件作为例子,记录一下关于androlyze.py部分的一些常用函数。

首先,./androlyze.py -s 进入交互分析界面

1. apk, d, dx = AnalyzeAPK("./sampleapk/ee6bcd35c.apk",decompiler="dad") 开启分析模式吧,接着先查看对应apk使用了哪些权限,可以采用 apk.get_permissions() 获取权限

2.知道可能使用的权限之后,我们接下来看看对应权限时候有使用吧,这时候可以用 show_Permissions(dx) 查看对应权限的使用点

内容比较多,我就列出SENDSMS的部分

根据输出我们可以知道,Lcom/zsh/RegService;->sendSms()V 是对应SEND_SMS权限使用点。

3.这时候可以使用d.CLASS_Lcom_zsh_RegService.METHOD_sendSms.source() 查看对应源代码,确实使用了发短信的函数。

4.接下来我们就要根据这个使用点找到之前的调用点,一步一步回溯找到触发这个时间的入口点可以使用 d.CLASS_Lcom_zsh_RegService.METHOD_sendSms.show_xref() 查找这个函数的调用关系,有的步骤直接省略了,组后找到是由MainTask线程触发的。

那么最后是那个函数调用了这个线程呢,由于这是了run,写过代码都知道,一般是创建了线程对象之后,start开始的,这是后run才启用,那么我们就找一下创建该线程对象的调用点吧。

确定了是由这个服务的回调产生的,那么确定一下这个类是不是真的是服务吧。

这么一条命令可以查看对应的类信息。可以看出确实是继承Service的。

5.走到这一步了,剩下就是考虑是那个intent触发这个service的,从androidmenifest开始吧,使用命令,可以通过 x = apk.xml xml = x[‘AndroidManifest.xml‘] 以及

In [109]: for e in xml.getElementsByTagName(‘service‘):

.....: print e.toxml() 获取service信息

6.可以想象会有一个intent,他的action为com.zsh.action.regservice,那么我们就开始查找对应的字符串引用吧 z = dx.tainted_variables.get_string(‘com.zsh.action.regservice‘)

7.最后我们发现 apk.get_main_activity() 正是入口

那么我们关于这个程序的短息调用路径大致摸清楚了~

开源静态分析工具androguard体验(二)

时间: 2024-10-11 04:23:12

开源静态分析工具androguard体验(二)的相关文章

开源静态分析工具androguard体验

原文链接:http://blog.csdn.net/xbalien29/article/details/21885297 虽然在windows端免费版的IDA.VTS等工具都可用来静态分析,但相对来说这些工具用来人工分析在合适不过,但对于项目开发,相对来说都忽视很好扩展.而在androguard却很适合进行扩展或者移植成为自己项目的某一模块,虽然早有耳闻,但也最近才动手体验几把.当然,androguard也被很多人再次开发过了,包括一些提供上传入口的检测网站,静态分析部分感觉都有使用该模块,很多

主流开源开发者工具落地阿里云,进一步提升开发者体验

摘要: 在云计算大数据时代,企业的不断上云,业务的不断发展,技术架构的不断演进,导致资源.应用和数据的管理成本不断增加,运维难度不断加大.业务场景的不断和复杂和变化,不得不引起我们更多的思考: 在云计算大数据时代,企业的不断上云,业务的不断发展,技术架构的不断演进,导致资源.应用和数据的管理成本不断增加,运维难度不断加大.业务场景的不断和复杂和变化,不得不引起我们更多的思考: 业务基础设施架构如此复杂,是否可以实现一键搭建?自定义云镜像,能否实现批量生产?数据安全,是企业和个人最关心的事儿- A

十二个开源UML工具推荐

开源UML工具这些年发展的不错,以前那个连付费的商业UML工具也很少见的时代早已经过去.本文介绍了12个开源UML工具,功能各有一些不同,希望对读者有些帮助. AD: UML面向对象建模知识简介 UML对象关系学习总结 五个免费UML建模工具推荐 使用UML类图进行Java应用程序设计 UML基础: 统一建模语言简介 [51CTO快译]51CTO之前曾介绍过几个免费UML建模工具.本文再介绍几个免费的开源UML工具. 1. StarUML StarUML是一个开源UML项目,可以开发快速,灵活,

Jenkins集成源码静态分析工具

1.static code analysis插件说明 Jenkins提供了插件"static code analysis",该插件搜集不同的分析结果,并集合显示出来. 实际上,我们可以认为static code analysi和FindBugs等插件组成了一个静态分析代码的套件.仅仅安装static code analysis是不够的,还需要安装其他插件(如FindBugs),才能正确工作. 2.static code analysis支持哪些插件? 官方文档:https://wiki

开源JDBC工具类DbUtils

本篇将会详细地介绍Apache公司的JDBC帮助工具类DbUtils以及如何使用.在上一篇中我们已经通过将以前对dao层使用JDBC操作数据库的冗余代码进行了简易封装形成自己的简单工具类JdbcUtils,而在这过程中很多都是借鉴和参考了DbUtils的代码,因此通过上一篇的学习,会让我们在对DbUtils进行更快速简单的认识. 俗话说学习一个开源的工具最好的方法就是看其官方文档,是的,在Apache官网中对DbUtils进行了详细的介绍:http://commons.apache.org/pr

一款C++静态分析工具 —— CppDepend

Wrote by mutouyun. (http://darkc.at/cppdepend/) 去年6月份的时候,CppDepend的一位技术社区经理(technical community manager)突然发邮件联系我,赠送了我一份license,并邀请我体验下他们的C++静态分析工具,也就是CppDepend. 在这款软件的官方网站上,我们可以看到使用CppDepend可以帮助我们做些什么: 1. 提高代码质量 2. 可以使用CQLinq来自动化Review代码 3. 帮我们做代码重构

C++代码静态分析工具splint

1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 台的PC-Lint版本.由于PC-Lint/FlexeLint是商业的程序分析工具,不便于大家对其进行学习和使用,因而下面我将介绍一个针对C语言 的开源程序静态分析工具——splint. 2.静态程序分析 先来说说什么是“静态程序分析(Static program analysis)”,静态

代码静态分析工具PC-LINT安装配置

代码静态分析工具PC-LINT安装配置--step by step                             作者:ehui928                             2006-5-20 PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器.它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误. C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来

年底盘点之十大开源安全工具

Facebook 等大型互联网公司推动的服务器与数据中心.大数据工具的开源化项目类似,当大型互联网公司们在超大规模基础设施运营方面面临的挑战超出技术厂商的能力时,这些巨头就选择反客为主,成为创新技术的推动者和提供者.同样的情况也在信息安全领域中发生着.不少大型互联网公司经常会将自己开发的顶级安全工具开源,推动整个互联网的安全发展. 事实上不仅Google.Facebook,包括Netflix甚至Etsy.com这样的电商网站也都贡献过精品开源安全工具. 下面就来为大家盘点下十大开源安全工具 一.