[求助]应用层调用 DbgPrintEx 无输出
发表于:
2023-3-12 14:46
6347
typedef NTSYSCALLAPI ULONG(NTAPI* fnDbgPrintEx)(
ULONG ComponentId,
ULONG Level,
PCSTR Format,
...
);
fnDbgPrintEx DbgPrintEx = NULL;
#define kprintf(...) DbgPrintEx(0, 0, __VA_ARGS__)
void CTestDbgPrintDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HMODULE ntdll = GetModuleHandle(L"NTDLL.DLL");
if (ntdll!=NULL)
{
DbgPrintEx = (fnDbgPrintEx)GetProcAddress(ntdll, "DbgPrintEx");
if (DbgPrintEx)
{
DbgPrintEx(0, 0, "hello world");
kprintf("Hello World");
}
}
}
我想在应用层调用 DbgPrintEx 这个函数 ntdll.dll 也是导出函数 调用无输出 各位大佬麻烦看看吧
2023.3.12 16点48分
发现 自己设置的回调
可以捕获内核输出 但是 3环的就不能捕获 windbg 可以正常输出
内核
#define dbg() DbgBreakPoint() //断点
//DebugPrintCallback
VOID MyDebugPrintCallback(_In_ PSTRING Output, _In_ ULONG ComponentId, _In_ ULONG Level)
{
if (Output != NULL && Output->Buffer != NULL)
{
dbg();
}
}
//DebugPrintCallback卸载
NTSTATUS DbgViewRemove() {
return DbgSetDebugPrintCallback(MyDebugPrintCallback, FALSE);
}
//DebugPrintCallback安装
NTSTATUS DbgViewInstall() {
return DbgSetDebugPrintCallback(MyDebugPrintCallback, TRUE);
}
难道这个函数
DbgPrintEx
还要看什么吗
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-3-12 16:50
被ThanatosKer编辑
,原因: