更改正在运行的应用程序的 MD5 哈希

Changing MD5 Hash of a running application

提问人:Adrian Silicto 提问时间:11/15/2023 更新时间:11/15/2023 访问量:29

问:

嘿,所以我想在我的 winform 应用程序中实现一个按钮,该按钮将更改应用程序的 MD5 哈希值。除了一件事之外,我设法完成了所有事情,那就是,我怎样才能在自己的应用程序上做到这一点。因此,应用程序会更改自己的哈希值,然后自行关闭。到目前为止,我收到 SystemIO 异常,上面写着“它正在被另一个进程使用”,是的,我知道这一点,但有什么办法可以解决它吗?也许应用程序会自行关闭并更改自己的哈希值?

    private void changeMD5(string fileNames)
    {
        Random random = new Random();
        Thread.Sleep(1000);

        for (int i = 0; i < fileNames.Length; i++)
        {
            int num = random.Next(2, 7);
            byte[] extraByte = new byte[num];
            for (int j = 0; j < num; j++)
            {
                extraByte[j] = (byte)0;
            }
            long fileSize = new FileInfo(fileNames).Length;

            using (FileStream fileStream = new FileStream(fileNames, FileMode.Append))
            {
                fileStream.Write(extraByte, 0, extraByte.Length);
            }
            int bufferSize = fileSize > 1048576L ? 1048576 : 4096;
            string md5hash = "";
            using (MD5 md = MD5.Create())
            {
                using (FileStream fileStream2 = new FileStream(fileNames, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize))
                {
                    md5hash = BitConverter.ToString(md.ComputeHash(fileStream2)).Replace("-", "");
                }
            }
        }
    }

这是我更改 MD5 哈希值的代码

C# 哈希 MD5

评论

1赞 Fildor 11/15/2023
我不明白。哈希就是哈希。如果你想“改变”它,你需要改变被哈希处理的东西。这就是哈希的总体目的。如果两个哈希值相同,则哈希值是(很可能)相同的。如果散列的内容只有如此细微的差异,则散列值将有很大差异。因此,如果您想要不同的文件哈希值,则需要更改文件。但是,阻止正在运行的 .exe 文件进行更改。这让我想到了一个问题:你想做什么?
0赞 Adrian Silicto 11/15/2023
因此,例如,有像 Hash Changer 这样的应用程序。您上传一个文件,按下一个按钮并完成,您的 exe 有一个新的 MD5 哈希值。所以这就是我试图做的,但没有使用任何第三方应用程序。我这样做的原因是,我的应用程序每次运行时都必须不同,以避免被另一个正在主动扫描后台运行的所有应用程序检测到。
2赞 Simon Goater 11/15/2023
您是否正在尝试将零字节附加到文件中,以便获得不同的哈希值?为什么除了恶意软件之外,其他任何东西都需要这样做?
0赞 Adrian Silicto 11/15/2023
好吧,它不是恶意软件,它正在避免反作弊,因为它正在标记它。这不是游戏作弊,而是改装工具
0赞 Charlieface 11/15/2023
这里有很多事情没有意义:为什么要循环文件名的长度?为什么是随机数的字节,MD5 破解涉及特定的计算以获得正确的填充。最终的 MD5 计算有什么意义,你没有对结果做任何事情?为什么要使用正在运行的应用程序来更改自身,为什么不使用另一个应用程序,这样您就不会遇到文件锁定问题?

答: 暂无答案