4

システム APK を編集するための基本的な手順:

  1. APK のバックアップを作成します。
  2. 動作中の APK を逆コンパイルします。
  3. 変更を行います。
  4. 作業中の APK を再コンパイルします。
  5. META-INF フォルダーと AndroidManifest.xml の両方を、バックアップ APK (逆コンパイルされていない) からコピーして、再コンパイルされた動作中の APK に貼り付けます。終わり!

META-INF には署名が含まれています: これは理にかなっています。しかし、元の署名を保持する AndroidManifest.xml の目的は何ですか? 私はこれを自分でテストしましたが、Android は再コンパイルされた AndroidManifest.xml (つまり、元の AndroidManifest.xml ではない) で APK をロードしませんでした。

多くのガイドでは、元の APK から変更された APK に META-INF と AndroidManfest.xml の両方をコピーする必要があると述べています。

私が見つけた最も近い答えは、再コンパイルすると AndroidManifest.xml が破損するというものです ( http://rootzwiki.com/topic/268-guide-newbies-how-to-port-themes/を参照)。 AndroidManifest.XML を再コンパイルし、それらは同一です (WinMerge と言い、それらは同一の MD5 および SHA1 ハッシュを持っています)。別の個人 ( http://miuiandroid.com/community/threads/q-remove-miui-torch-app.16013/ ) は、META-INF と AndroidManifest.xml が何らかの形で互いに関連付けられていると推測しています。

誰もがそうするのですが、その理由を知っている人はいますか?

4

1 に答える 1

1

システム APK を検証するとき、Android は APK 内のファイルのサブセットの署名をチェックして、改ざんされていないことを確認します。これらのファイルには、、、AndroidManifest.xmlおよびclasses.dexその他が含まれます。元のファイルの SHA-1 ダイジェスト ( および に格納されMETA-INF/MANIFEST.MFMETA-INF/CERT.SFいる) が、変更された APK 内のファイルのダイジェストと一致しない場合、Android は APK の読み込みを拒否します。

于 2013-01-27T03:53:41.377 に答える