gpt4 book ai didi

validation - Windows DLL 是否由 Microsoft 签名?我可以检测它们是否被第三方篡改过吗?

转载 作者:行者123 更新时间:2023-12-04 22:38:56 26 4
gpt4 key购买 nike

我正在为我的软件实现锁定和复制保护系统。我已经关闭了所有允许有人打破我的锁的漏洞(好吧,我知道这有点太乐观了!)但最后一件事是:

我听说破解者可以通过我使用的 API 返回破解者指定的值的方式更改 Windows DLL,例如 Kernel32.dll。我需要防止这种情况。

起初我以为我可以为我使用的每个 DLL 生成一个散列值,并根据计算出的客户端 DLL 的散列检查该散列值,以查看文件是否已更改。这是行不通的,因为不同版本的 Windows 有许多不同版本的 DLL,并且 Microsoft 提供的每个修补程序和 Service Pack 都可以更改该文件。

然后我意识到我可以检查文件的签名以确保它具有有效的 Microsoft 签名。现在有2个问题:

  • Microsoft 是否签署了 Windows DLL?我如何才能找到有关此签名的一些信息?
  • 是否提供公钥来验证签名?如何使用此 key 验证文件?

  • 任何演练都非常感谢。我的应用程序是使用 Visual Basic.NET 编写的。

    谢谢你们。

    最佳答案

    MS 会签署一些系统二进制文件,具体取决于 Windows 和二进制文件的版本。例如,如果您在 Windows XP 上使用 check kernel32.dll:

    C:\Windows\system32>sigcheck kernel32.dll
    Sigcheck v1.5
    Copyright (C) 2004-2008 Mark Russinovich
    Sysinternals - www.sysinternals.com

    C:\Windows\system32\kernel32.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:\windows\system32 

    我相信您的第二个问题的答案是“否”,尽管 MS 确实将 root certificates 用于某些验证目的。它不会在其 Windows 系统二进制文件中发布公钥,因为 key 对可以并且确实会发生变化。

    但从根本上说,如果你不信任操作系统,那么无论如何你都是 fubar。

    面对现实吧,您的应用 将被破解 。我的建议是只花费 1% 的精力来减缓破解过程,而将 99% 的精力花在创造值得破解的东西上。

    关于validation - Windows DLL 是否由 Microsoft 签名?我可以检测它们是否被第三方篡改过吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386066/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com