我知道这个问题会相当模糊,但我不确定如何从这里开始。
我正在尝试了解如何制作密钥生成器。
我一直在玩 IDA 并设法将应用程序密钥检查函数重建为 C,直到我可以检查密钥是否有效。这个过程使用了很多按位运算,例如移位和掩码,这让我想知道如何反转该算法。
验证步骤如下:
- 从序列号中,使用将字符映射到其他值的关联表
- 从这些值中,使用带有 bitshift|bitmasks 的块散列,以便
char[n]
依赖于char[n-1]
。 - 从硬编码值生成密钥。
- 使用 2 的结果生成 2 个表。 Table1 = Step2 用 Step3 编码。Table2 是 Table1 用 Step3 编码
- 根据某些位掩码,使用 Step4 中的表对 Step2 进行编码。
所以这整个事情是相当复杂的。此外,信息不断丢失,因此不可能以完全相反的操作顺序编写代码(或者我不知道如何)。
我将自己置于想要制定此保护计划的人的立场。从解码输出生成序列必须是可能的。要么这整个过程是可逆的,要么有一个功能可以充当后门之类的东西来立即逆转它,我强烈怀疑这一点。
关于我现在应该寻找的东西有什么想法吗?