我想看看 DexGuard 是如何工作的,但它似乎没有免费试用版。
DexGuard 可以加密 Android 应用程序吗?或者它只是混淆了代码?DexGuard 加密如何工作?如果您可以在反编译前后提供使用 DexGuard 运行的示例应用程序的代码,那就太好了。
我想看看 DexGuard 是如何工作的,但它似乎没有免费试用版。
DexGuard 可以加密 Android 应用程序吗?或者它只是混淆了代码?DexGuard 加密如何工作?如果您可以在反编译前后提供使用 DexGuard 运行的示例应用程序的代码,那就太好了。
ProGuard提供名称混淆:它可以用简短的、无意义的名称替换类、方法和字段的原始名称。DexGuard还提供字符串加密和类加密。在这种情况下,术语加密可能会令人困惑,因为这些基本上是更激进的混淆类型。指定的字符串和类以某种故意复杂的加密形式存储,并在运行时使用应用程序必须可用的密钥和算法进行解密。在某些方面类似,Google Play 市场可以为 Android 4.1 加密整个应用程序。然后,运行时环境以受控方式在应用程序执行之前对其进行解密。
(我是 ProGuard 和 DexGuard 的开发者——如果您有兴趣,请随时与我们联系)
旧版本的 DexGuard 使用“DES”算法加密指定的类。后来它改变了“AES”算法。对指定类进行加密后,将加密后的数据以数据数组的形式,以解密的方式存储到另一个类中。Dex中作为静态块的解密方法是使用控制流混淆和API隐藏进行混淆的clinit格式方法。所以对解密方法进行去混淆处理就有点麻烦了。在其他类中,将指定的类更改引用到反射操作码。每次APK运行时,加密的类都会先用静态方法解密。解密后的类将使用反射 API 加载到 dvm 内存中。因此其他类可以正确引用指定的类。就是这样。在我看来,DexGuard 是一个非常强大的混淆工具。如果每个功能混淆都适用于 APK,
尽管他们使用了加密这个词,但似乎它确实是一种混淆。我这么说只是因为尽管它们可能会加密某些字符串/值……事实上,加密密钥也必须存储在应用程序中,这意味着它们为代码提供“锁”,同时打包“密钥” “ 用它。