DexGuard如何加密类?

时间:2012-11-06 06:30:28

标签: android encryption proguard dexguard

我想查看DexGuard是如何工作的,但它似乎没有免费试用版。

DexGuard可以加密Android应用程序吗?或者只是简单地混淆代码? DexGuard加密如何工作?如果您可以在反编译之前和之后提供使用DexGuard运行的示例应用程序的代码,那就太棒了。

3 个答案:

答案 0 :(得分:55)

ProGuard提供名称混淆:它可以用简短无意义的名称替换类,方法和字段的原始名称。 DexGuard还提供字符串加密和类加密。术语加密在这种情况下可能会令人困惑,因为这些基本上是更具攻击性的混淆类型。指定的字符串和类以一些有意复杂的加密形式存储,并在运行时使用应用程序必需的密钥和算法进行解密。在某些方面,Google Play市场也可以加密Android 4.1的整个应用程序。然后,运行时环境以受控方式在应用程序执行之前对其进行解密。

(我是ProGuard和DexGuard的开发者 - 如果您有兴趣可以随时联系)

答案 1 :(得分:3)

DexGuard在旧版本中使用“DES”Alg来加密指定的类。后来改变了“AES”alg。 加密Specified类后,通过数据阵列格式和加密方法将加密数据存储到另一个类中。在Dex中作为静态块的解密方法是临时格式方法,其使用控制流混淆和API隐藏进行混淆。因此,对解密方法进行反混淆处理是一点点。在其他类中,将指定的类更改引用到反射操作码。每次APK运行时,加密的类将首先以静态方法解密。解密的类将使用反射API加载到dvm内存中。所以其他类可以正确引用指定的类。而已。在我看来,DexGuard是一个非常强大的混淆工具。如果每个功能混淆都适用于APK,则会花费您大量时间来反转整个真实程序。

答案 2 :(得分:1)

虽然他们使用术语加密,但它似乎真的是混淆。我这样说只是因为虽然它们可能会加密某些字符串/值...加密密钥也必须存储在应用程序中的事实意味着它们为代码提供“锁定”,同时打包“密钥” “有了它。