-
-
[求助] 请问在这种情况下,GS段寄存器是如何被修改的?
-
发表于:
2019-2-27 20:38
3847
-
[求助] 请问在这种情况下,GS段寄存器是如何被修改的?
在64位Windows上运行32位程序,GS段寄存器的内容将会是0x2B。
虽然可以暂时修改GS的内容,但很快GS的内容又会变成0x2B。
请问GS段寄存器到底是在什么地方被修改的?
问这个问题的原因是因为有一段程序必须在GS=0的情况下才能正常运行,为此我在程序的开头加了一句指令,手动把GS设置成0。
现在这段程序在大多数情况下都能正常运行,但是偶尔会出错。而调查出错的情况,发现都是因为GS中途又变回0x2B了。
P.S. 可以很容易观察到这个现象:在64位Windows上用调试器调试任意一个Win32程序,会发现GS一直是0x2B。哪怕手动改成0,step一下就又变成0x2B了(这是否意味着GS是在比调试器优先级更高的地方被修改的呢?)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-2-27 20:42
被knightprf编辑
,原因: