这个问题主要与x86和linux
有关CS
指向你内在的记忆
阅读并执行DS
指向你内在的记忆
读写SS
指向你内在的记忆
也可以读写执行某些代码时,处理器会检查您对某个地址所做的每条JMP
或CALL
指令是否在CS
范围内,您所做的每次读/写操作都在如果在DS
内存限制范围内,则会检查代码中的全局变量,对于SS
,
鉴于此,我们提供了一些提供内存保护的内存模型。
现在我的问题是,当我们动态分配一些内存时会发生什么? 还是记忆地图呢? 执行程序必须有一些寄存器指向IO操作的位置......我假设这是FS / GS / ES寄存器启动但我不确定。如果在这个领域有更多经验的人可以向我解释这个问题,我会喜欢它。
我之前写了一些代码测试并将其拆解,输出结果令人失望..
我的代码就像
int main()
{
int * mem = (int *) malloc(4096)
mem[0] = 5;
return 0;
}
我希望在反汇编代码中看到类似
的内容lea eax, mem_addr
mov fs:[eax], 5
然而这并没有发生..如果有人能清楚这一点,我会喜欢它