WinDbg "invalid access to memory location" - InitializeProcThreadAttributeList
WinDbg "invalid access to memory location" - InitializeProcThreadAttributeList
我对 WinDbg 比较陌生,所以我希望这只是我遗漏的一些明显的东西。我有一个 .NET 程序集,其中包含使用 P/Invoke 定义的函数调用 InitializeProcThreadAttributeList、UpdateProcThreadAttribute 和 DeleteProcThreadAttributeList。所有这三个函数都是从“kernel32.dll”库中导入的。我的目标是跟踪这些函数以了解正在使用的 ntdll 系统调用。
我尝试使用此命令设置断点:
bp KERNEL32!InitializeProcThreadAttributeList
,但出现此错误:
Couldn't resolve error at 'KERNEL32!InitializeProcThreadAttributeList'
接下来,我使用以下命令搜索了此函数的任何标志:
x kernel32!*procthread*
我收到了这个回复:
00007ffd`c7598588 KERNEL32!_imp_InitializeProcThreadAttributeList = <no type information>
然后我尝试在此存根上设置断点?函数如下:
bp kernel32!_imp_InitializeProcThreadAttributeList
虽然说已经定义了断点,但是当我继续执行的时候,却报错了:
Unable to insert breakpoint 0 at 00007ffd`c7598588, Win32 error 0n998
"Invalid access to memory location."
我也试过用“bu”设置断点,但产生了同样的错误。
有谁知道在这种情况下如何设置断点?提前致谢!
kernel32的大部分功能都在kernelbase.dll实现了
而 kernel32 只包含一个 thunk
标志是 IMP 表示从
导入
_imp_InitializeProcThreadAttributeList
尝试设置 bp kernelbase!InitializeProcThreadAttributeList
0:000> x /v kernel32!InitializeProcThreadAttributeList
pub func 761f4fc1 0 kernel32!InitializeProcThreadAttributeList (<no parameter info>)
0:000> u kernel32!InitializeProcThreadAttributeList l1
kernel32!InitializeProcThreadAttributeList:
761f4fc1 ff25c0181476 jmp dword ptr [kernel32!_imp__InitializeProcThreadAttributeList (761418c0)]
0:000> ? poi(kernel32!_imp__InitializeProcThreadAttributeList)
Evaluate expression: 1978493618 = 75ed6ab2
0:000> ln poi(kernel32!_imp__InitializeProcThreadAttributeList)
Exact matches:
KERNELBASE!InitializeProcThreadAttributeList (<no parameter info>)
0:000> bp poi(kernel32!_imp__InitializeProcThreadAttributeList)
0:000> bl
0 e 75ed6ab2 0001 (0001) 0:**** KERNELBASE!InitializeProcThreadAttributeList
我对 WinDbg 比较陌生,所以我希望这只是我遗漏的一些明显的东西。我有一个 .NET 程序集,其中包含使用 P/Invoke 定义的函数调用 InitializeProcThreadAttributeList、UpdateProcThreadAttribute 和 DeleteProcThreadAttributeList。所有这三个函数都是从“kernel32.dll”库中导入的。我的目标是跟踪这些函数以了解正在使用的 ntdll 系统调用。
我尝试使用此命令设置断点:
bp KERNEL32!InitializeProcThreadAttributeList
,但出现此错误:
Couldn't resolve error at 'KERNEL32!InitializeProcThreadAttributeList'
接下来,我使用以下命令搜索了此函数的任何标志:
x kernel32!*procthread*
我收到了这个回复:
00007ffd`c7598588 KERNEL32!_imp_InitializeProcThreadAttributeList = <no type information>
然后我尝试在此存根上设置断点?函数如下:
bp kernel32!_imp_InitializeProcThreadAttributeList
虽然说已经定义了断点,但是当我继续执行的时候,却报错了:
Unable to insert breakpoint 0 at 00007ffd`c7598588, Win32 error 0n998
"Invalid access to memory location."
我也试过用“bu”设置断点,但产生了同样的错误。
有谁知道在这种情况下如何设置断点?提前致谢!
kernel32的大部分功能都在kernelbase.dll实现了 而 kernel32 只包含一个 thunk
标志是 IMP 表示从
导入_imp_InitializeProcThreadAttributeList
尝试设置 bp kernelbase!InitializeProcThreadAttributeList
0:000> x /v kernel32!InitializeProcThreadAttributeList
pub func 761f4fc1 0 kernel32!InitializeProcThreadAttributeList (<no parameter info>)
0:000> u kernel32!InitializeProcThreadAttributeList l1
kernel32!InitializeProcThreadAttributeList:
761f4fc1 ff25c0181476 jmp dword ptr [kernel32!_imp__InitializeProcThreadAttributeList (761418c0)]
0:000> ? poi(kernel32!_imp__InitializeProcThreadAttributeList)
Evaluate expression: 1978493618 = 75ed6ab2
0:000> ln poi(kernel32!_imp__InitializeProcThreadAttributeList)
Exact matches:
KERNELBASE!InitializeProcThreadAttributeList (<no parameter info>)
0:000> bp poi(kernel32!_imp__InitializeProcThreadAttributeList)
0:000> bl
0 e 75ed6ab2 0001 (0001) 0:**** KERNELBASE!InitializeProcThreadAttributeList