void ReadWriteFile(char *filename) { int fd; size_t size; struct stat stat_buf; void *addr = NULL; char s[] = "www.dllhook.com"; // 打开文件-不存在则创建 fd = open(filename, O_RDWR | O_CREAT); /* 或者用下面的create创建文件 if (fd == -1) { fd = creat(filename, O_RDWR); } */ // 写文件 write(fd, s, sizeof(s)); // 写入结果 www.chinapyg.com // 得到文件信息 fstat(fd, &stat_buf); size = stat_buf.st_size; // 映射到内存-可读写 addr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, 0); // 直接对内存进行改写 -- 将www替换为bbs memcpy(addr, "bbs", 3); // 同步到文件 msync(addr, size, MS_ASYNC); munmap(addr, size); close(fd); }
发表评论