꽤 많은 검색 결과와 몇 가지 힌트가 here으로 제공된 후 세그먼트 (컴퓨터에서 TIB 데이터를 저장하는 데 사용)의 find a layout으로 마침내 관리했습니다. 나에게 특별한 관심의 PSDK에서 제공하는 ArbitraryUserPointer
멤버는 다음과 같습니다TIB 맞춤 저장소
typedef struct _NT_TIB {
struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
PVOID StackBase;
PVOID StackLimit;
PVOID SubSystemTib;
union {
PVOID FiberData;
DWORD Version;
};
PVOID ArbitraryUserPointer;
struct _NT_TIB *Self;
} NT_TIB;
? x64에도 여전히 존재합니까?
보조 변수는이 변수에 대한 액세스입니다.
그들은 하지 커널에만 물론,하지만 왜는 단지 잘못된 문서로 표시됩니다? (내 오프라인 VS 2008 문서에는이 절이 없습니다).가이 내장 함수는 커널 모드에서만 사용할 수 있으며, 루틴 : 어떤 이유로 MSDN 다음과 같은 특권 명령을 표시하지만, 나는 MSVC를 사용하고, 그리고 같은 나는
__readfsdword
&__readgsqword
내장 함수에 액세스 할 수 intrinsics로만 사용할 수 있습니다.
마지막으로 __readfsdword(0x14)
을 통해 ArbitraryUserPointer
에 직접 액세스하거나 선형 TIB 주소를 통해 액세스하는 것이 안전합니까? (여전히 FS
에서 읽어야합니다).
흠이 응용 프로그램 관리로 이전 MSVC 기사는 아래로 표시했다 특히 이후, 실망 이잖아 말한다. 어떤 회원이 애플리케이션 관리 대 운영체제를 관리하는지에 관한 문서가 있습니까?기본적으로 TLS 기반이 아닌 포인터를 숨길 곳을 찾고 있습니다. – Necrolis
TLS에서 응용 프로그램의 무료 사용을 고려할 수있는 유일한 방법입니다. ('ArbitraryUserPointer'와 같은 것이 있다면, 어떻게 두 DLL이 제어권을 협상합니까?) –
SEH/스택 보안 토큰을 하이 잭킹 할 수 없습니까? (나는 이것을 사용하기 위해 SEH/보안 토큰을 가지지 않을 것이다). 그 외의 다른 스레드 데이터에 대해서는 단 하나의 __declspec (thread)를 사용합니다 ... – Necrolis