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

Posted

技术标签:

【中文标题】使用 IDA Pro 和 IDAPython 获取 CPP 对象的值【英文标题】:Getting the Value of a CPP Object using IDA Pro and IDAPython 【发布时间】:2021-10-01 05:48:40 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

使用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"

【讨论】:

完美,谢谢。在我发布我的问题后,我确实弄清楚了一段时间,而且我一直在使用与你完全相同的方法。

以上是关于使用 IDA Pro 和 IDAPython 获取 CPP 对象的值的主要内容,如果未能解决你的问题,请参考以下文章

IDAPython学习

IDApython 命令

IDA PRO中怎样查看寄存器的值

IDAPython安装

利用IDAPython给Windows API下条件断点

IDAPython学习