我目前正在开发一些安全码。此代码具有可能无法更改的特定算法
如果有人要反编译我的代码,他们很容易重新创建代码并反向生成代码,以便该人能够绕过该代码。即使它被混淆了。
我和一位朋友谈到了这个问题,他建议我添加一些毫无意义的操作。像
var1 += 1;
var1 -= 1;
但是我需要一些不易理解的方法,并且不应该非常耗费功率 我主要使用长值,因此Java long值的一些操作将非常有用。
环境是linux系统。系统本身是安全的,但有可能有人能够获得编译的代码。
代码将用于验证客户端。服务器和客户端将使用相同的代码。代码的主要目的是生成一个验证密钥,该密钥对每个客户端都是唯一的,并且会经常更改。
该算法并非由我设计。我只是唯一可以正确编程的人。
算法的工作基本上是生成类似哈希的东西。它使用几个不同的输入(其中一些是静态的,其中一些经常更改),然后返回一个包含客户端将用于验证的哈希的String。通信本身使用SSL保护。因此潜在的攻击者需要自己获取二进制文件。还有一些变化的输入在二进制文件中,有些则不是。
我知道混淆不会阻止每个攻击者,但我确信是否有大量的混淆,大多数攻击者都会失去兴趣。
我确实知道这一点,因为我们经常受到一些初学者“黑客”的攻击。他们中的大多数人甚至都知道Java,有些人足以阅读简单的混淆代码。这些是我们试图阻止理解我们的算法。 (我无法提供有关算法本身的更多细节。显然出于安全原因)
该算法使用了很多long。如果有大量无意义的代码,我认为这会给RE的过程增加很多时间。 (我希望这足以说明环境和算法本身。如果没有,请提出更具体的问题)
答案 0 :(得分:3)
你想要做的事情将永远不会是通过默默无闻的安全。就客户端身份而言,您无法添加SSL提供的安全性。只需在客户端上生成足够随机的ID(如UUID)并将其安全地存储在客户端上。通过经常更改此ID,您甚至无法获得太多收益。