是否有Win32的API,允许我使用ES,GS,FS?

时间:2012-02-11 23:48:04

标签: assembly

我想在汇编程序中使用ES,FS和GS,以允许我有3个独立的地址空间。

是否有一个Win32 API可以设置LDT并为我提供相应选择器的值?

1 个答案:

答案 0 :(得分:2)

答案是:是的,但是。

您想要的API实际上在NT内核中,称为NtSetLdtEntries。它没有标题。它没有任何文件。存根在ntdll.lib中,它不是SDK的一部分。你必须做我做的事情并在逆向工程网站中摸索并手动绑定,直到我能够使它工作。

更糟糕的是。您不能使用GS,因为Windows在内部使用它;无论何时进行系统调用,它都会随意将其设置为0(我认为它也可能在中断时随机设置为0)。如果您尝试使用GS调试程序,Windows将在断点处将其设置为0!

ES和FS都很好。我想。

这是我编写的一个未记录的文件,它使用了所有这些东西。如果你很勇敢,你可以从中提取足够的信息来做一些有用的事情。祝你好运......

http://lbw.git.sourceforge.net/git/gitweb.cgi?p=lbw/lbw;a=blob;f=src/syscalls/thread.cc;hb=a3b44871bd89009e644894431cbc6534fe033369