我想进行反向工程,并最终在我的Amazon Firestick上修补应用程序。为此,我想分析该应用程序的可执行文件。

我相信第三方apk存储在/data目录中,但该目录在无根设备上不可读。我还考虑过在应用程序运行时转储进程内存,但是我相信这也需要使设备生根。如果可能的话,我宁愿不要启动设备,但我知道这可能是必要的。

有人知道我可以在不root设备的情况下获取应用程序二进制文件的方法吗?

评论

生根只是让您访问根帐户。如果您想执行任何未明确允许的操作,例如文件的权限,则需要将其root。这可能甚至不是很难的,甚至是没有根据的;有很多消费类设备(除了显而易见的设备)是可以扎根的,尤其是对于开发人员而言。您总是可以翻阅Amazon的文档以查看-也许看看他们的开发人员资源?我以为他们有一些部署到Firestick的条件,可能会得到您需要的答案。

我认为您是对的,我将需要对设备进行root。但是,在我看来,扎根Firestick很棘手。对于我的固件版本,最普遍的方法涉及短路板上的电路。开发人员文档仅提供用于监视资源使用情况的选项。

#1 楼

adb shell pm list packages -f应该列出所有已安装的软件包,以及其apk的路径。找到您感兴趣的apk,然后用adb pull <path>将其拉出。

例如

> adb shell pm list packages -f
....
package:/data/app/com.google.android.dialer-nt9PJ8MFE293dEV61etgIA==/base.apk=com.google.android.dialer
....
> adb pull /data/app/com.google.android.dialer-nt9PJ8MFE293dEV61etgIA==/base.apk


评论


这不需要生根吗?

–成吉思汗
19年7月23日在19:26

我刚刚尝试过,它允许我“下载”目录,但是它是空的。

–成吉思汗
19年7月23日在22:37

我添加了一个更具体的示例。您应该能够拉apk文件本身,而不是目录

–耶稣·弗雷克(JesusFreke)
19年7月24日在18:59

#2 楼

我遇到了具有正确解决方案的论坛帖子:https://forum.xda-developers.com/fire-tv/help/extract-apk-t3674633。解决方案是下载ESFile Explorer并备份我正在为其寻找APK的应用程序。然后我可以运行adb pull /storage/emulated/0/backups/app/<my app>