运行Windows XP的Intel x86机器上的内存位置1是什么?

rsi*_*deb 3 memory windows x86 assembly

我在Intel x86机器上运行Windows XP,并且在内存位置0x00000001的指令中出错.

我并不担心调试错误,但我有兴趣知道在内存的乞讨时通常会有什么指令.

我编写低级代码的唯一处理器是PIC微控制器,我知道第一个存储器位置是GOTO,然后是中断向量.

Joh*_*ler 6

Windows保证第一个64k和最后64k的内存总是会导致读取或写入访问冲突.这使得检测空指针解引用更容易.

请参阅标题下方的此页面中的图形

免费,预留和承诺的虚拟内存

http://msdn.microsoft.com/en-us/library/ms810627.aspx

  • 需要明确的是:担保是一个薄弱的保证.可以将有效内存映射到虚拟位置0,这样就可以利用一些特权提升漏洞.但默认情况下,虚拟内存的前64K始终为0. (3认同)
  • 想想EoP,而不是RCE.一个很好的例子是Mark Dowd的Flash攻击:http://chargen.matasano.com/chargen/2007/7/3/this-new-vulnerability-dowds-inhuman-flash-exploit.html.您所需要的只是内核中的漏洞,该漏洞会写入已分配的结构,而内核不会检查分配是否成功.如果你可以让分配失败(通过传入一个大缓冲区),你有时可以让内核写入内存中的任意位置. (2认同)