所以。假设我要制作一个十六进制编辑器来编辑...哦...假设一个 .DLL 文件。如何使用 C# 或 C++ 编辑 .DLL 文件的十六进制?而对于“固定部分”,我想做到这样我就可以从程序中浏览特定的.DLL,在编程文件上有一些预编码的按钮,当按下按钮时,它会自动执行请求的操作,这意味着该按钮已预先编码以了解要在 .DLL 中查找什么以及将其更改为什么。谁能帮我开始做这件事?
另外,最好是C#。谢谢!
最佳答案
基础非常简单。
DLL 或任何文件都是字节流。
基本文件操作允许您读取和写入文件的任意部分。技术术语基本上是“随机访问文件操作”。
在 C 中,基本操作是 read()、write() 和 lseek()。
read 允许您将字节流读入缓冲区,write 允许您将字节缓冲区写入文件,lseek 允许您定位文件中的任何位置。
例子:
int fd = open("test.dat", O_RDWR);
off_t offset = lseek(fd, 200, SEEK_SET);
if (off_t == -1) {
printf("Boom!\n");
exit(1);
}
char buf[1024];
ssize_t bytes_read = read(fd, buf, 1024);
offset = lseek(fd, 100, SEEK_SET);
ssize_t bytes_written = write(fd, buf, 1024);
flush(fd);
close(fd);
这从文件的第 200 个字节开始读取 1024 个字节,然后在第 100 个字节处将其写回文件。
一旦您可以更改文件中的随机字节,接下来就是选择要更改的字节、如何更改它们以及执行适当的读取/查找/写入以进行更改的问题。
请注意,这些是最原始的 I/O 操作,根据您的语言等,您可能可以使用更好的操作。但它们都是基于这些原语的。
解释文件的字节,显示它们等等。这是给读者的练习。但这些基本的 I/O 功能为您提供了更改文件的基础知识。
关于c# - 如何制作固定的十六进制编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557598/