【发布时间】:2021-09-28 03:27:52
【问题描述】:
所以我正在开发一个 lua 混淆器,它进展顺利,但我注意到,如果你到脚本的末尾并更改 loadstring 以打印你得到整个脚本,我将如何解决这个问题?
这是一个经过混淆处理的 Hello World 项目:
--Protected by blueSecure(1.2)
getgenv().ProtectedByBlueSecure = true
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' function dec(data) data = string.gsub(data, '[^'..b..'=]', '') return (data:gsub('.', function(x) if (x == '=') then return '' end local r,f='',(b:find(x)-1) for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end return r; end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) if (#x ~= 8) then return '' end local c=0 for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end return string.char(c) end))end
return(function(...)
(({...})[1])[1]=(({...})[2])()[dec('Z2FtZQ=="')];
(({...})[1])[1]=dec('aWY=');
(({...})[1])[tonumber(dec('Mg=='))]=(({...})[1])[tonumber(dec('MQ=='))] .. dec('IA==');
(({...})[1])[tonumber(dec('Mw=='))]=(({...})[1])[tonumber(dec('Mg=='))] .. dec('Z2V0Z2Vudg==');
(({...})[1])[tonumber(dec('NA=='))]=(({...})[1])[tonumber(dec('Mw=='))] .. dec('KCku');
(({...})[1])[tonumber(dec('NQ=='))]=(({...})[1])[tonumber(dec('NA=='))] .. dec('UHJvdGVjdGVkQnlCbHVlU2VjdXJl');
(({...})[1])[tonumber(dec('Ng=='))]=(({...})[1])[tonumber(dec('NQ=='))] .. dec('IA==');
(({...})[1])[tonumber(dec('Nw=='))]=(({...})[1])[tonumber(dec('Ng=='))] .. dec('dGhlbg==');
(({...})[1])[tonumber(dec('OA=='))]=(({...})[1])[tonumber(dec('Nw=='))] .. dec('IA==');
(({...})[1])[tonumber(dec('OQ=='))]=(({...})[1])[tonumber(dec('OA=='))] .. dec('cHJpbnQ=');
(({...})[1])[tonumber(dec('MTA='))]=(({...})[1])[tonumber(dec('OQ=='))] .. dec('KCI=');
(({...})[1])[tonumber(dec('MTE='))]=(({...})[1])[tonumber(dec('MTA='))] .. dec('SGVsbG8=');
(({...})[1])[tonumber(dec('MTI='))]=(({...})[1])[tonumber(dec('MTE='))] .. dec('IA==');
(({...})[1])[tonumber(dec('MTM='))]=(({...})[1])[tonumber(dec('MTI='))] .. dec('V29ybGQ=');
(({...})[1])[tonumber(dec('MTQ='))]=(({...})[1])[tonumber(dec('MTM='))] .. dec('ISIpIA==');
(({...})[1])[tonumber(dec('MTU='))]=(({...})[1])[tonumber(dec('MTQ='))] .. dec('ZWxzZQ==');
(({...})[1])[tonumber(dec('MTY='))]=(({...})[1])[tonumber(dec('MTU='))] .. dec('CiAgICA=');
(({...})[1])[tonumber(dec('MTc='))]=(({...})[1])[tonumber(dec('MTY='))] .. dec('Z2FtZQ==');
(({...})[1])[tonumber(dec('MTg='))]=(({...})[1])[tonumber(dec('MTc='))] .. dec('Og==');
(({...})[1])[tonumber(dec('MTk='))]=(({...})[1])[tonumber(dec('MTg='))] .. dec('R2V0U2VydmljZQ==');
(({...})[1])[tonumber(dec('MjA='))]=(({...})[1])[tonumber(dec('MTk='))] .. dec('KCI=');
(({...})[1])[tonumber(dec('MjE='))]=(({...})[1])[tonumber(dec('MjA='))] .. dec('UGxheWVycw==');
(({...})[1])[tonumber(dec('MjI='))]=(({...})[1])[tonumber(dec('MjE='))] .. dec('Iiku');
(({...})[1])[tonumber(dec('MjM='))]=(({...})[1])[tonumber(dec('MjI='))] .. dec('TG9jYWxQbGF5ZXI=');
(({...})[1])[tonumber(dec('MjQ='))]=(({...})[1])[tonumber(dec('MjM='))] .. dec('Og==');
(({...})[1])[tonumber(dec('MjU='))]=(({...})[1])[tonumber(dec('MjQ='))] .. dec('S2ljaw==');
(({...})[1])[tonumber(dec('MjY='))]=(({...})[1])[tonumber(dec('MjU='))] .. dec('KCI=');
(({...})[1])[tonumber(dec('Mjc='))]=(({...})[1])[tonumber(dec('MjY='))] .. dec('U3RvcA==');
(({...})[1])[tonumber(dec('Mjg='))]=(({...})[1])[tonumber(dec('Mjc='))] .. dec('IA==');
(({...})[1])[tonumber(dec('Mjk='))]=(({...})[1])[tonumber(dec('Mjg='))] .. dec('cmVtb3Zpbmc=');
(({...})[1])[tonumber(dec('MzA='))]=(({...})[1])[tonumber(dec('Mjk='))] .. dec('IA==');
(({...})[1])[tonumber(dec('MzE='))]=(({...})[1])[tonumber(dec('MzA='))] .. dec('Y3JlZGl0cw==');
(({...})[1])[tonumber(dec('MzI='))]=(({...})[1])[tonumber(dec('MzE='))] .. dec('IA==');
(({...})[1])[tonumber(dec('MzM='))]=(({...})[1])[tonumber(dec('MzI='))] .. dec('eW91');
(({...})[1])[tonumber(dec('MzQ='))]=(({...})[1])[tonumber(dec('MzM='))] .. dec('IA==');
(({...})[1])[tonumber(dec('MzU='))]=(({...})[1])[tonumber(dec('MzQ='))] .. dec('dGhpZWY=');
(({...})[1])[tonumber(dec('MzY='))]=(({...})[1])[tonumber(dec('MzU='))] .. dec('LCA=');
(({...})[1])[tonumber(dec('Mzc='))]=(({...})[1])[tonumber(dec('MzY='))] .. dec('Ymx1ZVNlY3VyZQ==');
(({...})[1])[tonumber(dec('Mzg='))]=(({...})[1])[tonumber(dec('Mzc='))] .. dec('IikKIA==');
(({...})[1])[tonumber(dec('Mzk='))]=(({...})[1])[tonumber(dec('Mzg='))] .. dec('ZW5k');loadstring((({...})[1])[tonumber(dec('Mzk='))])()end)({},getfenv,table.remove)
请不要指出我使用的是 Base64,一旦我一切正常,就会改变这一点
谢谢
【问题讨论】:
标签: lua obfuscation