3

マルウェア作成者が既存の無害な android .apk を再パッケージ化し、悪意のある機能を追加するために再パッケージ化する方法について、私はよく読んでいます。

現在、.apk ファイル構造に関する私の理解によれば、各 .apk ファイルには、本質的に .dex 形式に変換された Java バイトである単一の .dex ファイルが含まれています。また、このアプリケーションには、manifest.xml と呼ばれるバイナリ XML と、その他のリソース ファイルおよびアセットがあります。悪意のある機能をアプリケーションに追加する必要がある場合は、manifest.xml (バイナリ xml を通常の xml に変換することで簡単に実行できます)、リソース (置き換えるだけでよい)、および .dex ファイルを変更する必要があります。 .

しかし、.dex ファイルには特定の構造があります。私によると、それに加えられた変更はコードを壊すはずです。元のアプリに悪意のある機能を追加する場合、本質的には余分なモジュールを追加することになるため、ツールはコードの破損を防ぐためにどのような手法を使用しますか.

.apk ファイルの再パッケージ化をサポートするツールにはどのようなものがありますか?

ありがとう。

編集: 一部のメンバーは、リバース エンジニアリングについて議論するのが不快に感じるかもしれません。Android セキュリティに取り組んでいる研究生です。これは私の研究テーマであるため、.apk ファイルの再パッケージ化がどのように機能するかを知る必要があります。また、リバース エンジニアリングについて公然と話すことは悪意のある行為ではありません - リバース エンジニアリングに関する本が書かれています - 悪意のある目的でリバース エンジニアリングを使用することは悪意があります :)

4

1 に答える 1

10

セキュリティ情報

リリース モードでプロガードを有効にします。これにより、リバースエンジニアリングが難しくなります。セキュリティに関するこの開発者トレーニング ドキュメントも確認してください。

(この質問に対するコメントから)

パッケージ署名の検証

署名を確認することで、パッケージが再パッケージ化されているかどうかを確認できます。それを助けるためのいくつかの記事:

実行時に APK 署名を取得しています。
APK 署名の自己チェック。
APK 署名を確認する方法。

(元々掲載されていた広告Android apk が再パッケージ化されていないことを確認しますか? )

DEX を Java に逆コンパイルする

以前、DEX コードの逆コンパイルに関する質問に回答しました。私の元の回答は今では古くなっている可能性がありますが、質問は他の人によって最新の状態に保たれています。そこにリストされているいくつかのツールの概要を次に示します。

fred回答のより完全なバージョン :

手動の方法

まず、DEX 上のすべての (コンパイル済み) クラスを JARに抽出するためのツールが必要です。中国の学生が作ったdex2jarというものがあります。

次に、 jd-guiを使用して、JAR 上のクラスをソース コードに逆コンパイルできます。dex2jar がいくつかの最適化を適用するため、結果のソースは非常に読みやすいはずです。

1 : http://code.google.com/p/dex2jar/
2 : http://java.decompiler.free.fr/?q=jdgui

自動方法

APKToolを使用できます。すべてのクラス ( )、リソース ( )を自動的に抽出し、バイナリ XML人間が読める XMLに 変換し、クラスを逆アセンブルします。逆アセンブルは、特にPro Guard で難読化された JARの場合、逆コンパイルよりも常に堅牢です。.dex.asrc

APKTool にAPK をディレクトリにデコードし、必要なものを変更 して、最後にAPK にエンコードするように指示するだけです。それで全部です。

重要: APKToolは逆アセンブルします。逆コンパイルしません。生成されたコードは Java ソースにはなりません。しかし、 jasminに慣れていれば、それを読んだり、編集したりできるはずです 。Java ソースが必要な場合は、Manual wayを参照してください。

(元の質問: DEX を Java ソースコードに逆コンパイルする)

于 2013-05-25T08:07:14.063 に答える