我使用 C++/MFC 进行开发,并将所有资源放在一个单独的 DLL 中。
我见过资源 DLL 被修改并且产品以不同的名称、图形等非法销售的案例。
如何防止资源 DLL 被修改/黑客攻击?
我使用 C++/MFC 进行开发,并将所有资源放在一个单独的 DLL 中。
我见过资源 DLL 被修改并且产品以不同的名称、图形等非法销售的案例。
如何防止资源 DLL 被修改/黑客攻击?
签名,然后检查签名是否有效。我会为公司使用某种官方证书,但自签名就可以了。
一个快速的谷歌出现了:
数字代码签名分步指南(尽管它看起来像是适用于 Office XP)
更新:
签署 EXE 也是值得的。
正如评论中所指出的,您无法阻止有足够技能的人篡改您的应用程序。这都是关于风险管理的。您想冒多大的风险让某人篡改您的应用程序。是否值得花时间和精力来提高标准,以便您需要一个更熟练的人来调整您的申请?这取决于你。
我至少会签署您发布的所有代码文件。它会验证这些文件是否来自您并且未被篡改。
如果您信任您的应用程序,您可以在发送之前计算资源 dll 的哈希值,并拒绝 dll:s 与其他哈希值。
您可以对 dll 二进制文件进行校验和,从主程序中对其进行检查,如果不同,则退出/禁用功能。它不会阻止某人一心想扯掉你的东西,因为他们可以破解你 exe 中的检查代码,但至少不会那么容易。
你不能。此类问题必须通过法律而非法规来处理。另请注意,任何此类“解决方案”都可能侵犯用户的合理使用权。我经常为了好玩而修改程序资源(例如在 Windows 登录页面上放一个 Tux)。我没有欺骗任何人,甚至没有分发结果。
你不能阻止你的应用程序被黑客入侵,就像你不能阻止你的汽车被盗一样,当然,你可以拥有最先进的警报系统,如果它检测到它不是车主而是某人,它就会开火可能只是打破玻璃或穿防火服。简而言之,你不能。
如果这是商业软件并且您担心被盗,那么您应该查看第三方解决方案。有很多软件旨在保护共享软件。它们是具有不同功能的不同价格。
正如其他人所说,没有纯软件解决方案是完全安全的。但我建议将其外包并专注于您的应用程序提供的业务价值。
正如每个人都说的那样,你只能提高标准以使其更难破解,我不会花更多的时间在这上面,而不是像 disown 所暗示的那样拥有一个哈希。考虑这一点的另一种方法(如果您的软件允许)是通过更新等使您的软件长期具有吸引力。这样人们会想要您的帐户而不是黑客版本。
您可以使用加密密码对其进行压缩,然后在重新加载之前将其解压缩到临时位置。就像是
BOOL CMyApp::InitInstance()
{
CString TempName = TempFileName();
Unzip("MyZippedResources.Zip",TempName,Password);
HINSTANCE hInst = LoadLibrary(TempName);
}
有很多免费的 zip 库可以覆盖上面的解压和密码保护