1. ホーム

最新版Androidデコンパイラbaksmaliの使い方

2022-02-25 18:59:20

Androidを使った実験をしていて、初めて遭遇した小さな問題です。

ご存知のように、AndroidのAPKを効率的に解析するためには、しばしば逆コンパイルが必要です。現在、一般的に使用されているAndroidの逆コンパイルツールは以下の通りです。

バクスマリ https://github.com/JesusFreke/smali

Apktoolです。 https://ibotpeaches.github.io/Apktool/

dex2jarです。 https://sourceforge.net/projects/dex2jar/

これらは、基本的にBaksmaliを使う人が一番多いと感じたツールですが、使っていくうちに、簡単な変化に気づいたので、簡単に記録しておきます。最初のリンク先のページで説明したように、Baksmaliの最新バージョンはここからダウンロードすることができます。 https://bitbucket.org/JesusFreke/smali/downloads/ . 私がダウンロードした最新バージョンは2.2.2です。ここにあげられているような例をご覧ください。 http://blog.csdn.net/moondroid/article/details/44224111 を、実行します。

java -jar baksmali-2.2.2.jar -o classout/ classes.dex

結果 コマンドを期待したところ、-o が表示されました。

何が起こっているのかもよくわからないまま、実行した

java -jar baksmali-2.2.2.jar -h

そのヘルププロンプトに従って、以下のように直接実行してください。

java -jar baksmali-2.2.2.jar d classes.dex

ちゃんと出力できることがわかったので、runディレクトリにoutフォルダを作成し、対応するsmaliファイルをすべて生成しました。バージョンアップの際にコマンドライン引数の形式が変わってしまったことが判明し、ちょっと残念です。

また、生成されたsmaliファイルは、Opcodeとmove-object v2, p1のようなオペランドを組み合わせたものです。他の資料によると、現在Androidには218のOpcodeがあり、ここに記載されています。

http://blog.csdn.net/jiayanhui2877/article/details/41008985

ここに簡単に記されているのは以上です。