所以。假设我要制作一个十六进制编辑器来编辑...哦...让我们说一个.DLL文件。如何使用C#或C++编辑.DLL文件的十六进制?对于“固定部分”,我想让它可以从程序中浏览特定的.DLL,在编程的文件上有一些预先编码的按钮,当按下按钮时,它会自动执行请求的操作,这意味着该按钮已预编码,以知道在.DLL中查找什么以及要将其更改为什么。任何人都可以帮助我开始呢?如何制作固定的十六进制编辑器?
另外,最好是C#。谢谢!
所以。假设我要制作一个十六进制编辑器来编辑...哦...让我们说一个.DLL文件。如何使用C#或C++编辑.DLL文件的十六进制?对于“固定部分”,我想让它可以从程序中浏览特定的.DLL,在编程的文件上有一些预先编码的按钮,当按下按钮时,它会自动执行请求的操作,这意味着该按钮已预编码,以知道在.DLL中查找什么以及要将其更改为什么。任何人都可以帮助我开始呢?如何制作固定的十六进制编辑器?
另外,最好是C#。谢谢!
基础非常简单。
DLL或任何文件是一个字节流。
基本文件操作允许您读取和写入文件的任意部分。艺术术语基本上是“随机访问文件操作”。在C中,基本操作是read(),write()和lseek()。
读取允许您读取缓冲区中的字节流,写入允许您为文件写入字节缓冲区,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);
这从文件中读取1024个字节,开始在该文件的第200个字节,然后将其写回到在100个字节的文件。
一旦您可以更改文件中的随机字节,就需要选择要更改的字节,如何更改它们以及执行相应的读取/写入/写入以进行更改。
请注意,这些是最原始的I/O操作,根据您的语言等可能会有更好的选择,但它们都基于这些原语。
解释文件的字节,显示它们等。这是读者的练习。但是这些基本的I/O功能为您提供了更改文件的基础知识。
如果想法是加载一个十六进制编辑框,你可以使用下面的代码:Be.HexEditor 编辑一个文件的“十六进制”只不过是改变其中的字节。预编程改变的部分将是更一般的类型。但是对于实际查看,查找并选择更改任何你想要的选项,Be.HexEditor是一个不错的选择。我在一年前使用它,我希望它有一些新功能,可以让你的生活更轻松。
到目前为止您的方法是什么? – 2010-04-01 01:22:23
听起来很神奇 – sisis 2010-04-01 01:22:44
没有办法,因为此刻,我的时间有点短,但春假即将到来,男人会感到无聊。 – Kevin 2010-04-01 01:28:50