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);
}
发表评论