debugging - 谁访问了windbg中的某个内存

标签 debugging assembly x86 reverse-engineering windbg

如何在 WinDbg 上检查可执行文件(反汇编)中的哪部分代码访问某个内存地址? 例如,(伪)“get_addresses_use 140000” -> 14853, 12435(访问地址 140000 的文本部分中的地址)。

最佳答案

内存地址在运行时分配给程序。对于不运行的反汇编程序,没有分配地址。地址 140000 可能永远不会被使用。

即使您运行一个很难找到的可执行文件。我们举个例子:

#include <iostream>
#include <vector>
int main()
{
    std::vector<int> data(1'000'000,00); // improper spacing can be fun
    int index;
    std::cin >> index;
    std::cout << data[index];
}

鉴于您知道哪个地址已分配给向量,您无法判断将访问哪个地址,因为这取决于用户输入。如果用户输入负数或太大的数字,这甚至是未定义的行为。

但是,您可以使用内存断点 ba在一个地址上。这样您就可以在访问特定地址时查看该地址是否被访问。无论我到目前为止做了什么,这都足够了。

关于debugging - 谁访问了windbg中的某个内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73747306/

相关文章:

c - 如何编译 GCC 生成的 asm?

function - 在 Nasm 中调用汇编函数

linux - 从程序集 AT&T 中的文件中读取数据

debugging - 如何最好地在 WinDBG 崩溃脚本中为可执行文件命名?

c++ - 为什么在Visual Studio Code中将 “C/C++:”插入我的task.json文件的标签中?

assembly - emacs:如何关闭自动缩进?

android - 谷歌使用新的 Intel Atom x86 仿真器映射 SDK

c++ - 在比较中,GCC 似乎更喜欢小的即时值。有没有办法避免这种情况?

python - 如何调试基于 PyQt4 的应用程序?

debugging - GroupStyle HidesIfEmpty 中是否有错误?