验证 – Windows DLL是否由Microsoft签名?我能否发现他们是否被
我正在为我的软件实现锁定和复制保护系统.我已经关闭了每一个允许有人打破锁定的洞(嗯,这有点过于乐观,我知道!)但最后一件事就是这样:
我听说破解者可以像我使用的API一样改变像Kernel32.dll这样的Windows DLL,返回一个由破解者指定的值.我需要阻止这一点. 起初我以为我可以为我使用的每个DLL创建一个哈希值,并根据客户端DLL的计算哈希检查该哈希,以查看该文件是否已更改.这不起作用,因为对于不同版本的Windows有许多不同版本的DLL,并且Microsoft提供的每个修补程序和Service Pack都可以更改该文件. 然后我意识到我可以检查文件的签名,以确保它具有有效的Microsoft签名.现在有两个问题: > Microsoft是否签署了Windows DLL?我怎样才能找到关于此签名的一些信息? 任何演练都非常感谢.我的应用程序是使用Visual Basic.NET编写的. 多谢你们. 解决方法
MS会签署一些系统二进制文件,具体取决于Windows和二进制文件的版本.例如,如果您在Windows XP上使用
check kernel32.dll:
C:Windowssystem32>sigcheck kernel32.dll Sigcheck v1.5 Copyright (C) 2004-2008 Mark Russinovich Sysinternals - www.sysinternals.com C:Windowssystem32kernel32.dll: Verified: Signed Signing date: 02:07 14/04/2008 Publisher: Microsoft Corporation Description: Windows NT BASE API Client DLL Product: Microsoft? Windows? Operating System Version: 5.1.2600.3119 File version: 5.1.2600.3119 (xpsp_sp2_grd.070416-1301) 您还可以使用sigcheck来查找特定文件夹中的所有未签名二进制文件等内容,例如: sigcheck -u -e c:windowssystem32 我相信你的第二个问题的答案是“不”,虽然MS确实使用root certificates进行某些验证.它不会在其Windows系统二进制文件中发布公钥,因为密钥对可以并且确实会发生变化. 但从根本上说,如果你不信任操作系统,那么无论如何你都是如此. 面对它,您的应用程序将被破解.我的建议是只花1%的努力来减缓破解过程,99%的努力是创造值得破解的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |