0

ソースのない既存の .APK ファイルがあります。Bluestacks (またはその他の) エミュレーターで Eclipse を使用してデバッグしたいと考えています。最終的にはブレークポイントを設定したいのですが、とりあえずエミュレータ上で動かしたいだけです。adb を使用してエミュレーターにインストールし、そこで実行するだけではありません。Eclipse によってビルドされた結果の .apk をエミュレーターで実行することに失敗しました。

私が行った手順は次のとおりです。

  1. .apk の名前を .zip に変更し、フォルダーに解凍しました。
  2. Eclipse で、新しい「既存のコードからの Android プロジェクト」を作成しました。次の「プロジェクトのインポート」画面で、apk を解凍したフォルダーを参照しました。

しかし、このプロジェクトにはEclipseでエラーがあります! そこで、次の手順を試しました。

  1. .apk で apktool を実行すると、手順 2 で説明したのと同じインポートに使用するフォルダーが作成されました。これで、プロジェクトにエラーがなくなりました。
  2. Eclipse では、このプロジェクトを Android アプリケーションとして「実行」または「デバッグ」し、エミュレーターで起動します。

ダメ!logcat には、「dalvikv - キャッチされていない例外で終了するスレッド」などのエラーが表示されます。また、アプリケーションと java.lang.ClassNotFoundException をインスタンス化できないことに関する他の logcat メッセージもあります。

質問 1: これを「良い」プロジェクトに変えるには、他にどのような手順が必要か教えてもらえますか? クラスについて私が見逃している明らかなものはありますか?

「run as」または「debug as」のいずれかを正常に実行できるようになったら、ブレークポイントを設定してデバッグします。しかし、ソースフォルダーを正しく取得できないようです。ステップ 3 で説明した apktool ステップの結果として .smali ファイルがあります。また、dex2jar や jd-gui などのさまざまなツールを試して、.java ファイルを作成しました。しかし、これらのソースがあるフォルダーを Eclipse に指示するたびに (そして「サブフォルダーの検索」をチェックしている)、Eclipse は「ソースが見つかりません」と表示します。そして「ソースルックアップパスの編集」。また、ワークスペースの /src フォルダーにソースを入れてみました。

質問 2: Eclipse が見つけられるように、ソースをどこに置くことができますか? これらのソース ファイルは .smali または .java のどちらでもかまいませんか?

4

2 に答える 2

3

つまり、基本的に、パッケージ化された APK ファイルからソースを抽出することです。あなたが達成したことは、私ができる最大のことでもあります。APK ファイルのパッケージ化中に難読化が行われるため、正確で真のソース コードを取得する方法はありません。したがって、到達したのは、到達できる最大値です。私はこれらのツールを使用しましたが、作成者が書いたように真の .java ファイルを抽出することはできませんでした。これには、Eclipse では認識されないコンパイラーの追加機能と最適化が含まれます。

于 2012-10-08T04:16:30.610 に答える
0

質問 1: .apk ファイルから Android プロジェクトを取得するには、多くの手順が必要です。この作品はリバース、デコーディング...

  • apktool を使用して、apk を .smali ファイルに逆コンパイルできます
  • 次に、.smali ファイルを .java ファイルに戻すために javaDecompiler を使用します。
  • プロジェクトを作成し、.java ファイルをインポートします

質問 2: 質問 1 を試してください。できます。

注意: その apk をコーディングした開発者が proguard を使用している場合、次のコードのみが表示されます。

于 2013-12-18T02:08:00.463 に答える