码迷,mamicode.com
首页 > 其他好文 > 详细

14_内存分配延迟

时间:2019-10-22 15:35:06      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:space   als   cap   结果   spl   type   set   虚拟内存   定义   

分配的虚拟内存没有使用之前 是不会映射物理内存的。

1 申请区段 目的: 对齐4kb

// 定义一个可读可写的区段
#pragma section("data seg", read,write)
// 在区段里面 定义一个变量 var =1 (这里是区段第一个变量,所以坑定是 4kb对齐的起始地址)
declspec(allocate("data seg")) DWORD var = 1;
?

还可以这样申请区段并将变量分配进去:

#pragma data_seg(".test")
int g_test1 = 5;
int g_test2 = 5;
#pragma data_seg()

#pragma comment(linker, "/SECTION:.test,RW")
?
int g_another = 5;
?
结果: g_test1 g_test2 被分配到 .test 段中, g_another  被分配到默认的 .data  段中
?

2 代码:

技术图片

所以这个时候的 程序直接运行结果 不是预计的。 可以这样: 使用CE 先查看 以下那个内存数据 ( 也即相当于访问了;所以会映射);这个时候,继续第一个 system(pause) 继而执行go 这个时候 就不会缺页异常,所以在int20 处理函数里面就能正确的赋值;这个时候程序输出就是正常的了

3 用处 反调试

运用同样的道理这里有两种利用:

  1. 直接看到的代码却并不是要执行的代码;

  2. 或者需要 访问以下刷新虚拟内存的映射。刷新代码区域。

14_内存分配延迟

标签:space   als   cap   结果   spl   type   set   虚拟内存   定义   

原文地址:https://www.cnblogs.com/leibso-cy/p/11719261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!