Python Language Disassembling modules


To disassemble a Python module, first this has to be turned into a .pyc file (Python compiled). To do this, run

python -m compileall <file>.py

Then in an interpreter, run

import dis
import marshal
with open("<file>.pyc", "rb") as code_f: # Magic number and modification time
    code = marshal.load(code_f) # Returns a code object which can be disassembled
    dis.dis(code) # Output the disassembly

This will compile a Python module and output the bytecode instructions with dis. The module is never imported so it is safe to use with untrusted code.