| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1416 人关注过本帖
标题:关于CreateFileMapping的api的问题
只看楼主 加入收藏
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:3 
关于CreateFileMapping的api的问题
程序代码:
#include<Windows.h>
#include<stdio.h>

int main() {
    HANDLE hMapping;
    char *buf;
    HANDLE hThread;
    char shellcode[] = "my shellcode";
    //创建内核对象:物理页
    hMapping = CreateFileMapping(
        INVALID_HANDLE_VALUE, //为NULL则为创建物理页
        NULL,
        PAGE_EXECUTE_READWRITE, //物理页的属性 为 可读写执行
        0,
        0x1000,
        NULL //指定映射名
    );


    //将当前进程中的虚拟地址与物理页进行映射
    buf = (char *)MapViewOfFile(
        hMapping,
        FILE_MAP_ALL_ACCESS,  //虚拟内存的属性,并且物理内存的属性要比虚拟内存的属性高
        0,
        0,
        sizeof(shellcode)
    );  //返回值为映射的起始地址,指向物理页

    CopyMemory(buf, shellcode, sizeof(shellcode)); //复制shellcode到buf所指向的物理页

    hThread = CreateThread(
        NULL,
        0, 
        (LPTHREAD_START_ROUTINE)buf, 
        NULL,
        0,
        NULL);

    WaitForSingleObject(hThread, INFINITE); // 等待线程执行完成

    //关闭映射
    UnmapViewOfFile(buf);

    //关闭句柄
    CloseHandle(hMapping);
    return 0;
}


这种方式自己查资料也没找到,一般执行shellcode都是通过VirtualAlloc都申请内存的,但是自己想试下CreateFileMapping,但是发现没有成功,想问问大佬们有什么原因吗,如果有的话buf = (char *)MapViewOfFile是这句话出现问题吗,但是buf指向的不是物理页的地址吗,按理说应该是行得通的,自己的windows10系统可以运行 但是放在08上就不行了哇
搜索更多相关主题的帖子: 内存 物理 映射 NULL char 
2020-02-03 15:16
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
收藏
得分:0 
FILE_MAP_EXECUTE  映射文件的可执行视图(映射的内存可以作为代码运行)。必须已使用PAGE_EXECUTE_READ, PAGE_EXECUTE_WRITECOPY或PAGE_EXECUTE_READWRITE 保护创建了文件映射对象。
Windows Server 2003和Windows XP:  此值从带有SP2的Windows XP和带有SP1的Windows Server 2003开始可用。

自己改了FILE_MAP_EXECUTE  还是不行
2020-02-03 15:28
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
收藏
得分:0 
哇 版主我想你了
2020-02-04 17:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
"my shellcode" 根本不是可执行代码,
2020-02-06 14:15
快速回复:关于CreateFileMapping的api的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067657 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved