MASTG-TECH-0013: 逆向工程 Android 应用
Android 的开放性使其成为逆向工程师的有利环境,提供了 iOS 所没有的巨大优势。 由于 Android 是开源的,您可以在 Android 开源项目 (AOSP) 中研究其源代码,并以您想要的任何方式修改操作系统及其标准工具。 即使在标准的零售设备上,也可以执行诸如激活开发者模式和侧载应用程序之类的操作,而无需经历太多的困难。 从 SDK 附带的强大工具到各种可用的逆向工程工具,有很多好处可以使您的生活更轻松。
但是,也有一些 Android 特有的挑战。 例如,您需要同时处理 Java 字节码和本机代码。 Java 本机接口 (JNI) 有时会被故意用来迷惑逆向工程师(公平地说,使用 JNI 有其合理的理由,例如提高性能或支持遗留代码)。 开发人员有时会使用本机层来“隐藏”数据和功能,并且他们可能会构建他们的应用程序,使得执行经常在两层之间跳转。
您至少需要对基于 Java 的 Android 环境以及 Android 所基于的 Linux 操作系统和内核有一定的工作知识。 您还需要合适的工具集来处理在 Java 虚拟机上运行的字节码和本机代码。