最新版Androidデコンパイラbaksmaliの使い方
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
ここに簡単に記されているのは以上です。
関連
-
Mac マシンに nvm をインストールする際の落とし穴 - nvm コマンドが見つかりません。
-
cenos upgrade g++ gcc(cc1plus: error: unrecognized command line option "-std=c++11")
-
原因:java.io.IOException。CreateProcess error=5, アクセス拒否されました。CreateProcess error=2, システムが指定されたファイルを見つけられませんでした。
-
[エラー] '{' トークンの前に期待される式
-
Oracle の例外 ORA-01861 を解決する: リテラルが形式文字列に一致しません。
-
Tensorboard 1.13.1実行時のエラーです。OSError:[Errno 22] 無効な引数です。
-
Anaconda の PackagesNotFoundError: 次のパッケージは、現在のチャンネルから利用できません。
-
id 'com.android.library' を持つプラグインが見つかりません。
-
予期しないトークン「()」付近の構文エラー 問題解決
-
android spinner 初期設定 ItemSelectedListener 即時実行 解決方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
GDI+でジェネリックエラーが発生したのを解決する
-
非静的フィールドへの静的参照はできない
-
場所 0x00000004 の読み取りでアクセス違反が発生しました。
-
Bluetooth接続のタイムアウト現象
-
左オペランドはl値でなければならない(左オペランドは代入可能な変数でなければならない)。
-
Uncaught TypeError: box1.appendChild は関数ではありません。
-
Python 3.9 のモジュール 'time' には 'clock' という属性がありません。
-
アセンブリノート No.2 - jnz (または jz ) を実行するためにテストを使用する方法
-
Pythonでの強制変換('str'と'int'のインスタンス間でサポートされていないエラーが発生した場合)。
-
ユニティ再生gif