我想检测我的应用程序中可能的硬件断点。为此,我需要读访问调试寄存器。直接访问是不可能的,所以我这样做是这样的:访问Windows 7上的调试寄存器x64
HANDLE thread = GetCurrentThread();
WOW64_CONTEXT context;
context.ContextFlags = CONTEXT_FULL;
BOOL status = Wow64GetThreadContext(thread, &context);
if (!status)
return -1;
std::cout << std::hex << context.Dr0 << " " << context.Dr1 << " " << context.Dr2 << " " << context.Dr3 << " " << std::endl;
我看到stdout是:CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC即使有被我设置HW断点。
我是否需要一些特殊权限才能访问这些寄存器?该应用程序是32位,但我正在处理Windows 7 x64,如果这很重要。