如何使用 IDApython 获取全局变量的数组大小?

逆向工程 蟒蛇 大批
2021-06-30 20:46:15

我可以使用MakeArray创建一个数组

有没有函数可以获取我创建的数组的大小?

我试过GetArrayId + GetLastIndex但它似乎不起作用。

1个回答

数组是数据项的一个示例与 IDA 中的所有项目(另一种项目类型是指令)一样,它有一个起始地址(head)和size您可以使用函数get_item_size()(legacy name ItemSize())检索整个项目的大小

要计算数组中的项数,您可以将整个数组的大小除以一个元素的大小。但是如何知道元素的大小呢?为此,您需要使用函数检查项目的标志(附加到头字节)get_flags()基本项目类型以DT_TYPE位(标志的前 4 位)定义的位进行编码,并采用FF_BYTE(字节)、FF_WORD(字)等值FF_DWORD但是,您可以使用get_data_elsize()从标志返回字节大小的函数而不是手动检查位

有关更多信息,请查看bytes.hppSDK 中标头。