【问题标题】:Change the hex code in c # exe更改c#exe中的十六进制代码
【发布时间】:2013-09-04 08:51:17
【问题描述】:

如何使用 C# 将图像更改为十六进制代码http://prntscr.com/1oiw50

byte[] byt = File.ReadAllBytes("D:\\\\a.exe");
string hex = new SoapHexBinary(byt).ToString().Replace("504B0304", "424C0304");
File.WriteAllBytes("D:\\\\b.exe", new SoapHexBinary(hex).Value);

Exe 不能这样工作,但我正在尝试。

【问题讨论】:

  • 迭代byt,找到4个连续字节504B0304并将它们替换为所需的值(顺便说一句:不要尝试将任意字节数组转换为字符串)。
  • String 转 Byte 类型,类型 CONVERT 知道如何在更改后再次转换一个字节。是否可以举一个 bi 正常工作的可靠例子。
  • 我不明白你在说什么。如果你问的是如何对字节数组进行替换,不,我懒得写示例代码。

标签: c# replace hex-editors


【解决方案1】:
    byte[] byt = File.ReadAllBytes("D:\\a.exe");
    for (int i = 0; i <= byt.Length - 1; i++)
    {
        if (byt[i] == 80)
        {
            if (byt[i + 1] == 75)
            {
                if (byt[i + 2] == 3)
                {
                    if (byt[i + 3] == 4)
                    {
                        byt[i] = 66;
                        byt[i + 1] = 76;
                        byt[i + 2] = 3;
                        byt[i + 3] = 4;
                    }
                }


            }
        }
    }
    File.WriteAllBytes("D:\\b.exe", byt);

你有这个代码的错误吗?我转向十进制十六进制代码字节相应地改变了。

【讨论】:

  • i + 3 可以大于byt.Length - 1。检查溢出。我想应该是i &lt; byt.Length - 4
  • 我不需要选他+3%。 exe错误,但也允许出于某种原因。我想知道我在哪里犯错。如果要举个Exe的例子。
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 2015-03-21
  • 2011-06-01
  • 2019-01-01
  • 2012-06-26
  • 2011-12-09
  • 2010-09-06
  • 2015-09-07
相关资源
最近更新 更多