改写二进制文件

以下是一些常见的方法和工具:

1. 使用十六进制编辑器

十六进制编辑器 是最直接的工具之一,用于查看和编辑二进制文件中的数据。它允许你以十六进制格式查看和修改文件内容。

  • 常见十六进制编辑器
    • HxD(Windows)
    • Hex Fiend(macOS)
    • GHex(Linux)
    • Bless(Linux)

步骤

  1. 打开十六进制编辑器。
  2. 加载你要修改的二进制文件。
  3. 以十六进制或 ASCII 格式查看文件内容。
  4. 修改需要更改的字节。
  5. 保存文件。

2. 使用 xxd 命令(Linux)

xxd 是一个在 Linux 上将二进制文件转换为十六进制格式的工具,也可以用来将十六进制数据转换回二进制格式。

示例

  1. 查看二进制文件的十六进制表示:
    xxd filename.bin 
  2. 将修改后的十六进制数据转换回二进制:
    xxd -r -p hexfile.txt filename.bin 
    其中 hexfile.txt 是包含十六进制数据的文件。
    xxd -p hexfile.txt.bin > hexfile.txt

示例

#include 

int main() {

    char p[] = "hello world";
    puts(p);

    return 0;
}
cc test.c -o a.out
xxd -p test.c > test.txt

 修改 "he" 为 "HE" 即 "6865" 为 "4845"

05faf32c0c2743688b42bfd6ad12056b.png

然后

xxd -r -p test.txt > ./a.out
#执行./aout
./a.out

 065899ff60ac4eb3938ea8c0a871ff39.png

3. 使用 dd 命令(Linux)

dd 是一个强大的命令行工具,用于低级别的文件操作,可以用来读取和写入二进制数据。

示例

  1. 从文件中提取部分数据:

    dd if=filename.bin of=part.bin bs=1 skip=10 count=5 

    其中 skip=10 是跳过前10个字节,count=5 是读取5个字节。

  2. 将数据写入到文件中:

    dd if=part.bin of=filename.bin bs=1 seek=10 conv=notrunc 

    其中 seek=10 是从第10个字节开始写入,conv=notrunc 确保不会截断目标文件。

4. 使用编程语言

如果你需要更复杂的操作,可以使用编程语言(如 Python、C++)来修改二进制文件。

Python 示例

with open('filename.bin', 'r+b') as f:
    f.seek(10) # 跳到第10个字节
    f.write(b'\xFF') # 写入一个字节的值 

C++ 示例

#include 

int main() {
    std::fstream file("filename.bin", std::ios::in | std::ios::out | std::ios::binary);
    if (file.is_open()) {
        file.seekp(10);  // 跳到第10个字节
        file.put(0xFF);  // 写入一个字节的值
        file.close();
    }
    return 0;
}

 

 

你可能感兴趣的:(Linux,计算机,C语言,计算机)