确定 Android 应用程序中语句的执行顺序?

问题描述

我必须对 Android 应用进行逆向工程,才能了解其代码的工作原理。我已经使用jadx v1.1.0来查看应用程序组件(源代码等),但是这个应用程序只允许我查看源代码。我不知道如何调试代码,或者弄清楚代码的执行顺序。我不知道这个Android应用的头部和尾部是什么。

我能做些什么来解决这种情况?

解决方法

好吧,在尝试阅读 Android 应用程序之前,您肯定需要做一些研究。但是,需要多少研究取决于您对 Java 语言的熟悉程度。如果您已经熟悉语法,那么您可以直接跳到 Android 组件生命周期(假设您的目标只是了解应用程序中发生的事情,而不是学习如何编写 Android 应用程序)。

我将从这组 Medium 文章开始。作者很好地解释了 Android 组件的各种生命周期及其回调方法:

如果您能够了解 Android 组件的生命周期及其相关回调方法,您应该能够大致了解正在发生的事情。查找名称中带有“Activity”或“Fragment”字样的 Java 文件,我将从那里开始。在这些文件中,按照 onCreateonResumeonDestroy 等命名约定查找回调方法。如果您阅读上述文章,您将大致了解调用它们的顺序,您可以确定应用的执行顺序。

从那里,有很多方法可以分支。我有一种感觉,这会给你一个足够好的开始,有足够的知识,知道从那里研究什么。

,

您需要更多地了解 Android 平台,以便为记录事件的基本序列奠定基础,但根据应用程序的复杂性,这可能需要付出相当大的努力。

我建议查看 manifest 文件,这将帮助您确定哪些(如果适用)活动是启动器,以及定义任何权限、服务和接收器。还要寻找一个扩展 Application 的类。这将是您启动时的第一个执行点。另请查看 Android 文档和示例,以了解典型的应用程序结构。

可以将此源代码迁移到存根 Android 项目中以进行调试,但这需要时间和耐心。