インストールされているアプリの.apkファイルを取得できますか?


9

アプリの.apkファイルをQualcommデバイスにデプロイしました。残念なことに、このアプリが開発されたラップトップが盗まれたため、アプリのコードを携帯していません。ただし、以前にアプリをインストールしたデバイスがあります。

だから私の質問は、このデバイスからアプリの.apkファイルを取得できますか?はいの場合、それを取得する方法を教えてください。

どんな助けもありがたいです。

おかげで、ガウラヴ

回答:



4

あなたが知っていればインストール(一部のデバイスではなく、単にmyapp.apkよりmyappの-1.apkまたはmyappに-2.apkでもよい)のapkのファイル名を、あなたはアクセスを直接することができ、1つのADBの実行などを含む通常のユーザーとして保護されたデバイスでは、それをadbでプルできるはずです。ただし、インストールされている apkの名前がわからない場合は、rootまたはaid_systemでなければ、/ data / appディレクトリを参照できません。

インストールされている名前を推測するだけの価値があるかもしれません-分かりやすく試してみて、-1.apkや-2.apkなどで試してみてください。

別の方法がある可能性があります。次の方法は安全なデバイスで機能すると思いますが、現時点ではテストするためのデバイスがありません。

編集:正確なAPKファイル名を決定するための新しいアイデア

1)adb pull /data/system/packages.xml

2)アプリケーションのcodePathエントリを探します

3)adb pull that

編集:以下の古いアイデアに関して、Matthewは、/ procの下のプロセスごとのファイルには保護されたデバイスに対する読み取り権限があるが、所有者以外の非特権uidによって読み取られると空になることを発見しました。したがって、これは機能しません。


1)アプリを実行します。adbを備えたマシンも必要です。

2)タイプ

adb shell ps 

アプリの名前の行を探します:

app_1     11959 907   112984 27580 ffffffff afd0c5bc S com.clevername.myapp

3)2番目の列のプロセスIDである番号を取得し、その仮想メモリマップを表示します。この場合は、次のように入力します。

adb shell cat /proc/11959/maps

そしてそれがそれ自身のapkファイルをメモリにマップした行を探します

43e9c000-43ea3000 r--s 001f4000 b3:06 15393      /data/app/com.clevername.myapp-1.apk

4)adb pullに必要なファイル名です

adb pull /data/app/com.clevername.myapp-1.apk .

/ proc内のディレクトリのアクセス許可を調べると、これは非特権ユーザーでも機能するはずです。機能しない場合はごめんなさい。「grep」の使い方に慣れている場合は、それを使用して出力を手動でスキャンすることを回避できます。

補遺:私はSDカードにインストールされたアプリの話が何であるか本当にわかりません。


安全なデバイスを試してみました。adb shell cat /proc/####/maps残念ながら何も返しません。
マシュー

@Matthew ...奇妙なことに、私は安全なケースをシミュレートしていて、proc内のほとんどのファイルのサイズがゼロであるのを読んでいますが、読み取り可能です。以前は、読み取り権限があるかどうかを確認するだけでした。おそらく、アクセス許可ではなくそれらをnullにすることによって行われるため、/ proc読み取りツールが一定のアクセスエラーのストリームを取得することはありません。ああ...インストールされているapkの名前のバリエーションを推測するのが最善の方法です。
Chris Stratton、

私のapkファイル名はすべてばかげて推測できませんでしたが、packages.xmlを使用すると実際の名前がわかりました。:)
paleozogt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.