2019-08-14 19:59:33 +00:00
|
|
|
# LuaPytecode
|
|
|
|
Parses Lua 5.1 bytecode
|
2019-08-14 20:18:12 +00:00
|
|
|
|
|
|
|
# Example
|
2021-04-09 14:21:47 +00:00
|
|
|
|
|
|
|
loads a raw lua bytecode dump
|
2019-08-14 20:18:12 +00:00
|
|
|
```python
|
|
|
|
import luac
|
|
|
|
|
2021-04-09 14:21:47 +00:00
|
|
|
lc = luac.LuaUndump()
|
|
|
|
chunk = lc.loadFile("test.luac")
|
2019-08-14 20:18:12 +00:00
|
|
|
|
|
|
|
print("\n===== [[Disassembly]] =====\n")
|
|
|
|
|
2019-08-15 17:03:53 +00:00
|
|
|
lc.print_dissassembly()
|
2019-08-14 20:18:12 +00:00
|
|
|
```
|
|
|
|
|
2021-04-09 14:21:47 +00:00
|
|
|
or just parse lua bytecode from an array
|
2019-08-14 20:18:12 +00:00
|
|
|
```python
|
2019-08-15 17:03:53 +00:00
|
|
|
import luac
|
|
|
|
|
2019-08-14 20:18:12 +00:00
|
|
|
bytecode = "27\\76\\117\\97\\81\\0\\1\\4\\8\\4\\8\\0\\21\\0\\0\\0\\0\\0\\0\\0\\112\\114\\105\\110\\116\\40\\39\\104\\101\\108\\108\\111\\32\\119\\111\\114\\108\\100\\39\\41\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\2\\2\\4\\0\\0\\0\\5\\0\\0\\0\\65\\64\\0\\0\\28\\64\\0\\1\\30\\0\\128\\0\\2\\0\\0\\0\\4\\6\\0\\0\\0\\0\\0\\0\\0\\112\\114\\105\\110\\116\\0\\4\\12\\0\\0\\0\\0\\0\\0\\0\\104\\101\\108\\108\\111\\32\\119\\111\\114\\108\\100\\0\\0\\0\\0\\0\\4\\0\\0\\0\\1\\0\\0\\0\\1\\0\\0\\0\\1\\0\\0\\0\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0".split('\\')
|
|
|
|
bytecode = list(map(int, bytecode))
|
2021-04-09 14:21:47 +00:00
|
|
|
lc = luac.LuaUndump()
|
2019-08-14 20:18:12 +00:00
|
|
|
chunk = lc.decode_bytecode(bytecode)
|
2019-08-15 17:03:53 +00:00
|
|
|
|
|
|
|
lc.print_dissassembly()
|
2019-08-14 20:18:12 +00:00
|
|
|
```
|