atrexus / unluau

A decompiler for Luau (Roblox's Lua based programming language: https://luau-lang.org/).
Apache License 2.0
87 stars 21 forks source link

unhandled operation code (164) #26

Closed stan2474 closed 1 year ago

stan2474 commented 1 year ago

Used an exploit (Electron) to grab the .luau file that I have attached. When trying to decompile, I get this error. An error occured when decompiling: unhandled operation code (164) Zipped because GitHub does not allow .luau files bytecode.zip

atrexus commented 1 year ago

Set the --encoding option to "Client" in the command line. Operation codes are encoded on the roblox client.

stan2474 commented 1 year ago

I am now getting Unknown capture type 1 with --encoding set to Client

Unluau.CLI.exe a.luau --encoding Client -v
10:47:40 [Debug] Deserializer: Reading 45 strings from the string table
10:47:40 [Debug] Deserializer: Reading 11 functions from main bytecode pool
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 13 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 6 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 441 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 36 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 5 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 124 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 24 constants from function prototype body
An error occured when decompiling:      Unknown capture type 1
atrexus commented 1 year ago

I am now getting Unknown capture type 1 with --encoding set to Client

Unluau.CLI.exe a.luau --encoding Client -v
10:47:40 [Debug] Deserializer: Reading 45 strings from the string table
10:47:40 [Debug] Deserializer: Reading 11 functions from main bytecode pool
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 13 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 6 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 441 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 36 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 6 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 5 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 2 constants from function prototype body
10:47:40 [Debug] Deserializer: Reading basic function prototype information
10:47:40 [Debug] Deserializer: Reading 124 instructions from function prototype body
10:47:40 [Debug] Deserializer: Reading 24 constants from function prototype body
An error occured when decompiling:      Unknown capture type 1

The decompiler is still in early alpha so there are many unhandled operation codes and unimplemented language features. I am afraid this script is too complex and v0.0.7-alpha may be unable to decompile this script.