我正在尝试从 Go 语言调用 Windows COM 接口(interface)的方法。我怀疑我在调用调用的方式上做错了什么,想看看寄存器在调用过程中是如何变化的。
但我很难做到这一点,因为我似乎无法在 WinDBG 中设置断点。命令“bu 64b6ea43”最终无法正常工作,出现错误“只完成了 ReadProcessMemory 或 WriteProcessMemory 请求的一部分”。完整消息如下。
Microsoft (R) Windows Debugger Version 6.2.8400.0 X86
Copyright (c) Microsoft Corporation. All rights reserved.
CommandLine: C:\Users\ccherng\Go\bin\error.exe
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path. *
* Use .symfix to have the debugger choose a symbol path. *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Executable search path is:
ModLoad: 00400000 00971000 image00400000
Unable to insert breakpoint 1 at 64b6ea43, Win32 error 0n299
"Only part of a ReadProcessMemory or WriteProcessMemory request was completed."
bp1 at 64b6ea43 failed
WaitForEvent failed
eax=00415a7b ebx=7ffdd000 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
eip=77b37098 esp=0006fff0 ebp=00000000 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000200
77b37098 89442404 mov dword ptr [esp+4],eax ss:0023:0006fff4=00000000
最佳答案
对我来说这是因为 ASLR 的问题。 运行 editbin/DYNAMICBASE:NO NameOfDetectedExe.exe 修复它。
关于WinDBG:无法在 64b6ea43 处插入断点 1,Win32 错误 0n299,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11714801/