如果您曾經看過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
- 入侵地球!