如果您曾经看过Android应用程序,您就会知道能够在最高级的水平上分析目标的能力。动态程序分析将为您提供有关应用程序活动和一般行为的很好概述。但是,有时您只需要在不运行的情况下分析您的应用程序即可。您需要查看其组件,分析它们的交互方式以及如何从一个点到另一个点污染数据。
这是推动Smalisca发展的主要因素。确实有一些充分的理由进行静态代码分析。在与应用程序进行交互之前,我喜欢知道如何构建应用程序,如果有任何API并生成各种呼叫流程图。实际上,图表对我来说非常重要,因为它们可视化事物。我只是查看图形,而不是从一个文件到clip,而是从类别跳到文件。
虽然构建图是我对这样的工具进行编码的重要原因,但Smalisca具有您应该阅读的其他一些整洁功能。
目前有一些主要功能,例如:
解析
您可以解析SMALI文件的整个目录并提取:
然后,您可以将结果导出为JSON或SQLITE 。
在解析页面上有一份抢劫以获取更多信息。
分析
导出结果后,您将获得交互式提示,以仔细查看您的分析数据。您可以搜索类,属性,方法甚至方法调用。然后,您可以将几个过滤器应用于您的搜索标准:
smalisca> sc -c class_name -p test -r 10 -x路径-s class_type
此命令将搜索10 (-r 10)类,其中包含其类名称(-c)中的模式测试(-p)。之后,命令将从结果中排除列路径(-x路径),并按类型(-s)对其进行排序。
让我们看看另一个例子:
smalisca> scl -fc com/android -fm init -r 10
这将搜索所有调用类名称包含模式com/android (-FC)的方法调用。此外,我们可以查找源自其名称包含模式INIT (-FM)的方法的调用。
您当然可以从文件中阅读命令并分批分析结果 - 类似方式:
$ cat cmd.txt sc -c class_name -p com/gmail/xlibs -r 10 -x路径 辞职 $ ./ smalisca.py Analyzer -i results.sqlite -f sqlite -c cmd.txt ...
在分析页面上有一份战利品以获取更多信息。
Web API
Smalisca提供了REST Web服务,以便通过使用Web客户端轻松与结果交互。这样,您可以自行访问(幻想)Web应用程序的数据,并在后端和前端之间进行干净的分离。
在Web API页面上阅读有关可用REST API的更多信息。
可视化
我认为这是Smalisca最有价值的功能。以结构化的方式可视化结果的能力使您的生活更加舒适。根据您感兴趣的内容,该工具具有我想宣传的几个图形图形功能。
首先,您可以绘制包裹,包括其类,属性和方法:
smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot :: Info将结果写入 /tmp/classes.dot Smalisca>
这将首先搜索其类名称包含测试的类,然后以GraphViz Dot语言导出结果。然后,您可以使用dot , neato , circo等手动生成图形,也可以使用交互提示来完成图:
smalisca> DC -C class_name -p Test -P PDF -O /TMP/classes.pdf -prog neato :: INFO将结果写入 /tmp/classes.pdf Smalisca>
在图纸页面上有一份战利品以获取更多信息。
输出结果作为表。
类和模块之间的基本关系。
看看屏幕截图页面。
请参阅“安装”页面。要求:
安装工具后,您可能需要首先选择Android应用程序(APK)进行播放。使用APKTool或我自己的工具ADU倾倒APKS内容。为了简单起见,我将使用以前的博客文章中分析的伪造者。
但是首先让我们看一下工具的主要选项:
$ SMALISCA-助长
/ _ __
____ ___ ___ __ // / _ _________________________
/',__ /'________________
/ __,`/ / _ _ _ _ /// 。
/ ____/ _ _ _ _ __/。
/__//_//_/_/_/_/_/_///__/__/_/_/_/_//____/____/_/_///____/__//____/___/__/__/__/_/_//_//_/_/_/_/_/_/
--------------------------------------------------------------------------------------------------------------------------------
::作者:Victor <Cyneox> Dorneanu
:: DESC:SMALI文件的静态代码分析工具
:: url:http://nullsecurity.net,http:// {blog,www} .dornea.nu
::版本:0.2
--------------------------------------------------------------------------------------------------------------------------------
用法:smalisca(sub-commands ...)[options ...] {参数...}
[ - ] Baskmali(Smali)文件的静态代码分析(SCA)工具。
命令:
分析仪
[ - ]使用交互式提示或在命令行上分析结果。
解析器
[ - ]解析文件并根据Smali语法提取数据。
网络
[ - ]使用Web API分析结果。
可选参数:
-h, - 赫尔普显示此帮助消息和退出
- 选式切换调试输出
- Quiet抑制所有输出
- log级{调试,信息,警告,错误,关键}
更改记录级别(默认:信息)
-v, - Version Show程序的版本编号和退出
在进行分析工作之前,我将首先解析Smali文件的一些目录:
$ SMALISCA PARSER -L〜/TMP/FANE BANKER2/dustmed/smali -s java -f sqlite -o nakebanker.sqlite ... :: info parsing .java文件/home/victor/victor/tmp/fakebanker2/dustmed/smali ... ::信息完成! ::信息将结果导出到sqlite ::信息提取课... ::信息提取类属性... :: Info提取类方法... ::信息提取电话... ::信息提交更改对SQLITE DB ::信息写入FakeBanker.sqlite的结果 ::信息完成扫描
还可以查看解析页面以获取更多信息。
现在,您可以自由地使用生成的出口来做任何您想做的事情。您可以直接检查SQLite DB或使用Smaliscas分析功能:
$ smalisca Analyzer -f sqlite -i nakebanker.sqlite ... Smalisca> SC -X路径-R 10 +----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ | id | class_name | class_type | class_package |深度| +----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ | 1 | landroid/support/v4/net/connectivition managerCompat |公共| landroid.support.v4.net | 5 | | 2 | landroid/usport/v4/view/consectibilitydelegateCompat $ cessiveibilitydelegatejellybeanimpl | | landroid.support.v4.view | 5 | | 3 | landroid/usport/v4/view/viewcompat $ viewcompatimpl |接口摘要| landroid.support.v4.view | 5 | | 4 | landroid/support/v4/app/activitycompathoneycomb | | landroid.support.v4.app | 5 | | 5 | landroid/support/v4/app/nosavestateframelayout | | landroid.support.v4.app | 5 | | 6 | landroid/support/v4/net/connectivitivitivitivitivitionmanagercompathoneycombmr2 | | landroid.support.v4.net | 5 | | 7 | lcom/gmail/xpack/buildConfig |公共最终| lcom.gmail.xpack | 4 | | 8 | landroid/support/v4/app/backstackrecord $ op |最终| landroid.support.v4.app | 5 | | 9 | landroid/support/v4/app/fragmentManagerimpl |最终| landroid.support.v4.app | 5 | | 10 | landroid/support/v4/app/shareCompat $ shareCompatimpl |接口摘要| landroid.support.v4.app | 5 | +----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+
另请参阅分析页面以获取更多可用命令和选项。
请参阅“图纸”页面以获取完整示例。
Smalisca已根据MIT许可发布。查看许可证。rst文件。
该工具专用于lică 。非常感谢:
斯蒂芬·麦卡利斯特(Stephen McAllister)
- 非常感谢所有这些时间充满APK调试和好主意
我的女友
- 非常感谢您的耐心和理解!
nullsecurity.net
- 入侵地球!