我需要以二进制模式打开并编辑可执行文件,将十六进制值替换为字符串。
在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#中获得它的?
答案 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);
....
}