0

ファイル dex を解析しようとしています。次の情報を取得する Java コードを作成しました。

  • リスト項目
  • ヘッダ
  • string_id
  • type_id
  • proto_ids
  • フィールド ID
  • method_id
  • class_defs

個々のフィールドのサイズに基づいてバイトシフトを行うだけです。

ここで、バイトコードを取得してからソースコード、問題の dex ファイルを取得したいと考えています。たぶん、この情報は構造体「code_item」で見つけることができますか?
もしそうなら、どの時点でメモリのブロックを読み取れるようにしますか。

前もって感謝します!

4

1 に答える 1

3

smali/baksmaliプロジェクトの一部であるdexlib2 ライブラリを参照してください。dex ファイル内の情報にアクセスするための使いやすい API を提供します。

コード例:

DexFile dexFile = DexFileFactory.loadDexFile("blah.dex", 15);

for (ClassDef classDef: dexFile.getClasses()) {
  for (Method method: classDef.getMethods()) {
    MethodImplementation impl = method.getImplementation();
    if (impl != null) {
      for (Instruction instruction: impl.getInstructions()) {
        // process instruction as needed...
      }
    }
  }
}
于 2013-11-11T19:31:27.890 に答える