LSAPI提供的安全性与应用程序代码的安全性和秘密值本身一样好。
将应用程序代码分发给最终用户意味着入侵者可以恢复共享的秘密,并使用它们来创建对应用程序发生的任何挑战来说似乎是正确的许可证系统流程。入侵者还可以定位和修改代码,然后比较然后验证许可证系统的挑战响应。
您应该采取防御措施,使用防病毒编程技术和其他措施来防止代码修改,也使得难以规避基本的挑战协议。以下是在开发包含对LSAPI函数的调用的应用程序时可以使用的准则。有关其他信息,请参阅表查找方法.
【当您选择许可证秘密】
为您公司的每一个应用程序选择独特的秘密。
*为每个应用程序版本选择独特的秘密。
【编写应用程序时】
*如果您在应用程序中包含秘密,则通过加密或将其散布在整个代码中来掩盖它们。
*如果可能,将大部分挑战代码和数据放在可弃置的叠加层中。
*在与许可证系统接口的代码中进行晦涩的内部校验和,并进行挑战验证。
*对LSRequest 和LSUpdate功能的呼叫使用不同的挑战值。
*验证代码偏移量,当应用程序调用质询算法时,在算法的入口点(如果适用)。
*避免简单的比较和模糊的关键比较。
*保存许可证系统返回的质询响应。在LSRequest或LSUpdate 函数调用后,请不要将其进行比较。
*在调用LSRequest或LSUpdate函数后,立即执行无意义的比较。
*多次验证挑战结果。
*使用挑战响应执行数学运算,并计算应用程序稍后在代码中验证的其他结果。
*在进行最终比较之前,可以使用挑战响应执行多个操作,如无意义的读取,比较和减法操作。如果入侵者使用硬件监视器,则此策略可以增加发生的硬件断点数,从而为入侵者造成额外的混乱。
*要验证当前许可证是否仍然有效,请定期致电LSUpdate功能。