mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-19 23:16:48 +00:00
add shadow stack register and read it in win32 thread context
This commit is contained in:
committed by
Ryan Fleury
parent
c35c14dadb
commit
d8bb8c76c6
@@ -690,7 +690,7 @@ dmn_w32_thread_read_reg_block(Arch arch, HANDLE thread, void *reg_block)
|
||||
|
||||
//- rjf: unpack info about available features
|
||||
U32 feature_mask = GetEnabledXStateFeatures();
|
||||
B32 xstate_enabled = (feature_mask & (XSTATE_MASK_AVX | XSTATE_MASK_AVX512)) != 0;
|
||||
B32 xstate_enabled = (feature_mask & (XSTATE_MASK_AVX | XSTATE_MASK_AVX512 | XSTATE_MASK_CET_U)) != 0;
|
||||
|
||||
//- rjf: set up context
|
||||
CONTEXT *ctx = 0;
|
||||
@@ -709,7 +709,7 @@ dmn_w32_thread_read_reg_block(Arch arch, HANDLE thread, void *reg_block)
|
||||
//- rjf: unpack features available on this context
|
||||
if (xstate_enabled)
|
||||
{
|
||||
SetXStateFeaturesMask(ctx, XSTATE_MASK_AVX | XSTATE_MASK_AVX512);
|
||||
SetXStateFeaturesMask(ctx, XSTATE_MASK_AVX | XSTATE_MASK_AVX512 | XSTATE_MASK_CET_U);
|
||||
}
|
||||
|
||||
//- rjf: get thread context
|
||||
@@ -866,6 +866,18 @@ dmn_w32_thread_read_reg_block(Arch arch, HANDLE thread, void *reg_block)
|
||||
MemoryZero(zmm_d, sizeof(*zmm_d));
|
||||
}
|
||||
}
|
||||
|
||||
// CET / Shadow Stack
|
||||
if(xstate_mask & XSTATE_MASK_CET_U)
|
||||
{
|
||||
DWORD cet_length = 0;
|
||||
XSAVE_CET_U_FORMAT *cet = LocateXStateFeature(ctx, XSTATE_CET_U, &cet_length);
|
||||
if (cet_length == sizeof(*cet))
|
||||
{
|
||||
dst->cetmsr.u64 = cet->Ia32CetUMsr;
|
||||
dst->cetssp.u64 = cet->Ia32Pl3SspMsr;
|
||||
}
|
||||
}
|
||||
|
||||
scratch_end(scratch);
|
||||
}break;
|
||||
|
||||
Reference in New Issue
Block a user