Just-In-Time ROP
参考:https://www.sohu.com/a/154764211_354899
主要是为了绕过非常细粒度的内存地址随机化。(可能类似于内核中FGKASLR,很多模块都存在随即偏移);为了绕过这种攻击,通常要在运行时利用任意地址读漏洞扫描可执行内存,寻找gadget;
XoM
其核心思想是不给可执行内存赋予读权限;
XnR
利用软件仿真技术,设置PTE,读可执行页会触发PF,然后handler检查是否指向一个code page;
缺陷:一些数据和代码共存的页无法解决;
Readactor
利用硬件辅助的虚拟化技术,Intel的扩展页表,去掉所有code page的可读权限;
HideM
将ITLB和DTLB异步。
首先回忆一下TLB:https://zhuanlan.zhihu.com/p/582644685
Destructive Code Reads
code-page标记为只可执行,然后搞一个副本;
每次读code-page中的数据时,从副本读,而将原本中对应的数据用随机数覆盖,保证攻击者搜到的code不会被执行;
无法抵御代码推测攻击: