安全圈 | 专注于最新网络信息安全讯息新闻

首页

dorneanu/smalisca:smali檔案的靜態程式碼分析

作者 landy 时间 2020-02-27
all

如果你曾經看過Android應用程序,你會發現在最高級的層次上分析你的目標的能力。動態程式分析將為您提供應用程序活動和一般行為的非常好的概述。不過,有時您只需要分析應用程序而不運行它。您將需要查看其組件,分析它們如何互動,以及數據如何從一個點到另一個點受到污染。

這是推動smalisca發展的主要因素。在動態程式碼分析之前進行靜態程式碼分析確實有一些很好的理由。在與應用程序互動之前,我想知道應用程序是如何構建的,是否有任何API並生成所有類型的調用流圖。事實上,圖表是非常重要的,因為它們形象化的東西。我只看圖表,而不是從一個檔案跳到另一個檔案,從一個類跳到另一個類。

雖然圖形構建是我編寫這種atool的一個重要原因,但smalisca還有一些其他一些您應該瞭解的功能。

特徵

目前有一些主要功能,如:

解析

您可以解析Smali檔案的整個目錄並選取:

然後可以將結果匯出為JSON或SQLite。

在解析頁面獲取更多資訊。

分析

匯出結果後,您將得到一個互動式提示,以便更仔細地查看已分析的數據。您可以蒐索類、内容、方法甚至方法調用。然後,可以對蒐索標準應用多個篩選器,如:

此命令將蒐索10個(-r 10)類,這些類的類名(-c)中包含模式測試(-p)。之後,該命令將從結果中排除列路徑(-x path),並按類類型(-s)對它們進行排序。

讓我們看看另一個例子:

這將蒐索其調用類名包含patterncom/android(-fc)的所有方法調用。此外,我們還可以查找來自包含模式init(-fm)的方法的調用。

當然,您可以從檔案中讀取命令,並以類似批次處理的管道分析結果:

在分析頁面獲得更多資訊。

web API

smalisca提供了一個REST web服務,以便通過使用web用戶端輕鬆地與結果互動。通過這種管道,您可以在自己的(奇特的)web應用程序中訪問資料,並在後端和前端之間進行清理分離。

在web API頁面上閱讀更多關於可用restapi的資訊。

視覺化

我認為這是smalisca最有價值的特性。有條理地將結果形象化的能力會讓你的生活更舒適。根據你的興趣,這個工具有幾個圖形繪製功能,我想推廣。

首先,您可以繪製包,包括它們的類、内容和方法:

這將首先蒐索其類名包含test的類,然後用Graphviz DOT語言匯出結果。然後,可以使用dot、neato、circo等手動生成圖形,也可以使用互動式提示:

在繪圖頁獲得更多資訊。

螢幕截圖

將結果輸出為錶。

類和模塊之間的基本關係。

看看截圖頁面。

安裝

請參閱安裝頁。要求:

如何使用

安裝該工具後,您可能希望首先使用Android應用程序(APK)。使用apktool或我自己的toolADUS轉儲APKs內容。為了含蓄起見,我將使用FakeBanker,我在之前的博客文章中分析過。

第一次接觸

但首先讓我們看看工具的主要選項:

解析

在進行分析之前,我將首先分析Smali檔案的一些目錄:

還可以查看解析頁面以獲取更多資訊。

分析

現在您可以自由地對生成的匯出執行任何所需的操作。您可以直接檢查SQLite資料庫或使用smalicas分析功能:

有關更多可用的命令和選項,請參閱“分析”頁。

繪圖

請參閱繪圖頁以獲取完整示例。

許可證

smalisca是根據麻省理工學院的許可證發佈的。查看LICENSE.rst檔案。

信用

此工具專用於Lică。非常感謝:

斯蒂芬·麥卡利斯特

我的女朋友

nullsecurity.net網站