我在Visual C ++内联汇编中使用了这条指令
lea eax, FS:[0]
为什么eax
得到零?
如何获得FS:[0]
的线性地址?
答案 0 :(得分:6)
假设FS指向Windows Thread Information Block(TIB),也称为线程环境块(TEB),则通过读取fs:[0x18]
处的32位值来获取TIB的线性地址。在Visual C ++中执行此操作的最佳方法是使用__readfsdword
内在函数:
TEB *teb = (TEB *) __readfsdword(0x18);
答案 1 :(得分:3)
LEA
指令(“加载有效地址”)命名错误(例如应该称为LEO
/“加载有效偏移”),因为它只计算段内的偏移量。