【问题标题】:Can we find our C++ code in a signed APK?我们可以在签名的 APK 中找到我们的 C++ 代码吗?
【发布时间】:2019-02-12 05:45:38
【问题描述】:

我们能否通过使用 Android Studio 分析器对其进行分析,在已签名的 APK 中找到我们的 C++ 代码?如果我们能找到,那么该文件在 .apk 文件中的路径是什么。

Android Studio 在构建应用的签名 apk 时如何打包 C++ 文件?

【问题讨论】:

  • C++ file 是什么意思?
  • 您的 C++ 代码将在注入 APK 之前编译为特定于处理器的程序集。你真正想做什么?
  • 他们无法获取您的源代码,如果这是您所要求的。
  • @UserSharma - 如果您了解 APK 和 C++ 构建过程的工作原理,您将不需要文档。您是否意识到 APK 文件只是一个 ZIP 文件?将您的 APK 重命名为具有 .zip 文件扩展名并使用您喜欢的工具解压缩。您不会看到 C++ 源代码。编译代码的二进制文件不包含它们自己的源代码。
  • 您的 C++ 代码被编译为某些目标架构和 ABI 的机器代码(例如 armeabi-v7a),并打包到 .so 文件(动态库)中。原始源代码不包含在这些库中或您的 APK 中的任何其他位置。但是,如果您构建本机库的调试版本,那么它可能包含几乎看起来像您的原始 C++ 源代码的内容,因为它对于调试目的很有用。但我假设您没有公开发布您的应用程序的调试版本。

标签: android c++ android-studio cmake android-ndk


【解决方案1】:

我们能否通过使用 Android Studio 分析器对其进行分析,在已签名的 APK 中找到我们的 C++ 代码?

没有。 Android Profiler 用于收集有关 CPU、内存和网络使用情况的数据。

您可以使用APK Analyzer 查看有关您的 APK 的信息,但即使这样也不会显示您的 C++ 的源代码,如果它是正确编译的 APK,它甚至不会显示您的源代码你的 Java 也是。

Android Studio 在构建应用的签名 apk 时如何打包 C++ 文件?

C++ 源文件被编译为native code,这样,系统库就会被构建,然后通过JNI 链接到您的Java 项目中。

话虽如此,如果有人愿意,没有什么能阻止他们抓取您的 APK、分析它、找到不是 Java 字节码的特定库、在 IDA 之类的工具中反编译它们,或者只是通过调试器/反汇编器和逆向工程您的代码以自行解决(毕竟这就是我们为视频游戏控制台提供模拟器的方式),但这需要很多时间。

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 2014-02-17
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2011-09-05
    • 2020-06-15
    • 2010-12-12
    • 2015-09-12
    相关资源
    最近更新 更多