繁体   English   中英

使用 dll 关闭 wpf 应用程序

[英]Close wpf application using dll

我有一个 dll ,其中有一个“身份验证”方法,用于检查密码是否有效,如下所示:

public static void AuthenticationExample(string password)
{
    if (PasswordIsValid(password))
        this.locked = false;
}

为了防止密码被循环“破解”,我希望该方法在身份验证失败时使整个应用程序崩溃,如下所示:

public static void AuthenticationExample(string password)
{
    if (PasswordIsValid(password))
        this.locked = false;
    else
        Crash();
}

有没有办法做到这一点?

或者,保护 dll 的更好方法是什么?

关闭 WPF:

您可以只调用主 window 并关闭它或抛出自定义异常。

密码保护:

我有同样的问题。 最后,明白了无论做什么,都可以破解。 没有什么是失败的证明。 如果您的许可证验证是在云端完成的,例如将一些信息发送到服务器并接收回响应,则可以在一定程度上对其进行管理。

仅仅因为一切都可以被黑客入侵,并不意味着您必须让您的产品敞开大门以供破解。 你可以添加一些障碍,这样饼干就不难了。 如果产品值得付出努力,最终会有人破解它。

对于我的应用程序,我有 2 或 3 个许可步骤(这可以减慢黑客的速度,但不能阻止他/她)

  1. dll(例如,DLL-A),带有用于验证许可证的加密方法。 DLL-A 将被放置在工作目录中。 除此之外,此 dll(例如 DLL-B)的副本也将作为嵌入式资源放置。

  2. 在运行时,当即将加载 DLL-A 时,将提取 DLL-B 并比较两者的 hash。 这是为了确保 DLL-A 不被篡改。 如果 DLL-A 被篡改,则 DLL-B 将替换 DLL-A。

  3. 除了 dll 方法外,还将使用 XML 签名文件。 这将在代码中的某处得到验证。

  4. 一个 C++ 本机库,具有不同的加密方法。 这也将用于类似于 DLL-A /DLL-B 过程(步骤 1,2)。

因此,在我的应用程序中,我通常使用 3 到 4 种不同的许可证验证方案。 都是独立的。 即使一切都可以被黑客入侵和破坏,黑客将不得不厌倦尝试入侵所有 4。每年,我都会更改我的许可方法并更新新的应用程序。 因此,这意味着每年,黑客都必须花费大量时间来破解它。 (这最终会让他们感到沮丧)。

最重要的是,我还为我的应用程序(将凭据存储在云数据库中的应用程序)进行了基于云的验证。 但是,仍然有一些客户希望他们的应用程序在没有连接到互联网的情况下运行(由于某些安全原因)。

注意:最终一切都可以破解。 关键是你只是让黑客很难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM