我可以获取已安装应用程序的.apk文件吗?


9

我已经在高通设备上部署了我的apps .apk文件。现在由于我的运气不好,开发此应用程序的笔记本电脑被盗了,所以我没有我的应用程序代码。但是我有较早安装应用程序的设备。

所以我的问题是,我可以从此设备获取我的apps .apk文件吗?如果是的话,请告诉我如何获得。

任何帮助都是可观的。

谢谢,高拉夫

Answers:



4

如果您知道apk 的安装文件名(在某些设备上可能是myapp-1.apk或myapp-2.apk而不是myapp.apk),则可以以普通用户的身份直接访问该文件,包括adb在受保护的设备上,因此您应该能够adb拉它。但是,如果您不知道已安装的 apk名称,则无法在没有root或aid_system的情况下浏览/ data / app目录。

也许值得猜测一下已安装的名称-简单地尝试使用-1.apk和-2.apk进行尝试,等等。

可能还有另一种方式:我相信以下内容将在受保护的设备上工作,但目前尚无测试方法。

编辑:确定确切的APK文件名的新思路

1)亚行拉/数据/系统/packages.xml

2)通过它查找应用程序的codePath条目

3)亚行拉

编辑:关于下面的旧想法,马修(Matthew)发现,虽然/ proc下的每个进程文件都具有对受保护设备的读取权限,但是当由其所有者以外的非特权uid读取时,它们为空。所以这行不通。


1)使您的应用程序运行。您还需要一台带有adb的计算机。

2)类型

adb shell ps 

并查找带有您的应用名称的行:

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

3)在第二列中获取进程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中的大多数文件的大小为零,但可读。在我仅检查它们是否具有读取权限之前。也许是通过使它们无效而不是使权限无效来完成的,这样/ proc读取工具就不会得到源源不断的访问错误。哦,好吧……猜测已安装的APK名称变体可能是最好的。
克里斯·斯特拉顿

我的apk文件名非常疯狂而且难以猜测,但是使用packages.xml可以找出真实姓名。:)
paleozogt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.