如何分析 .apk 文件并了解其工作原理?

逆向工程 安卓
2021-07-03 02:02:42

我是一名 Android 应用开发者,最近遇到了应用内购买的问题。我发现在某些应用程序中,可以使用此应用程序免费进行应用程序内购买

我知道这个应用会生成免费卡片,但是生成的免费卡片比例非常高。

如何分析.apk文件?我应该遵循哪些基本步骤来逆向工程.apk并了解应用程序逻辑?

4个回答

分析Android APK的基本步骤

分析 APK 就像任何逆向工程过程。如果没有先验知识,我假设您了解 Java 并且喜欢解谜。让我们来看看反转 APK 的最基本步骤。

  • 逆向工程中的第一个也是最重要的规则是,您想知道是什么让它生效。这需要研究,因此首先研究APK的工作原理。
  • 首先,我会阅读有关文件格式的基本信息,使用维基百科(维基百科上的 APK
  • 在知道我想要反转的内容后,我会寻找已知的工具,使用 Google 或推荐的Woodmann
  • 好的,所以维基百科说它是一个 zip 文件。所以首先解压缩它,然后拿起你感兴趣的文件和工具( classes.dex )
  • 一个快速的谷歌结果产生了一个stackoverflow 问题
  • 之后你有了Java,所以woodmann 有一些Java 反编译工具。Woodmann 的 Java 反编译

祝你好运,不要放弃,记住,如果辛苦,那是值得的。如果太难,那就再努力一点。:)

对 APK 进行逆向工程的步骤

  1. 使用 APK Extractor 工具过滤掉 APK 文件。
  2. 创建一个新目录并将 APK 文件复制到那里。
  3. 将文件的扩展名从 .apk 更改为 .zip
  4. 解压缩文件。
  5. http://sourceforge.net/projects/dex2jar/下载 dex2jar
  6. 将文件解压缩到同一目录中,并将 classes.dex 文件从 .zip 文件复制到解压缩的文件中。
  7. 使用终端或命令提示符导航目录并输入 sh d2j-dex2jar.sh classes.dex
  8. 您将拥有一个包含源代码的文件夹
  9. 项目清单

这里很多人没有包括重要信息......如果你反编译为“Java”,你可能会在这个过程中丢失信息并且重新编译将不起作用。然而,它更容易阅读。这是一个链接:

https://www.decompiler.com/

如果您希望能够编辑 APK 并重新编译,请使用“ApkTool”并编辑 SMALI 代码。在将 APK 重新安装到手机上之前,您需要对 APK 进行 jar 签名并使用 zipalign。

您也可以使用IDA Pro来帮助分析代码,但是我对IDA Pro一无所知。

据我所知,反编译器和更多套件(至少我的朋友推荐它)是http://www.virtuous-ten-studio.com/index.php/downloads,它似乎至少可以执行 dex2jar。希望它至少是一个替代方案。