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