【发布时间】:2016-10-25 10:03:46
【问题描述】:
我正在做一个 POC 来使用 android NDK 保护字符串。我在 C++ 代码中保留了一个字符串“我的密钥”,然后使用 JNI 在 Java 中访问它。应用程序运行没有任何问题。 然后我反编译了apk文件。现在我仍然可以在 .so 文件中看到字符串“我的密钥”。 如何使用 NDK 方法保护字符串。
【问题讨论】:
-
在构建共享库之前,您必须 (1) 破坏字符串 (2) 这样做。要么使用标准预处理器,要么添加一个自定义预处理步骤 (3) 调整您的代码,以便在需要时了解损坏和去错。但是请注意,可以通过监视进程的内存映像来捕获解组后的字符串。
-
不要打扰 - 任何带有调试器的根 Android 都可以获取您的字符串。
-
@RichardCritten,
strings libXXX.so命令中可见的字符串与涉及 gdb 的字符串之间存在差异。 -
@AlexCohn 这一切都取决于您试图保护的资源的价值以及如果/当它受到损害时您必须付出的努力。 OP 的帖子没有描述“我的密钥”的用例——所以我们不知道他试图保护的东西的价值。
-
请问如何打开.so文件?
标签: android c++ security android-ndk shared-objects