如何在运行的进程中读取结构体内容?

问题描述 投票:0回答:1

我在 Linux 机器上编译了一个 C 二进制文件并执行它,在该二进制文件中我有一个名为

Location
的结构,定义如下

typedef struct 
{
    size_t x;
    size_t y;
} Location;

这是我的主要功能

int main(void)
{
    srand(0);
    Location loc;
    while (1)
    {
        loc.x = rand()%10;
        loc.y = rand()%10;
        sleep(2);
    }
    return 0;
}

如何监控 x 和 y 的值?

需要考虑一些限制

  • 我无法修改二进制代码
  • 监控应该用python来完成
  • ASLR 始终启用

我尝试过的事情

  • 阅读
    /proc/pid/maps
    位置堆栈然后阅读
    /proc/pid/mem
    没有找到任何东西
  • 我使用 gdb 来查找
    loc
    的地址,但它超出了映射中找到的堆栈范围(很可能是 ASLR)
python c memory stack
1个回答
0
投票

如果你使用srand(0),你总是会得到相同的输出,那为什么还需要监控呢? 你说的监控是什么意思? 您可以更好地将 x, y 的值保存在文本文件中,然后从 python 中读取值。

© www.soinside.com 2019 - 2024. All rights reserved.