Androidアプリケーションを見たことがある場合は、最先端のレベルでターゲットを分析する能力を理解することを知っています。ダイナミックプログラム分析により、アプリケーションアクティビティと一般的な行動のかなり良い概要が得られます。ただし、アプリケーションを実行せずに分析するだけです。コンポーネントを見て、それらがどのように相互作用し、データがどのようにあるかをあるポイントから別のポイントに汚染される方法を分析する必要があります。
これは、 Smaliscaの発展を促進する主要な要因です。実際、動的なコード分析の前に静的コード分析にはいくつかの理由があります。アプリケーションと対話する前に、APIがある場合、アプリケーションがどのように構築されているかを知り、あらゆる種類のコールフローグラフを生成します。実際、グラフは物事を視覚化するので、私にとって非常に重要です。クラスからクラスまでファイルからファイルへとジャンプする代わりに、グラフを見ます。
グラフの構築は、そのようなツールをコーディングする重要な理由ですが、 Smaliscaには読むべき他のいくつかのきちんとした機能があります。
現時点では、次のような主要な機能がいくつかあります。
解析
Smaliファイルのディレクトリ全体を解析して抽出できます。
その後、結果をJSONまたはSQLiteとしてエクスポートできます。
詳細については、解析ページに戦利品を持ってください。
分析
結果をエクスポートした後、インタラクティブなプロンプトを取得して、解析されたデータを詳しく調べます。クラス、プロパティ、メソッド、さらにはメソッド呼び出しを検索できます。次のような検索基準に複数のフィルターを適用できます。
Smalisca> sc -c class_name -p test -r 10 -x path -s class_type
このコマンドは、クラス名(-c)にパターンテスト(-p)を含む10 (-r 10)クラスを検索します。その後、コマンドは結果から列パス(-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アナライザー-i results.sqlite -f sqlite -c cmd.txt ...
詳細については、分析ページで戦利品を持ってください。
Web API
Smaliscaは、Webクライアントを使用するだけで結果と簡単に対話するために、REST 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 、 neato 、 circoなどを使用してグラフを手動で生成できます。または、インタラクティブプロンプトを使用してそれを行うことができます。
Smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf -prog neato :: Infoは/tmp/classes.pdfに結果を書きました Smalisca>
詳細については、図面ページに戦利品を持ってください。
テーブルとしての出力の結果。
クラスとモジュールの基本的な関係。
スクリーンショットページをご覧ください。
インストールページを参照してください。要件:
ツールをインストールした後、最初にAndroidアプリケーション(APK)をピックアップしてプレイすることをお勧めします。 APKTOOLまたは私自身のツールADUを使用して、APKコンテンツをダンプします。簡単にするために、以前のブログ投稿で分析したFakeBankerを使用します。
ただし、最初にツールの主なオプションを見てみましょう。
$ smalisca-ヘルプ
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/'、__ /' __` __` /'__ ` / /'、__ /'___ /' __`
/ __、 `//// / l
/ ____/ _ _ _ __/。 _ / _ // ____/ __/。 _
/___//_//_//_/_//__//_//____//_//___//____//__//_/_/
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)
::著者:Victor <Cyneox> Dorneanu
:: DESC:Smaliファイルの静的コード分析ツール
:: url:http://nullsecurity.net、http:// {blog、www} .dornea.nu
::バージョン:0.2
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)
使用法:Smalisca(Sub-Commands ...)[Options ...] {arguments ...}
[ - ] Baskmali(Smali)ファイルの静的コード分析(SCA)ツール。
コマンド:
アナライザ
[ - ]インタラクティブなプロンプトまたはコマンドラインで結果を分析します。
パーサー
[ - ]ファイルを解析し、Smali構文に基づいてデータを抽出します。
ウェブ
[ - ] Web APIを使用して結果を分析します。
オプションの引数:
-H、 - ヘルプこのヘルプメッセージと出口を表示します
- デバッグデバッグ出力をトグに切り替えます
- すべての出力を抑制します
-log-level {debug、info、warn、error、critical}
ロギングレベルを変更する(デフォルト:情報)
-v、-versionはプログラムのバージョン番号と終了を示します
分析を行う前に、最初にSmaliファイルのディレクトリを解析します。
$ smaliscaパーサー-l〜/tmp/fakebanker2/dumped/smali -s java -f sqlite -o fakebanker.sqlite ... :: INFOSING .JAVAファイル/home/victor/tmp/fakebanker2/dumped/smali ... ::情報が終了しました! :: sqliteへの結果のエクスポート ::情報抽出クラス... ::情報抽出クラスのプロパティ... ::情報抽出クラスのメソッド... ::情報抽出通話... ::情報コミット変更SQLite DBへの変更 :: infoはfakebanker.sqliteに結果を書きました ::情報がスキャンを終了しました
詳細については、解析ページもご覧ください。
これで、生成されたエクスポートで必要なことは何でも自由に行うことができます。 SQLite DBを直接検査するか、 Smaliscas分析機能を使用できます。
$ smaliscaアナライザー-f sqlite -i fakebanker.sqlite ... Smalisca> sc -x path -r 10 +----+---------------------------------------------------------------------------------------------------------------+----------------------+------+ | ID | class_name | class_type | class_package |深さ| +----+---------------------------------------------------------------------------------------------------------------+----------------------+------+ | 1 | Landroid/support/v4/net/connectivitymanagercompat |パブリック| Landroid.support.v4.net | 5 | | 2 | Landroid/support/v4/view/accessibilitydelegatecompat $ accessibilitydelegatejellybeanimpl | | landroid.support.v4.view | 5 | | 3 | Landroid/Support/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/connectivitymanagercompathoneycombmr2 | | 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ライセンスの下でリリースされました。 license.rstファイルをご覧ください。
このツールはLicòに捧げられています。多くの感謝にも感謝します:
スティーブン・マカリスター
- APKデバッグと素晴らしいアイデアでいっぱいの時間に感謝します
私のgf
- 忍耐と理解をありがとうございました!
nullsecurity.net
- 惑星をハック!