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


你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。