首页 > 解决方案 > 有没有混淆 .cmd 文件的方法?

问题描述

我创建了 ac# 程序,该程序在单击按钮时运行 .cmd 文件。但是,任何人都可以编辑该 .cmd 文件。如何混淆/保护 .cmd 文件以阻止它被反向工程?

标签: c#batch-filecmd

解决方案


您可以将 .cmd 文件设置为只读(右键单击 > 属性 > 只读)但是,这不是很安全,因为 Windows 权限系统并不是最好的。

主意

我建议在执行之前检查文件,看看它是否未经编辑。为此,您可以对文件进行哈希处理,并将其与您的哈希值进行比较。只要您将散列硬编码到您的软件中,就很难进行逆向工程。

执行

计算正确的校验和

string CMDFileChecksum()
    using var md5 = MD5.Create();
    using var stream = File.OpenRead(PATH_TO_YOUR_CMD)

    var hash = md5.ComputeHash(stream); // Compute the hash
    return BitConverter.ToString(hash)
        .Replace("-", "").ToLowerInvariant(); // Convert the hash to a string
}

检查文件

然后您需要运行一次才能获得正确的哈希值。复制结果并像这样使用它:

// Put your checksum as calculated by CMDFileChecksum() herer
const string correctChecksum = "CHECKSUM"; // Use const to bake the string into the code

if (correctChecksum == CMDFileChecksum())
{
    // Run the CMD file
}
else
{
    // The CMD file has been edited => throw error or warn user etc.
}

这将计算文件的校验和并将其与正确的进行比较。如果文件已被修改,则不会执行该文件。如果发生这种情况,您可以从服务器下载正确的文件,警告用户不要这样做,或者您真正想要的任何东西。


推荐阅读