Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

任意のバイトコードの実行

ctypesでのアセンブラは全く相手にされないのでpythonバイトコードを実行する方も書いておく。
pythonバイトコードを実行してみる。

from types import CodeType, FunctionType

"""
  2           0 LOAD_CONST               1 ('Hello!')
              3 PRINT_ITEM
              4 PRINT_NEWLINE
              5 LOAD_CONST               0 (None)
              8 RETURN_VALUE

"""
b = 'd\x01\x00GHd\x00\x00S'

code = CodeType(0, 0, 1, 0x01|0x02|0x40, b, (None, "Hello!"), (), (), __file__,
        '', 1, '\x00\x01')

exec code 

f = FunctionType(code, globals())
f()

まあpythonistaは出来て当たり前だよな。

追記
引数付きのケースも書いておく

from types import CodeType, FunctionType

b = '|\x00\x00GHd\x00\x00S'

code = CodeType(1, 1, 1, 0x01|0x02|0x40, b, (None, ), (), ('text',), __file__,
        '', 1, '\x00\x01')

f = FunctionType(code, globals())
f("Hello!")