14_内存分配延迟
Posted leibso-cy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14_内存分配延迟相关的知识,希望对你有一定的参考价值。
1 申请区段 目的: 对齐4kb
// 定义一个可读可写的区段
// 在区段里面 定义一个变量 var =1 (这里是区段第一个变量,所以坑定是 4kb对齐的起始地址)
declspec(allocate("data seg")) DWORD var = 1;
?
还可以这样申请区段并将变量分配进去:
int g_test1 = 5;
int g_test2 = 5;
?
int g_another = 5;
?
结果: g_test1 和 g_test2 被分配到 .test 段中, g_another 被分配到默认的 .data 段中
?
2 代码:
所以这个时候的 程序直接运行结果 不是预计的。 可以这样: 使用CE 先查看 以下那个内存数据 ( 也即相当于访问了;所以会映射);这个时候,继续第一个 system(pause) 继而执行go 这个时候 就不会缺页异常,所以在int20 处理函数里面就能正确的赋值;这个时候程序输出就是正常的了
3 用处 反调试
运用同样的道理这里有两种利用:
直接看到的代码却并不是要执行的代码;
或者需要 访问以下刷新虚拟内存的映射。刷新代码区域。
以上是关于14_内存分配延迟的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段