DexGuard如何encryption类?

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

DexGuard可以encryptionAndroid应用程序吗? 还是只是混淆了代码? DexGuardencryption如何工作? 如果您可以提供反编译前后使用DexGuard运行的示例应用程序的代码,那就太棒了。

ProGuard提供了名称混淆function:它可以用短而无意义的名称replace类,方法和字段的原始名称。 DexGuard另外提供stringencryption和类encryption。 术语encryption在这种情况下可能会令人困惑,因为这些基本上是更加激进的混淆types。 指定的string和类以某种有意复杂的encryptionforms存储,并在运行时使用必要的应用程序可用的密钥和algorithm进行解密。 在某些方面,Google Play市场可以为Android 4.1encryption整个应用程序。 然后,运行时环境以受控的方式在执行之前解密应用程序。

(我是ProGuard和DexGuard的开发人员 – 如果您有兴趣,请随时与我们联系)

旧版本的DexGuard使用“DES”Alg来encryption指定的类。 后来它改变了“AES”alg。 指定类encryption后,通过数据arrays格式将encryption数据存储到另一类中,采用解密方式。 Dex中的静态块解密方法是clinit格式的方法,使用控制stream混淆和API隐藏混淆。 所以解密方法有点混乱。 在其他类中,将指定的类更改引用到reflection操作码。 每次运行APK时,都会先用静态方法解密encryption的类。 解密后的类将使用reflectionAPI加载到dvm内存中。 所以其他类可以正确引用指定的类。 而已。 在我看来,DexGuard是非常强大的混淆工具。 如果每个function模糊处理都适用于APK,则需要花费大量的时间来翻转整个真实的程序。

虽然他们使用术语encryption,但它似乎是真正的混淆。 我这样说只是因为虽然他们可能encryption某些string/值…encryption密钥也必须存储在应用程序的事实意味着他们提供了一个“locking”的代码,同时打包“密钥“ 用它。