prometheus-lua / Prometheus

Lua Obfuscator written in pure Lua
https://levno-710.gitbook.io/prometheus/
GNU Affero General Public License v3.0
202 stars 60 forks source link

[BUG] Parenthesis-enclosed expressions aren't truncated to 1 value #154

Open 9382 opened 7 months ago

9382 commented 7 months ago

Describe the bug The obfuscator doesn't support truncating the output of a function or ... using parenthesis (())

Expected behavior The amount of values to be truncated (or raised with a nil in the case of no output) to 1 argument - See lua 5.1 documentation §2.5

To Reproduce Here's a function which displays this behaviour - the output will be different between the obfuscated script and the original code

local function x()
    return 3, 4, 5
end
print("Expecting '3, 4, 5' and then just '3'")
print(x())
print((x()))
Zaenalos commented 7 months ago

I tried to replicate the bug and the obfuscated script produces the same output. I think you should change your preset.

9382 commented 7 months ago

I just attempted it on purely the "Minify" preset (so no obfuscation at all) and it produced the following code:

local function p()return 3,4,5 end
print("\069\120\112\101\099\116\101\100 \'\051\044 \052\044 \053\' \097\110\100 \116\104\101\110 \106\117\115\116 \'\051\'")
print(p())
print(p())

(I manually added the newlines) As you can see, the last line has had the extra parenthesis stripped, which means the truncation no longer takes place, and both prints now become identical (they should not be identical). Are you sure you can't replicate this bug?

levno-710 commented 6 months ago

I will look into this this weekend. I didn't consider this case