如何以二进制模式打开文件并替换十六进制字符串?

时间:2010-12-24 21:55:07

标签: c# .net binary hex

我需要以二进制模式打开并编辑可执行文件,将十六进制值替换为字符串。

在PHP中,看起来像这样:

<?php
    $fp = fopen('file.exe', 'r+');
    $content = fread($fp, filesize('file.exe'));
    fclose($fp);
    print $content;
    /* [...] This program cannot be run in DOS mode.[...] */
?>

我是如何在C#中获得它的?

3 个答案:

答案 0 :(得分:1)

public void Manipulate()
{
    byte[] data = File.ReadAllBytes("file.exe");
    byte[] newData;

    //walkthrough data and do what you need to do and move to newData

    File.WriteAllBytes("new_file.exe", newData);

}

答案 1 :(得分:0)

使用File.ReadAllBytes将文件的字节读取为字节数组。

byte[] bytes = File.ReadAllBytes('file.exe');

如果你想将它转换为十六进制字符串(我通常会建议不要这样做 - 字符串在C#中是不可变的,所以即使修改单个字节也需要复制字符串的其余部分)你可以例如使用:

string hex = BitConverter.ToString(bytes);

答案 2 :(得分:0)

您询问写入文件,但您的PHP代码是用于阅读。要处理文件,您可以使用FileStream类

using(FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Write))
{
    ....
    stream.WriteByte(byte);
    ....
}