如何在启用ASLR的Linux进程中用Python监控未修改二进制的struct值?
问题:监控Linux下C程序栈上结构体变量的值
我在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; }
我希望监控loc的x和y成员的值,需满足以下限制:
- 无法修改二进制代码
- 必须使用Python进行监控
- 始终启用ASLR(地址空间布局随机化)
我已尝试的方法:
- 读取
/proc/pid/maps获取栈区域后读取/proc/pid/mem,但未找到目标数据 - 使用gdb查找loc的地址,但该地址不在maps中的栈范围内(大概率是ASLR导致)
内容的提问来源于stack exchange,提问作者Weed Cookie
相关产品推荐
相关产品推荐

