微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将带有 python 的 Enum 添加到 Ghidra 项目中

如何解决如何将带有 python 的 Enum 添加到 Ghidra 项目中

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

解决方法

您可以通过 CParser 创建一个枚举,然后将生成的 DataType 添加到 DataTypeManager。我有一个 script for this generic workflow,如果您不关心自己编写脚本,并且满足于将 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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。