当前位置: 首页 > news >正文

大气精美网站设计工作室织梦模板wordpress 内网映射

大气精美网站设计工作室织梦模板,wordpress 内网映射,商城网站建设资讯,沧州南皮手机网站建设实现写时复制#xff0c;读时加载#xff0c;原理为#xff0c;申请内存时#xff0c;只给一段线性地址空间#xff0c;并不分配物理内存#xff0c;当cpu读、写该内存时#xff0c;发生缺页中#xff0c;或者写错误#xff0c;中断处理程序根据前面设置的内容#x…实现写时复制读时加载原理为申请内存时只给一段线性地址空间并不分配物理内存当cpu读、写该内存时发生缺页中或者写错误中断处理程序根据前面设置的内容决写分配物理内存或者是共享内存如果需要读取文件时则根据需要读取相应的文件数据。 主要代码如下 LPPE_FILE_ELEM load_pe_dll(char * lpFileName) {LPPE_FILE_ELEM lpSysFE, lpUserFE; //文件列表中的元素保存文件信息//文件加载内存的默认地址//PIMAGE_DOS_HEADER pdh; //dos头PIMAGE_NT_HEADERS pnh; //pe文件头LPVOID pfile, pKrFile;PMEMORY_BASIC_INFORMATION pmbi;BYTE buf[512]; //临时块//补全文件目录路径add_patch((char *) buf, lpFileName);//1、从系统进程中查找是否已经加载lpSysFE pe_find_file((char*) buf, get_sys_files_list());if (lpSysFE) {//系统中已经加载进入下一步pKrFile (LPVOID) lpSysFE-hModule;DbgPrint(dll已读入内存 : %s ,%x\n, lpSysFE-strFilePath,lpSysFE-dwNumberOfShares);//return lpFE-hModule;} else {//将文件加入系统文件列表中lpSysFE kr_malloc(sizeof(PE_FILE_ELEM) strlen((char*) buf) 1);strcpy(lpSysFE-strFilePath, (char*) buf);if (load_file(lpSysFE-strFilePath, 0, 512, buf)) {//新exe头部的文件地址 指向PEpnh (PIMAGE_NT_HEADERS) ((DWORD) buf ((PIMAGE_DOS_HEADER) buf)-e_lfanew);//系统进程中仅申请空间读时加载pmbi mem_virtual_alloc(stMbiSys, 0,pnh-OptionalHeader.SizeOfImage, MEM_COMMIT,PAGE_READWRITE,MEM_IMAGE);pKrFile (PBYTE) pmbi-BaseAddress;lpSysFE-hModule (DWORD) pKrFile;lpSysFE-dwImgsize pnh-OptionalHeader.SizeOfImage;lpSysFE-dwNumberOfShares 0;list_push(get_sys_files_list(), (PLIST_ELEM) lpSysFE);load_pe_text((PIMAGE_DOS_HEADER) buf, (DWORD) lpSysFE-hModule,lpSysFE-strFilePath);if (!pKrFile) {//失败//DbgPrint(dll已读入内存 : %s ,%x\n);} else {//初始化时设置文件共享的次数为0,加入系统加载文件队列。}}} // if (lpFE)//2、检查用户空间 当前文件是否已经加载lpUserFE pe_find_file(lpSysFE-strFilePath, get_current_file_list());if (lpUserFE) {//2、已经加载 直接返回return lpUserFE;} else {//第一次加入进程将pKrfile的物理地址映射到 pfilepnh (PIMAGE_NT_HEADERS) ((((PIMAGE_DOS_HEADER) pKrFile)-e_lfanew) (DWORD) pKrFile);pmbi mem_virtual_alloc(MBI_USER_BASE, (LPVOID) pnh-OptionalHeader.ImageBase,pnh-OptionalHeader.SizeOfImage,MEM_COMMIT, PAGE_READWRITE, MEM_IMAGE);pfile (PBYTE) pmbi-BaseAddress;DbgPrint(共享 dll: %s,%x,%x,%x,%x\n, lpSysFE-strFilePath, pfile,pKrFile, pnh-OptionalHeader.ImageBase);lpUserFE kr_malloc(strlen((char*) lpSysFE-strFilePath) sizeof(PE_FILE_ELEM) 1);strcpy(lpUserFE-strFilePath, lpSysFE-strFilePath);lpUserFE-hModule (DWORD) pfile;lpUserFE-dwImgsize lpSysFE-dwImgsize;lpUserFE-hSysModule pKrFile;list_push(get_current_file_list(), (PLIST_ELEM) lpUserFE);lpSysFE-dwNumberOfShares;DoRelocationTable(pfile);link_import(pfile);//文件头映射// mem_map_demand(pKrFile, pfile,// _ALIGN( pdh-e_lfanew sizeof(IMAGE_NT_HEADERS32)// pnh-FileHeader.NumberOfSections// * sizeof(IMAGE_SECTION_HEADER), 4096),// PG_USER_R_P);}return lpUserFE; } BOOL mem_fail_sys(DWORD code, DWORD addr) {DWORD temp;LPPE_FILE_ELEM fe;PMEMORY_BASIC_INFORMATION pmbi mem_find_mbi(stMbiSys,addr);//DbgPrint(内核%s错误 0x%x,0x%x,0x%x,0x%x,0x%x,0x%x\n,(code2?写:读), addr, code,// pmbi-BaseAddress, pmbi-RegionSize, pmbi-State, pmbi-Type);if (!pmbi) {return FALSE;}//如果是映射if (pmbi-State MEM_COMMIT) {//分配物理内存,以4K为单位if (pmbi-Type MEM_IMAGE) {mem_physics(addr, 4096, PGE_SYS_RW_P);fe (LPPE_FILE_ELEM) pe_find_from_addr(get_sys_files_list(), addr);if (fe-dwNumberOfShares ! 0) {//直接分配内存再读取文件//200对齐load_file_4k(fe, addr);} else {//正在读文件头}} else if (pmbi-Type MEM_4MB_PAGES) {// MEM_4MB_PAGES://二级目录// DbgPrint(二级页表%x%x\n, addr, (DWORD *) MiGetPteAddress(addr));mem_physics(addr, 4096, PG_USER_RW_P);//*(DWORD *) MiGetPteAddress(addr) // get_freed_physics() PG_USER_RW_P;} else {mem_physics(addr, 4096, PGE_SYS_RW_P);}//直接分配内存} //if (pmbi-State MEM_COMMIT)else {return FALSE;}return TRUE; } BOOL mem_fail_user(DWORD code, DWORD addr) {DWORD temp;LPPE_FILE_ELEM fe;PMEMORY_BASIC_INFORMATION pmbi mem_find_mbi(MBI_USER_BASE, addr);//DbgPrint(用户%s错误 0x%x,0x%x,0x%x,0x%x,0x%x,0x%x\n, (code2?写:读),addr, code,// pmbi-BaseAddress, pmbi-RegionSize, pmbi-State, pmbi-Type);if (!pmbi) { //找不分配的段。return FALSE;} //状态是不是已经提交 //只读读写还共享的读写 //如果是map类分配内存如果Image类则读时加载写时复制if (pmbi-State MEM_COMMIT) {if (pmbi-Type MEM_IMAGE) {fe (LPPE_FILE_ELEM) pe_find_from_addr(get_current_file_list(),addr);if (fe-hSysModule 0) {//说明是不是共享文件//DbgPrint(用户内存错误 0x%x , 0x%x , 0x%x , 0x%x \n, addr, code,// pmbi-BaseAddress, pmbi-State);mem_physics(addr, 4096, PG_USER_RW_P);load_file_4k(fe, addr);//break;} else {//DbgPrint(用户内存错误 %x,%x\n,addr,fe);//先读取系统内存如果出错则会中断到mem_fail_sys加载文件//如果是读取则映射如果是写则分配内存再复制if (code 2) {//重新申请物理内再复制//DbgPrint(用户写错误%x\n, addr);mem_physics(addr, 4096, PG_USER_RW_P);memcpy((PVOID) (addr 0xFFFFF000),(PVOID) ((fe-hSysModule (addr - fe-hModule)) 0xFFFFF000), 4096);} else {//DbgPrint(用户读错误%x\n, addr);//说明可能内核没有读取文件也可能没有映射//先试读下没有读取文件会中断后读取再映射//mem_fail_sys(0,fe-hSysModuleaddr-fe-hModule);temp *(PDWORD) (fe-hSysModule addr - fe-hModule);//函数自己内部齐size1~4096效果应是一样mem_map_demand(fe-hSysModule addr - fe-hModule, addr,4096, PG_USER_R_P);}//直接分配内存再读取文件//addr-pmbi-BaseAddressg}} else if ((pmbi-Type MEM_PRIVATE)) {//if (pmbi-Type MEM_IMAGE)mem_physics(addr, 4096, PG_USER_RW_P);}} // if (pmbi-State MEM_COMMIT)else {return FALSE;}return TRUE; }
http://www.dnsts.com.cn/news/106974.html

相关文章:

  • 牙科 网站建设方案凯里网络公司建设网站
  • 起飞页做网站步骤wordpress 4.0 慢
  • 网站开发有哪些服务器网站建设公司 关于我们
  • 济南推广网站建设电商网站 cms
  • 怎么制作平台网站找别人做网站需要注意什么
  • 冠县快搜网站建设有限公司那个网站做搬家推广比较好
  • 网站和数据库跨界营销案例
  • 怎么做网站黑链有哪些购物平台
  • 网站空间位置是什么查询网站服务商
  • 做视频后期的网站网站建设入门要求以及建站流程
  • 广州移动 网站设计版面设计网站
  • 杭州绿城乐居建设管理有限公司网站中国建设银行北京市互联网网站
  • 邢台专业做网站公司wordpress弹幕视频主题
  • 曲周手机网站建设天津网站建设品牌推广
  • 做公司网站有什么好处分类信息网站建设价格
  • 门户网站标题居中加大广州哪个区封了
  • 济宁华园建设有限公司网站深圳网站建设单位
  • 网站根目录下本地搭建 wordpress
  • 各大网站博客怎么做推广营销型网站建设818gx
  • 网站虚拟空间购买网站开发与维护前景
  • 模板尺寸规格及价格seo专业培训网络班
  • 做网站哪家公司比较好而且不贵南宁网络推广建站
  • 视频类网站怎么做网站页面设计培训班
  • 网站建设定制公众号小程序建站资源免费
  • 韩国优秀网站设计百度竞价优化软件
  • 乔拓云智能建站系统wordpress底部导航
  • 徐州网站建设 徐州网站推广趣闲赚
  • 网站开发协助方案什么是软件开发过程
  • 做的新网站网上搜不到昭通昭阳区城乡建设管理局网站
  • wordpress整合教程郑州seo优化顾问热狗