Dim*_*nek 5 python genetic-programming bytecode-manipulation
我想在Python中做一些字节码操作(想想遗传编程).
我在Python源代码树的crashers测试部分遇到了一个测试用例:
破碎的字节码对象很容易使解释器崩溃.这不是固定的.
因此问题,如何验证给定的调整字节代码,它不会崩溃解释器?它甚至可能吗?
测试源,在http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html之后
cc = (lambda fc=(
lambda n: [
c for c in
().__class__.__bases__[0].__subclasses__()
if c.__name__ == n
][0]
):
fc("function")(
fc("code")(
0, 0, 0, 0, "KABOOM", (), (), (), "", "", 0, ""
), {}
)()
)
Run Code Online (Sandbox Code Playgroud)
这里,该模块定义cc了如果被调用则mymod.cc()崩溃解释器.虽然这是一个非常棘手的例子,"KABOOM"它使用自定义字节码创建新的代码对象,然后运行它.
我接受一些验证预定义字节码的东西,例如来自.pyc文件.
两者都过时了,第一个没有代码(至少我找不到),但可能有助于了解可以做什么/如何做以及有哪些限制。
完全有效的字节码仍然可以做可怕的事情