如何解析GraalPython字节码?关于扩展xdis反编译工具的咨询
关于扩展xdis支持GraalPython字节码解析的问题
- 我正考虑为跨版本Python反编译工具xdis添加GraalPython支持。GraalPython提供的Code类型和Python原生的
PyCode_New类似,但底层的co_code字节码存在差异——Python的co_code是标准Python字节码指令的编码,而GraalPython的字节码格式不同。 - 字节码操作数一般是常量池或变量名列表的索引,虽然Graal的Code类型已经存储了这些信息,但我怀疑
co_code字节数组中还包含额外信息。 - 以
/tmp/five.py中的简单函数为例,用GraalVM Python 3.8.5编译后,其十六进制转储包含模块信息、主代码和嵌入的源码,函数five()的字节码大致在0x80位置。当把返回值从5改为6时,该位置的字节码会发生变化。
问题
请问如何解析这类字节码?是否有可用工具?
编辑说明:获取可靠十六进制转储存在问题,建议自行使用
compileall生成并编写转储程序。
内容的提问来源于stack exchange,提问作者rocky
相关产品推荐
相关产品推荐

