【发布时间】:2010-12-25 19:43:58
【问题描述】:
我正在寻找一种方法来混淆(在目标代码中)测试 - 类似于检查许可证密钥是否有效的方法。我试图阻止的是有人在图像二进制文件中搜索处理响应的代码。
bool checkError = foo();
if ( checkError ) // I'd like to avoid making a simple check like this one.
{
// process response
}
这是一个简单的例子,但不是推荐的方法:
int check = 71 * 13;
check += 35 * isValid(); // will only return 0 or 1
//later (delayed execution of response)
if ( check % 71 )
{
//process response
}
编辑: 澄清一下,实际测试已经完成,我得到了通过/失败的回报。我的响应处理将是一个基本的 jmp,并且会对如何混淆 jmp 的位置的指针感兴趣。
【问题讨论】:
-
您当然应该知道,这不是一个小问题。像微软这样的大型软件公司花费数百万美元试图阻止人们绕过他们的保护,但人们仍然设法绕过他们的努力。
-
@Charles Salvia:这是真的。我不只是从这个问题中寻找保护程度。 ;) 然而,这是我第一次尝试这样的方式,我不得不承认我不知道从哪里开始。
-
Macrovision 甚至购买了 InstallShield 以支持复制保护软件。但它并没有真正停止任何事情。硬件加密狗已经变得非常罕见,因为它们也没有做太多事情(一切总是最终归结为软件,此时它变得可破解)。 SlySoft 会定期将泄露的密钥列入黑名单,但其他人会在每次发布时不断发布新密钥。我发现混淆最适合娱乐(比如比赛),而不是真正的版权保护。
标签: c++