我正在寻找一种方法来混淆(在目标代码中)一个测试 - 就像检查许可证密钥是否有效一样。我试图阻止的是有人通过图像二进制文件搜索处理响应的代码。如何在代码中混淆测试以防止篡改响应处理?
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位置的指针感兴趣。
好多了。 :) – GManNickG 2009-12-11 20:11:52
当然,您应该知道这不是一个小问题。像微软这样的大型软件公司花费数百万美元试图阻止人们绕过他们的保护,但人们仍然设法绕开他们的努力。 – 2009-12-11 20:21:08
@Charles Salvia:这是真的。我不是从这个问题寻找保护程度。 ;)然而,这是我第一次尝试这方面的东西,我不得不承认我不知道从哪里开始。 – Dubron 2009-12-11 20:25:17