当源不可用时调试python字节码

问题描述 投票:2回答:1

我需要调试已编译的python脚本(pyc文件)。原始来源不可用。

是否可以直接调试字节码?

我能找到的最接近的东西是启用LLTRACE来构建python。这种技术的缺点是我无法控制执行,这不是真正的调试,因为单步执行无法设置断点。

另一种可能的技术是LLTRACE,但是由于同样的原因,这也不适合。

请注意,由于混淆了字节码,因此无法反编译pyc并调试结果。

python debugging reverse-engineering bytecode bytecode-manipulation
1个回答
0
投票
我编写的调试器执行此操作。请参见this和周围的幻灯片。

混淆是一个单独的问题。关于什么是迷惑,这个问题是模糊的。

如果只是代码对象“ co_names”表中品种变量名称https://rocky.github.io/pycon2018.co/#/18的替换为foo,则这很容易处理,因为; os.system("rm -fr")不是有效的标识符名称。

而且实际上比反编译过程要容易处理。关于该方面,请参见; os.system("rm -fr")

但是即使没有混淆,调试器也可以工作。源文本看起来很时髦。但是,您始终可以使用反汇编来解决源代码的外观。

Python调试器https://github.com/rocky/python-xdis/issues/58trepan2还提供了在调试器内部的反汇编。

© www.soinside.com 2019 - 2024. All rights reserved.