我想在汇编程序中使用ES,FS和GS,以允许我有3个独立的地址空间。
是否有一个Win32 API可以设置LDT并为我提供相应选择器的值?
答案 0 :(得分:2)
答案是:是的,但是。
您想要的API实际上在NT内核中,称为NtSetLdtEntries。它没有标题。它没有任何文件。存根在ntdll.lib中,它不是SDK的一部分。你必须做我做的事情并在逆向工程网站中摸索并手动绑定,直到我能够使它工作。
更糟糕的是。您不能使用GS,因为Windows在内部使用它;无论何时进行系统调用,它都会随意将其设置为0(我认为它也可能在中断时随机设置为0)。如果您尝试使用GS调试程序,Windows将在断点处将其设置为0!
ES和FS都很好。我想。
这是我编写的一个未记录的文件,它使用了所有这些东西。如果你很勇敢,你可以从中提取足够的信息来做一些有用的事情。祝你好运......