Debugging 使用WinDbg,我可以在进程运行时修改内存中的项目吗?

Debugging 使用WinDbg,我可以在进程运行时修改内存中的项目吗?,debugging,windbg,Debugging,Windbg,在应用程序运行时,我是否可以使用映射文件中的地址,使用windbg更改内存中的变量 我对在运行时打开/关闭功能非常感兴趣,可能是使用变量 你会怎么做?是否需要通过调试器中断应用程序?如果您有地址,可以使用任意e*(输入值)命令 如果知道进程id,可以附加到任何正在运行的进程,或者可以直接使用cdb启动exe。您必须中断流程才能进行任何修改。在CDB中,您可以使用Ctrl+C,它将向进程中注入DebugBreak,然后您可以查看堆栈、线程和内存。我不确定您到底想实现什么,但调试器应该在激活后的某个

在应用程序运行时,我是否可以使用映射文件中的地址,使用windbg更改内存中的变量

我对在运行时打开/关闭功能非常感兴趣,可能是使用变量


你会怎么做?是否需要通过调试器中断应用程序?

如果您有地址,可以使用任意e*(输入值)命令


如果知道进程id,可以附加到任何正在运行的进程,或者可以直接使用cdb启动exe。您必须中断流程才能进行任何修改。在CDB中,您可以使用Ctrl+C,它将向进程中注入DebugBreak,然后您可以查看堆栈、线程和内存。

我不确定您到底想实现什么,但调试器应该在激活后的某个事件(异常、断点或其他事件)上激活,例如,您可以让一个线程创建一个异常,并在获得控制权后检查变量。
在调试器中,您可以使用命令设置断点,请参阅,将更改参数的内容。
我希望这能回答你的问题,如果没有请澄清问题

在使用命令中断点的情况下,应用程序将被中断并将继续执行,而无需人工干预,我不知道调试器如何在应用程序停止执行的情况下执行某些操作


只是想一想,你确定需要调试器吗?难道你不能仅仅使用注册表,然后用它来获取注册表更改的通知吗

你肯定能做到。中断函数并在“局部变量”窗口中编辑它。或使用e命令编辑值。查看windbg帮助了解更多信息。

我刚刚完成了。假设您映射了symbos,并且位于可以看到变量的断点处,则只需执行此操作—假设“myvar”是一个整数:

???迈瓦尔 [[显示当前内容]]

???myvar=55 [[这会将myvar的值更改为55]]

???迈瓦尔 [[这将显示我的var的更新内容-即55]]

g
[[您的程序现在将运行,下一次读取myvar将产生55]

您可以设置一个只命中一次的断点,编辑一个值并继续执行。 比如:

bp /1 012ABCDEF "myVar=42;g"

用您的地址值和变量名替换上述内容。

是的,您可以,如果您知道processID,您可以使用cdb附加到流程。如果你有映射文件,你可以窥视任何地址范围,戳任何内存位置。但纠正我,如果我错了,你不能在应用程序运行时执行任何命令(至少是驱动程序),你必须中断,只有在程序停止后,你才能做些事情。