0

看到有人使用ghidra.app.util.cparser.C将结构字符串解析为结构对象,然后他们使用data_type_manager.addDataType(). 我想用 Enumerates 实现该方法,但我不确定如何。如果有更好的方法来添加枚举,我会很乐意使用它,如果这是最好的方法,那么解释将是一个很大的帮助。这是我的参考:https ://reverseengineering.stackexchange.com/questions/23330/ghidra-python-create-struct-with-big-endian-field

4

1 回答 1

0

您可以通过 CParser 创建一个枚举,然后将生成的 DataType 添加到 DataTypeManager。我有这个通用工作流的脚本,如果您不关心自己编写脚本,并且满足于将 C 代码粘贴到的简单 GUI,请检查生成的 DataType 并在需要时添加它。

否则你也可以直接创建一个枚举数据类型:

from ghidra.program.model.data import EnumDataType
# maximum enum value is (2^length)-1 according to some comment, but if you pass 8 it should be every possible Java long value, so I am not sure
enum = EnumDataType("EnumName", length)
enum.add("One", 1)
enum.add("Two", 2)
enum.add("Three", 3)
dataTypeManager.addDataType(enum, None)
于 2021-03-18T15:33:58.040 回答