python - 从命令行反汇编 Python 脚本?
问题描述
使用 gcc,您可以在代码编译成程序集后使用 -S 停止编译。Python/字节码有类似的功能吗?我知道这样的方法:
import dis
x = compile('print(1)', '', 'eval')
dis.dis(x)
哪个打印:
1 0 LOAD_NAME 0 (print)
2 LOAD_CONST 0 (1)
4 CALL_FUNCTION 1
6 RETURN_VALUE
但我正在考虑更多类似的东西:
> python3 -{SOME FLAG HERE} output my_script.py
它以可读格式输出包含脚本字节码的文件。
解决方案
如果您要查找的是反汇编程序的输出,那么您可以将模块作为脚本运行:
python -m dis myscript.py
反汇编程序输出将打印到标准输出。您可以使用适当的 shell 工具将其重定向到某个文件。例如在 *nix 上:
python -m dis myscript.py > output.txt
注意:dis
据我所知,这种用法没有记录,并且检查源代码它可能不是模块的稳定部分,但它确实适用于当前的 CPython。
推荐阅读
- apache-flink - Flink watermark:通过实现 WatermarkGenerator 发送水印的频率
- sql - 这两个使用 Count 函数的 select 语句有什么区别?SQL 甲骨文
- tizen - 获取系统设置值
- javascript - 我怎样才能知道谁是获胜者?
- karate - 我们可以在从另一个功能内部调用功能时传递方法和路径吗
- terraform - 如果不为空,则添加到列表
- go - 在运行时更新 golang 缓冲通道的容量
- amazon-web-services - Docker 文件需要在没有 Internet 网关的情况下安装 nvm
- python - 如何使用 Tkinter GUI(Python)通过套接字传输文件
- spring-mybatis - @CacheNamespace 和 @CacheNamespaceRef