pwndbg练手
pwndbg pwndbg是gdb的一个拓展,使用体验比gdb好很多。使用文档。 查看static变量存储在哪儿 编写一个测试程序staticMemberInClass.cpp。 class TestClass { public: static int static_member; }; int TestClass::static_member = 20; int main() { TestClass::static_member = 30; } 编译g++ -g staticMemberInClass.cpp -o staticTest.o 调试gdb ./staticTest.o 在main函数处打断点,b main 运行r 这个输出结果就人性化很多了 vmmap查看虚拟内存映射 可以看到是没有堆的,使用heap查看堆 进一步证实了此时确实还没有堆 p &TestClass::static_member查看静态成员的地址 结合汇编代码 运行到此处时,p $rip+0x2ed5查看将0x1e也就是30存在哪个地址了 算上dword正好是static_member的地址 x/wd 0x555555558010查看一下该地址的值 多方面都印证了static_member存储在这个地址 vmmap查看一下0x555555558010在属于哪个部分 很明显存储在数据段中。