关于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上就不行了哇



 
											





 
	    

 
	
 
										
					
	 
											
