使用 IDA Pro 和 IDAPython 获取 CPP 对象的值

问题描述

我使用 IDA Pro 在返回 cocos2d::Image 对象指针作为响应的函数上设置了断点,如下面的屏幕截图所示。

IDA Breakpoint

但是,我完全不知道如何使用 IDAPython 打印出对象成员等。有没有办法做到这一点?文档并没有太大帮助,似乎只有检查类 C 结构的方法

解决方法

使用 print Dword(addr) 打印双字大小的成员,使用 print Byte(addr) 打印字节大小的成员。 Result 存储在 eax 中,因此您可以使用 从 eax 获取成员地址的相对偏移量。打印屏幕截图中的所有成员:

eaxVal = GetRegValue("eax")
print Dword(eaxVal+45)
print "\n"
print Dword(eaxVal+51)
print "\n"
print Dword(eaxVal+52)
print "\n"
print Byte(eaxVal+184)
print "\n"
print Byte(eaxVal+188)
print "\n"