网站优化排名资源,什么样的网站需要认证,淮北网站建设费用,网站建设投标书低2G为进程空间
开始地址结束地址大小属性00xFFFFF1M保留0x1000000x102FFF栈不固定位置、大小0x1030000x143FFF堆不固定位置、大小0x400000主程序文件不固定位置、大小加载dll不固定位置、大小0x7ffdd000TIB位置#xff0c;大小编译时固定0x7FFFE000系统与用户共享数据块位置…低2G为进程空间
开始地址结束地址大小属性00xFFFFF1M保留0x1000000x102FFF栈不固定位置、大小0x1030000x143FFF堆不固定位置、大小0x400000主程序文件不固定位置、大小加载dll不固定位置、大小0x7ffdd000TIB位置大小编译时固定0x7FFFE000系统与用户共享数据块位置大小编译时固定0x7FFFF0000x7FFFFFFF4K进程空间管理列表位置大小编译时固定 一个新进程创建后第一个执行函数为proc_startup该函数过程如下
1、初始化进程空间管理器该数据放在0x7FFFF000固定位置
2、建立堆全局变量放在系统栈中
3、建立文件列表全局变量
4、加载主文件
5、根据主文件加载DLL
6、转换用户态
//此函数在进程空间中运行在整个进程生存期都不会退出
//无法调用独属于进程的全局变量。
void proc_startup()
{//以下变量为一个进程的全局变量保存在系统栈中PThread_Stack_Data ptsd(PThread_Stack_Data)(lpCurrentThread-initialStack-MAIN_STRCK_PARAM);//进入该函数进程空间已经切换//初始化进程空间管理器mem_user_virtual_init((PMEMORY_BASIC_INFORMATION)(MBI_USER_BASE));//建立 堆;ptsd-heapmem_heap_create((PMEMORY_BASIC_INFORMATION)(MBI_USER_BASE),2,0x4000,0x4000);ptsd (PThread_Stack_Data)(lpCurrentThread-initialStack-MAIN_STRCK_PARAM);ptsd-lpFilseList(LPLISTS)mem_heap_alloc(ptsd-heap,0,sizeof(LISTS));list_init(ptsd-lpFilseList);FATFS fs;f_mount (fs, 0:, 0 );//1、将文件加载PXosHandel xh krLoadLibrary(getCurrentProcess()-filepath);//初始化进程空间//线性空间为私有DWORD pfilexh-addr;PIMAGE_NT_HEADERS pnh(PIMAGE_NT_HEADERS)(((PIMAGE_DOS_HEADER)pfile)-e_lfanewpfile);//load_file(ptsd-heap,ptsd-lpFilseList,getCurrentProcess()-filepath)asm(call %0: :r(pnh-OptionalHeader.AddressOfEntryPointpfile));//2、call mainwhile (1){print_farmat_msg(m);}
}
HANDLE get_main_heap()
{return ((PThread_Stack_Data)(lpCurrentThread-initialStack-MAIN_STRCK_PARAM))-heap;
}
LPLISTS get_main_file_list()
{return ((PThread_Stack_Data)(lpCurrentThread-initialStack-MAIN_STRCK_PARAM))-lpFilseList;
}