2011-01-29 22 views
11

私は現在Dalvikバイトコードを調べていますが、コンパイラの背景が不足しているため、デザインを把握するのが少し難しいと感じています。 Dalvikに関する本を書いた人は誰もいません(または間違っている可能性があります)。だから、誰かが私にJava実践の例を含むリファレンスを提案することができますか?具体的に、どのような私が興味を持ってすることは、次のとおりです。DalvikまたはJava仮想マシンのリファレンス?

  • 中間表現にバイトコードを逆コンパイルしてから
  • それをバックコンパイルするVMの仕様(のDalvikまたはJava)を使用して生成されたバイトコード
  • を解釈する方法を理解します

要するに、私が探しているのは、リバースエンジニアリングのバイトコードを覚えておいて、脆弱性を分析することだと思います。助言がありますか?

+0

'.class'がありますファイル非常に読みやすいJavaのソースコードを生成するデコンパイラ。 – CodesInChaos

+1

@ CodeInChaos:はい。私はデコンパイラのカップルを見つけることができますが、私は物事の仕組みを感じるために単純な逆コンパイラを書く方法を学ぼうとしています。 – Legend

+0

@CodeInChaos通常の.classファイル用のデコンパイラは、まったく異なる仮想マシンアーキテクチャと完全に異なるバイトコードを使用するため、AndroidのDalvik VMではあまり役に立ちません。 –

答えて

9

参考資料のために、dalvikドキュメントに勝るものはありません。あなたは、どちらかのDalvikサブプロジェクトでAOSPでこれらを見つけることができます、または彼らがhttp://s.android.com/tech/dalvik/index.html

(のDalvikプロジェクトやのDalvik-bytecode.html)

Bytecode formatで今すぐオンラインで入手できますおそらくあなたが最も興味があるものです。.Dex Format(DEX-format.html)Instruction Formats(命令formats.html)があるとしても有用である

バイトコードに関するいくつかのより一般的な情報については、http://code.google.com/p/smali/wiki/Registershttp://code.google.com/p/smali/wiki/TypesMethodsAndFields

をチェックアウトあなたは間違いなくお勧めしますいくつかのツール。私は当然、現在入手可能な唯一のアセンブラ/ディスアセンブラのペアであるsmali/baksmaliにかなり部分的です。 dedexer(ただしアセンブラはありません)というディスアセンブラと、AOSPコードベースに付属し、バイトコードだけでなくすべてのdex構造体も低レベルのダンプファイルを提供するdexdump(baksmaliも同様の出力を持っています、-Dオプション付き)。

また、smali/baksmaliを使用するapktoolに興味がありますが、apkの "コンパイル済み" xmlファイルを元に戻す機能もあります。

が、私は思いませんが、彼らは100%で、まだだ、Javaバイトコードに戻すのDalvikバイトコードに変換そこにツールがいくつかあります - 通常のJava用undxdex2jar

3

人間が読めるバイトコードの表現を生成するために、.dexファイルをリバースエンジニアリングするためのツールがすでにあります。最も人気のあるものの1つは、ここに見つけることができます:http://code.google.com/p/smali/、baksmaliです。

バイトコード自体の説明は、グーグルで簡単に見つけることができます。 3番目の結果はhttp://www.netmite.com/android/mydroid/dalvik/docs/dalvik-bytecode.htmlです。

リバースエンジニアリングレイアウトの場合は、バイナリxml-to-xmlコンバータも必要です。スタックオーバーフローに関するもう1つの質問には、それを行うためのいくつかのツールが記載されています。Parse versionCode from android apk files

関連する問題