【问题标题】:Android binary disassembling and debugging protectionAndroid二进制反汇编调试保护
【发布时间】:2011-08-03 11:31:10
【问题描述】:

假设我想保护 Android 二进制文件不被反汇编或字节码调试 - 市场上有针对 java 和原生 C/C++ 代码的解决方案吗?

非常感谢 钢

【问题讨论】:

  • 你对 C++ 的 android 市场上的东西是什么意思?
  • 我的意思是,使用 NDK,您可以编写 C/C++ 代码并将其与 Java 代码一起打包到 NDK 中。我问是否有任何反反汇编或反调试解决方案 - Dalvik java 二进制文件和 linux 可执行文件(对于使用 NDK 开发的项目部分)。

标签: android debugging encryption disassembly dex


【解决方案1】:

编译一个二进制文件应该足以混淆它,java/dalvik字节码可以被proguard混淆,它是built in eclipse ADT plugin。

问候, 斯蒂芬

【讨论】:

  • 嗨,我们还有什么可以做的吗?二进制部分的非对称加密,因此Java字节码将在飞行中被解码,然后再传递给JVM执行?我可以想象这在理论上是可能的。但我想智能手机上没有这样或更复杂的东西......我在 MS-DOS 时代做类似的事情,当时在 PC 上开发了许多反汇编/反调试技术(可能这仍然有效)... 它是在商业中根本没有使用的东西,还是不仅仅在 Android 上使用?
  • 您有没有注意到,在任何平台上,从来没有一个应用程序是用任何语言编写的,并且经常在正式发布之前不受盗版保护和传播? Java 很有趣。就好像它运行的系统被设计为被黑客入侵一样。 C++ 更适合保护,但我担心你会发现普通的 C++ 黑客比普通的 C++/Android 开发人员更敏感,他们已经考虑过你的解决方案并为他们提供了自己的解决方案......
  • 嗨,我确信你写的一切都是真实的,是的,它会被黑客入侵,但我仍然对是否有一些解决方案感兴趣。
  • 我曾经在 Java 中为桌面应用程序加密类文件,并在运行时在类加载器中解密它们。但我认为这对于 android 来说是不必要的。这只是为了让我的学生更难反编译代码,但我猜一个真正的黑客会很容易地绕过这种额外的保护。所以我认为它不再值得了。
【解决方案2】:

基本上不可能 100% 保护您的二进制文件。但是,您可能会增加逆向工程师反编译源代码的复杂性。

如果您正在使用 JAVA/Kotlin 开发您的 android 应用程序,那么即使您使用 Proguard/dexguard 来混淆您的代码,逆向工程师也可以轻松地反编译您的源代码。

因此,更好的选择是使用 NDK 开发您的业务逻辑并在 java/kotlin 代码中访问它。逆向工程师反编译你的so文件会比较困难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-18
    • 2012-12-26
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    相关资源
    最近更新 更多