如何制作固定的十六进制编辑器?

时间:2010-04-01 01:19:55

标签: c# c++ dll hex

因此。假设我要创建一个十六进制编辑器来编辑...哦...让我们说一个.DLL文件。如何使用C#或C ++编辑.DLL文件的十六进制?对于“固定部分”,我想制作它以便我可以从程序中浏览特定的.DLL,在编程文件上有一些预编码按钮,当按下按钮时,它将自动执行请求的操作,意味着该按钮已经过预编码,以便知道.DLL中要查找的内容以及要将其更改为的内容。任何人都可以帮我开始这个吗?

另外,最好是C#。谢谢!

2 个答案:

答案 0 :(得分:2)

基础知识非常简单。

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

从文件中读取1024个字节,从文件的第200个字节开始,然后以100个字节将其写回文件。

一旦你可以改变文件中的随机字节,就需要选择要更改的字节,如何更改它们,以及进行适当的读取/ lseeks / write来进行更改。

请注意,这些是最原始的I / O操作,根据您的语言等,您可以使用更好的I / O操作。但它们都基于这些原语。

解释文件的字节,显示它们等等。这是读者的练习。但是这些基本的I / O功能为您提供了更改文件的基础知识。

答案 1 :(得分:0)

如果想要加载十六进制编辑框,您可以使用以下内容:Be.HexEditor 编辑文件的“十六进制”只不过是改变文件中的字节。具有预编程变化的部分将是更一般的类型。但是对于实际查看,找到然后可以选择更改任何你想要的东西,Be.HexEditor是一个不错的选择。我在一年多前使用它,我希望它有一些新功能,可以让你的生活更轻松。