如果加密功能需要密钥,那么如何在源中对密钥进行混淆处理,以使反编译不会显示密钥,从而启用解密?

最佳答案

答案很大程度上取决于平台和开发工具,但总的来说,没有可靠的解决方案。加密功能是必须以“自然”形式提供密钥的位置。因此,黑客所需要做的就是将断点放在那里并转储密钥。甚至不需要反编译任何东西。因此,任何混淆都只对新手有用,或者在由于任何原因无法进行调试时。使用应用程序中存在的文本字符串作为键是一种变体。

但是,最好的方法当然是不要把钥匙放在里面。根据您的使用场景,有时您可以使用一些系统信息(例如智能手机的IMEI)作为密钥。在其他情况下,您可以在安装应用程序时生成密钥,并将该密钥存储为应用程序数据的组成部分(例如,使用数据库的列名作为密钥,或类似的名称)。

如前所述,当可以运行调试器时,所有这些操作都相对容易跟踪。

抵制调试是一回事-将解密工作转移给第三方。这可以通过使用外部密码设备(USB密码 token 或智能卡)或通过调用Web服务对信息的某些部分进行解密来完成。当然,这些方法也仅适用于有限的场景。

10-07 13:00