2017-10-30 7 views
-1

すべての.smalliファイルからメソッドを抽出したい。
.smalliファイルにメソッド(API関数)を宣言するための形式はありますか。私は簡単にpythonスクリプトを使ってそれを抽出できます。 私は概念を探しているので、どのように識別できるのですか?1.ユーザー定義関数2. API関数3. API呼び出し順序が定義され宣言されました。Pythonを使用してAPI関数とAPI呼び出し順序のみを出力します。.smaliファイルで宣言されたメソッドをどのように識別できますか?

+0

あなたはsmali意味やDEXください.smalliファイルを開始するには良いソースを提供しますか? Enjarifyはdexファイルを解析し、Pythonで書かれています。 – Antimony

+0

私はsmaliを意味する。 .smaliファイルからAPI関数を抽出したいのですが、どちらがAPI関数であるのか理解できません。 .smalliファイルからAPI関数を識別できるようにAPI関数を定義する特別な方法はありますか? APIコールシーケンスも抽出したいので、APIコールシーケンスを特定して抽出する方法はありますか。 –

答えて

0

smaliファイルの解析について質問されていますが、実際には望むものではありそうにありません。 Androidアプリケーションを分析することを目標とする場合、dexファイルを解析する必要があります。幸運にも、Pythonで書かれたEnjarifyというツールがあります。このツールにはデクサーが含まれています。ライブラリとして使用するようには設計されていないため、統合するには少し時間がかかりますが、かなり簡単に理解できるはずです。 parsedex.pyから始めてみてください。

何らかの理由でsmaliファイルを本当に解析したいと仮定すると、smaliはJavaで書かれたsmaliツールで定義されているファイル形式なので、作業が非常に難しくなります。しかし、Jythonを使ってPythonから呼び出すことができます。パラメータ(複数も可)VYを渡し、オブジェクトVXにおける親クラスのメソッドを呼び出す:

+0

ありがとうございます。私は、.smalliファイルから関数とAPI呼び出しシーケンスを抽出したいと思います。私は研究のための特徴ベクトルを作成したいと思います。私はbalssmaliツールを使ってcalsses.dexを.smalliファイルに変換しました。例えば、 Landroid/app/Activity; - >がメソッドです(アクティビティメソッドはこのように書かれています)。私は、ユーザ定義のメソッドは必要ありませんが、loadjar()、setcomponent()などのアンドロイドAPIだけで、システムAPIと呼び出しシーケンスを識別する方法は必要ありません。現在私は.smalliファイルを理解するための概念の視点を見ており、システムAPI、呼び出しシーケンスをどのように識別できるか –

0

以下は.Smali機能を識別するために使用される構文

  1. 呼び出しスーパーVX、VY、呼び出しです。
  2. invoke-direct vx、vy:パラメータvy、...を持つオブジェクトvxのメソッドを仮想メソッドの解決なしで呼び出します。
  3. invoke-virtual vx、vy:オブジェクトvxの仮想メソッドを呼び出し、パラメータvyを渡します。

以下のリンクは https://apkudo.com/?p=775

関連する問題