x64 gs搜索kernel32


编写shellcode很重要的一步就是搜索kernel32的基址,毕竟我们要获取API的地址 x86下总所周知的fs寄存器搜索kernel32基址的办法,在x64下已经失效了. 鉴于网上的资料太少,也许是我没搜索到.暂且写一段分享. x64下fs的角色已经换成了gs. 暂时发现存储的一些感兴趣的东西,如果有其他的,希望能告知我. gs:[0x30]                 TEB gs:[0x40]                 Pid gs:[0x48]                 Tid gs:[0x60]                PEB gs:[0x68]                 LastError 值得一提的是,虽然gs:[0x60] 直接存放的PEB,但是由于vista/7后的地址随机化机制,还是从TEB获取比较靠谱. 0:009> dt 000007fffff98000 _TEB ntdll!_TEB +0×000 NtTib            : _NT_TIB +0×038 EnvironmentPointer : (null) +0×040 ClientId         : _CLIENT_ID +0×050 ActiveRpcHandle  : (null) +0×058 ThreadLocalStoragePointer : (null) +0×060 ProcessEnvironmentBlock : 0x000007ff`fffd5000 _PEB    //这里即是PEB //用c语言描述就是 #define x64_GetPeb()               [...]