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

发布于 2024-10-09 06:43:03 字数 357 浏览 2 评论 0原文

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

在 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.[...] */
?>

How I get it in C#?

I need open and edit a executable file in binary mode, to replace hex value as string.

In PHP, looks like this:

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

How I get it in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寂寞美少年 2024-10-16 06:43:03
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);

}
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);

}
笑梦风尘 2024-10-16 06:43:03

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

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

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

string hex = BitConverter.ToString(bytes);

Use File.ReadAllBytes to read the bytes of a file as a byte array.

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

If you want to convert this to a hex string (and I'd in general I'd advise against doing so - strings are immutable in C# so modifying even a single byte will require copying the rest of the string) you can for example use:

string hex = BitConverter.ToString(bytes);
指尖凝香 2024-10-16 06:43:03

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

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

You ask about writting to file, but you PHP code is for reading. For working with files you can use FileStream class

using(FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Write))
{
    ....
    stream.WriteByte(byte);
    ....
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文