- 443
- 655
Выложили на форум телепорт для ДРП стало интересно как он работает.
Думаю такой да возььму и декомпильну но не тут то было он накрыт протектором от @babulya .
Ну я взял исходники протекта смотрю а тут....
Ну вот вроде бабуля человек который шарит за движуху кряков и т.д. а сделать таблицы локальными не додумался.
Думаю такой да возььму и декомпильну но не тут то было он накрыт протектором от @babulya .
Ну я взял исходники протекта смотрю а тут....
Ну вот вроде бабуля человек который шарит за движуху кряков и т.д. а сделать таблицы локальными не додумался.
Lua:
local scriptName = 'test'
require('protected.'..scriptName)
local inspect = require('inspect')
local w = 0
_G['load'] = function(...)
return nil
end
G[1] = function(arg)
w=w+1
if w == 3 then
local file = io.open("moonloader/codeArray.txt", "w")
io.output(file)
io.write(inspect(arg))
io.close(file)
end
local decode = ""
for i = 1, #arg do
if string.len(tonumber(arg[i])) == string.len(tonumber(string.reverse(arg[i]))) then
arg[i] = string.reverse(arg[i])
end
decode = decode .. "" .. string.char(arg[i])
end
return decode
end
G[2]()
Этот код сохраняет в "moonloader/codeArray.txt" таблицу в которой есть весь скрипт правда она ещё под "протектом".
Конечно можно было сохранять сразу исходник но луа не может нормально сохранять исходник в файл (появляется ошибка мол байткод битый).
Я просто взял функу декодировки и переписал под свою любимую Node JS.
JavaScript:
const fs = require('fs');
String.prototype.reverse = function(){
return this.split("").reverse().join("");
}
function dec(arg){
let decode = ""
for (let i = 0; i < arg.length; i++){
if (String(Number(arg[i])).length == String(Number(String(arg[i]).reverse())).length){
arg[i] = Number(String(arg[i]).reverse());
}
decode = decode + "" + String.fromCharCode(arg[i]);
}
return decode;
}
fs.writeFileSync(
'./script.txt',
dec(
eval(
fs.readFileSync(
'./codeArray.txt',
'ascii'
).replace('{','[').replace('}',']')
)
),
'ascii')
Вот и у нас уже есть исходник который был под протектом.
lampoteam