c# - 有没有混淆 .cmd 文件的方法?
问题描述
我创建了 ac# 程序,该程序在单击按钮时运行 .cmd 文件。但是,任何人都可以编辑该 .cmd 文件。如何混淆/保护 .cmd 文件以阻止它被反向工程?
解决方案
您可以将 .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.
}
这将计算文件的校验和并将其与正确的进行比较。如果文件已被修改,则不会执行该文件。如果发生这种情况,您可以从服务器下载正确的文件,警告用户不要这样做,或者您真正想要的任何东西。
推荐阅读
- javascript - 使用 JavaScript 使用多个下拉列表进行搜索过滤
- keycloak - 首次代理登录后keycloak UPDATE_PROFILE_ERROR
- vaadin-grid - Vaadin 14:在网格中关闭缓冲编辑器
- javascript - Axios 发布表单数据在本机反应中无法正常工作
- php - MySQL 日期相关查询在 phpMyAdmin 中运行,但不在脚本中
- azure-durable-functions - 持久功能 - 活动功能因错误“输入字符串格式不正确”而失败
- javascript - 登陆页面中的 ReactRouter 导航
- r - 为什么我在运行绘图功能时会收到“[: 下标超出范围内的错误”?
- apache-flink - Apache Flink 模式检测未找到任何匹配项
- spreadsheet - 寻找一种将数据从复制的谷歌工作簿自动复制到主工作表的方法