我正在尋找一種方法來混淆(在目標代碼中)一個測試 - 就像檢查許可證密鑰是否有效一樣。我試圖阻止的是有人通過圖像二進制文件搜索處理響應的代碼。如何在代碼中混淆測試以防止篡改響應處理?
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