Перейти к содержимому
rootmaster

openHacker

Рекомендуемые сообщения

программа позволяющая управлять другими программами и их компонентами

 

устоновка:

устоновите мой мод для openOS

а затем зайдите в market>apps>openHacker.lua>yes

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@rootmaster Расскажи, зачем нужна эта тема со ссылкой на старую тему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Перепроверь все ссылки, некоторые выдают 404.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
43 минуты назад, eu_tomat сказал:

@rootmaster Расскажи, зачем нужна эта тема со ссылкой на старую тему?

это тема программы, та тема моего мода для openOS, эта тема нужна чтобы привлечь больше людей к моиму софту

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
41 минуту назад, Asior сказал:

Перепроверь все ссылки, некоторые выдают 404.

 

последняя ссылка в той теме это часть ссылки на файл(вторая часть находиться в программе getinstaller), при простом открытии она и должна выдавать 404 но если добавить к ней /filelist.txt она приведет на список файлов мода

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, rootmaster сказал:

эта тема нужна чтобы привлечь больше людей к моиму софту

С таким оформлением это вряд ли поможет. Скорее, даже отпугнёт:

1 час назад, rootmaster сказал:

программа позволяющая управлять другими программами и их компонентами

Скажи, лично тебя привлекло бы такое описание? Какие слова в этом описании тебя цепляют сильнее всего?

 

Зачем вообще нужно управлять программами и компонентами? С какой целью? Каков результат этого управления? В чём его преимущество? В чём недостатки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

It's time to analyze code))0

Скрытый текст

local a = require("event")
local b = require("computer")
local c = require("serialization")
local d = require("text")
local e = require("thread")
local f = require("component")
local g = require("shell")
local h
local i, j = g.parse(...)
local function k(l, m)
    return h.yesno("new state at: " .. l, true, m and 2 or 1)
end
local function n(l)
    local o = h.inputZone(l)
    if not o or o == "" then
        return nil
    end
    if o == "inf" then
        return math.huge
    end
    if o == "-inf" then
        return -math.huge
    end
    return tonumber(o or "*")
end
local function p()
    _G.openHaker = {}
    _G.openHaker.settings = {}
    _G.openHaker.settings.beepAllow = true
    _G.openHaker.settings.timersTickAllow = true
    _G.openHaker.settings.listensTickAllow = true
    _G.openHaker.settings.pushAllow = true
    _G.openHaker.settings.beepCard = false
    _G.openHaker.event = {}
    _G.openHaker.event.timers = {}
    _G.openHaker.event.listens = {}
    _G.openHaker.event.registerListens = true
    _G.openHaker.event.registerTimers = true
    _G.openHaker.event.pull = a.pull
    _G.openHaker.event.push = a.push
    _G.openHaker.event.timer = a.timer
    _G.openHaker.event.listen = a.listen
    _G.openHaker.event.register = a.register
    _G.openHaker.event.cancel = a.cancel
    _G.openHaker.event.ignore = a.ignore
    _G.openHaker.computer = {}
    _G.openHaker.computer.beep = b.beep
    _G.openHaker.thread = {}
    _G.openHaker.thread.create = e.create
    _G.openHaker.thread.threads = {}
    a.push = function(...)
        if _G.openHaker.settings.pushAllow then
            return _G.openHaker.event.push(...)
        else
            return true
        end
    end
    a.timer = function(q, r, s, ...)
        if not _G.openHaker.event.registerTimers then
            return _G.openHaker.event.timer(q, r, s, ...)
        end
        checkArg(1, q, "number")
        checkArg(2, r, "function")
        checkArg(3, s, "number", "nil")
        if not s then
            s = 1
        end
        local t = r
        local u
        local v
        local function w(...)
            local x
            for y = 1, #_G.openHaker.event.timers do
                if _G.openHaker.event.timers[y][1] == u then
                    x = y
                    break
                end
            end
            if not x then
                return false
            end
            if _G.openHaker.settings.timersTickAllow and _G.openHaker.event.timers[x][5] then
                local z = {pcall(t, ...)}
                v[4] = math.floor(v[4] - 1)
                if z[1] then
                    if z[2] == false or v[4] <= 0 then
                        table.remove(_G.openHaker.event.timers, x)
                    end
                    return table.unpack(z, 2)
                else
                    if v[4] <= 0 then
                        table.remove(_G.openHaker.event.timers, x)
                    end
                    error(z[2])
                end
            end
        end
        local A = _G.openHaker.event.timer(q, w, s, ...)
        v = {A, q, t, s, true}
        table.insert(_G.openHaker.event.timers, v)
        u = A
        return A
    end
    a.register = function(l, r, ...)
        if not _G.openHaker.event.registerListens then
            return _G.openHaker.event.register(l, r, ...)
        end
        checkArg(1, l, "string", "nil", "boolean")
        checkArg(2, r, "function")
        local t = r
        local u
        local B = ({...})[2]
        local function w(...)
            local x
            for y = 1, #_G.openHaker.event.listens do
                if _G.openHaker.event.listens[y][4] == u then
                    x = y
                    break
                end
            end
            if not x then
                return false
            end
            if _G.openHaker.settings.listensTickAllow and _G.openHaker.event.listens[x][5] then
                local z = {pcall(t, ...)}
                B = math.floor(B - 1)
                if z[1] then
                    if z[2] == false or B <= 0 then
                        table.remove(_G.openHaker.event.listens, x)
                    end
                    return table.unpack(z, 2)
                else
                    if B <= 0 then
                        table.remove(_G.openHaker.event.listens, x)
                    end
                    error(z[2])
                end
            end
        end
        local A = _G.openHaker.event.register(l, w, ...)
        table.insert(_G.openHaker.event.listens, {l, t, w, A, true})
        u = A
        return A
    end
    a.ignore = function(l, r, ...)
        checkArg(1, l, "string", "nil", "boolean")
        checkArg(2, r, "function")
        local u
        local w = r
        for y = 1, #_G.openHaker.event.listens do
            if _G.openHaker.event.listens[y][2] == r and _G.openHaker.event.listens[y][1] == l then
                w = _G.openHaker.event.listens[y][3]
                u = y
                break
            end
        end
        local z = _G.openHaker.event.ignore(l, w, ...)
        if z and u then
            table.remove(_G.openHaker.event.listens, u)
        end
        return z
    end
    a.cancel = function(A)
        checkArg(1, A, "number")
        for y = 1, #_G.openHaker.event.listens do
            if A == _G.openHaker.event.listens[y][4] then
                _G.openHaker.event.cancel(_G.openHaker.event.listens[y][4])
                table.remove(_G.openHaker.event.listens, y)
                for y = 1, #_G.openHaker.event.timers do
                    if A == _G.openHaker.event.timers[y][1] then
                        _G.openHaker.event.cancel(_G.openHaker.event.timers[y][1])
                        table.remove(_G.openHaker.event.timers, y)
                        return true
                    end
                end
                return true
            end
        end
        return false
    end
    b.beep = function(...)
        if _G.openHaker.settings.beepAllow then
            local i = {...}
            if not i[1] then
                i[1] = 440
            end
            if not i[2] then
                i[2] = 0.1
            end
            if _G.openHaker.settings.beepCard and type(i[1]) ~= "string" and f.isAvailable("beep") then
                f.beep.beep({[i[1]] = i[2]})
                os.sleep(i[2])
            else
                _G.openHaker.computer.beep(...)
            end
        end
    end
    e.create = function(r, ...)
        local C = _G.openHaker.thread.create(r, ...)
        table.insert(_G.openHaker.thread.threads, C)
        return C
    end
end
local function D()
    local E
    local function F()
        E = {"back"}
        for y = 1, #_G.openHaker.event.timers do
            local G = _G.openHaker.event.timers[y]
            table.insert(
                E,
                "index: " ..
                    y ..
                        ", num: " ..
                            math.floor(G[1]) ..
                                ", pereud: " .. G[2] .. ", times: " .. G[4] .. ", active: " .. tostring(G[5])
            )
        end
    end
    while true do
        F()
        while true do
            local A = h.menu("timers", E)
            if A == 1 then
                return
            else
                A = A - 1
                local G = _G.openHaker.event.timers[A]
                while true do
                    F()
                    local H = ": " .. E[A + 1]
                    local I =
                        h.menu("timer control " .. H, {"back", "kill", "set pereud", "set times", "call", "set active"})
                    if I == 1 then
                        break
                    elseif I == 2 then
                        a.cancel(G[1])
                        break
                    elseif I == 3 then
                        local J = n("pereud")
                        a.cancel(G[1])
                        G[2] = J
                        a.timer(table.unpack(G, 2))
                        A = #_G.openHaker.event.timers
                    elseif I == 4 then
                        local J = n("times")
                        a.cancel(G[1])
                        G[4] = J
                        a.timer(table.unpack(G, 2))
                        A = #_G.openHaker.event.timers
                    elseif I == 5 then
                        local z = {xpcall(G[3], debug.traceback)}
                        if #z > 1 or z[1] == false then
                            local K = c.serialize(z)
                            h.splash(d.detab(K))
                        end
                    elseif I == 6 then
                        G[5] = k("activate", G[5])
                    end
                end
            end
        end
    end
end
local function L()
    local E
    local function F()
        E = {"back"}
        for y = 1, #_G.openHaker.event.listens do
            local M = _G.openHaker.event.listens[y]
            table.insert(
                E,
                "index: " ..
                    y ..
                        ", num: " .. math.floor(M[4]) .. ", event: " .. tostring(M[1]) .. ", active: " .. tostring(M[5])
            )
        end
    end
    while true do
        F()
        local A = h.menu("listens", E)
        if A == 1 then
            return
        else
            A = A - 1
            local M = _G.openHaker.event.listens[A]
            while true do
                F()
                local H = ": " .. E[A + 1]
                local I = h.menu("listen control" .. H, {"back", "kill", "call", "set active"})
                if I == 1 then
                    break
                elseif I == 2 then
                    a.cancel(M[4])
                    break
                elseif I == 3 then
                    local z = {xpcall(M[2], debug.traceback)}
                    if #z > 1 or z[1] == false then
                        local K = c.serialize(z)
                        h.splash(d.detab(K))
                    end
                elseif I == 4 then
                    M[5] = k("activate", M[5])
                end
            end
        end
    end
end
local function N()
    local E
    local function F()
        E = {"back"}
        for y = 1, #_G.openHaker.thread.threads do
            local C = _G.openHaker.thread.threads[y]
            table.insert(E, "index: " .. y .. ", state: " .. C:status())
        end
    end
    while true do
        F()
        local A = h.menu("threads", E)
        if A == 1 then
            return
        else
            A = A - 1
            local C = _G.openHaker.thread.threads[A]
            while true do
                F()
                local H = ": " .. E[A + 1]
                local I = h.menu("thread control" .. H, {"back", "kill", "suspend(stop)", "resume(start)"})
                if I == 1 then
                    break
                elseif I == 2 then
                    C:kill()
                    table.remove(_G.openHaker.thread.threads, A)
                    break
                elseif I == 3 then
                    C:suspend()
                elseif I == 4 then
                    C:resume()
                end
            end
        end
    end
end
local function O()
    while true do
        local A =
            h.menu(
            "event",
            {"push allow", "timer tick allow", "listen tick allow", "timer menager", "listen menager", "back"}
        )
        if A == 1 then
            _G.openHaker.settings.pushAllow = k("pushAllow", _G.openHaker.settings.pushAllow)
        elseif A == 2 then
            _G.openHaker.settings.timersTickAllow = k("timersTickAllow", _G.openHaker.settings.timersTickAllow)
        elseif A == 3 then
            _G.openHaker.settings.listensTickAllow = k("listensTickAllow", _G.openHaker.settings.listensTickAllow)
        elseif A == 4 then
            D()
        elseif A == 5 then
            L()
        elseif A == 6 then
            return
        end
    end
end
local function P()
    while true do
        local A = h.menu("thread", {"thread menager", "back"})
        if A == 1 then
            N()
        elseif A == 2 then
            return
        end
    end
end
local function Q()
    while true do
        local A = h.menu("optimization", {"computer.beep to beep card", "back"})
        if A == 1 then
            _G.openHaker.settings.beepCard = k("set", _G.openHaker.settings.beepCard)
        elseif A == 2 then
            return
        end
    end
end
if not _G.openHaker then
    p()
end
if not j.l then
    h = require("simpleGui2").create()
end
while not j.l do
    local A = h.menu("open haker", {"event", "thread", "optimization", "back"})
    if A == 1 then
        O()
    elseif A == 2 then
        P()
    elseif A == 3 then
        Q()
    elseif A == 4 then
        h.exit()
    end
end

 

Изменено пользователем Bs0Dd
  • Нравится 2
  • Ха-ха 4
  • Грусть 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

It's time to go deeper :)

 

Насколько выявил анализ кода, эта программа при запуске заменяет библиотеки event, thread на свои; то же происходит с computer.beep.

Это позволяет управлять программами, запущенными после этого - а точнее, не давать им создавать свои события (хорошо, что никто не знает про computer.pushSignal), регистрировать слушателей, в любой момент приостанавливвать потоки - в общем, инструмент для тестов программ, наверно, был бы неплох.

Изменено пользователем ProgramCrafter
очепятка - было pullSignal вместо pushSignal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, ProgramCrafter сказал:

It's time to go deeper :)

 

Насколько выявил анализ кода, эта программа при запуске заменяет библиотеки event, thread на свои; то же происходит с computer.beep.

Это позволяет управлять программами, запущенными после этого - а точнее, не давать им создавать свои события (хорошо, что никто не знает про computer.pullSignal), регистрировать слушателей, в любой момент приостанавливвать потоки - в общем, инструмент для тестов программ, наверно, был бы неплох.

лол, computer.pushSignal почьти некто не юзает, если уж на то пошло то в _G.openHacker лежат все старые методы и настройки проги, это прога для отладки и поиграться

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, Bs0Dd сказал:

It's time to analyze code))0

  Скрыть содержимое


local a = require("event")
local b = require("computer")
local c = require("serialization")
local d = require("text")
local e = require("thread")
local f = require("component")
local g = require("shell")
local h
local i, j = g.parse(...)
local function k(l, m)
    return h.yesno("new state at: " .. l, true, m and 2 or 1)
end
local function n(l)
    local o = h.inputZone(l)
    if not o or o == "" then
        return nil
    end
    if o == "inf" then
        return math.huge
    end
    if o == "-inf" then
        return -math.huge
    end
    return tonumber(o or "*")
end
local function p()
    _G.openHaker = {}
    _G.openHaker.settings = {}
    _G.openHaker.settings.beepAllow = true
    _G.openHaker.settings.timersTickAllow = true
    _G.openHaker.settings.listensTickAllow = true
    _G.openHaker.settings.pushAllow = true
    _G.openHaker.settings.beepCard = false
    _G.openHaker.event = {}
    _G.openHaker.event.timers = {}
    _G.openHaker.event.listens = {}
    _G.openHaker.event.registerListens = true
    _G.openHaker.event.registerTimers = true
    _G.openHaker.event.pull = a.pull
    _G.openHaker.event.push = a.push
    _G.openHaker.event.timer = a.timer
    _G.openHaker.event.listen = a.listen
    _G.openHaker.event.register = a.register
    _G.openHaker.event.cancel = a.cancel
    _G.openHaker.event.ignore = a.ignore
    _G.openHaker.computer = {}
    _G.openHaker.computer.beep = b.beep
    _G.openHaker.thread = {}
    _G.openHaker.thread.create = e.create
    _G.openHaker.thread.threads = {}
    a.push = function(...)
        if _G.openHaker.settings.pushAllow then
            return _G.openHaker.event.push(...)
        else
            return true
        end
    end
    a.timer = function(q, r, s, ...)
        if not _G.openHaker.event.registerTimers then
            return _G.openHaker.event.timer(q, r, s, ...)
        end
        checkArg(1, q, "number")
        checkArg(2, r, "function")
        checkArg(3, s, "number", "nil")
        if not s then
            s = 1
        end
        local t = r
        local u
        local v
        local function w(...)
            local x
            for y = 1, #_G.openHaker.event.timers do
                if _G.openHaker.event.timers[y][1] == u then
                    x = y
                    break
                end
            end
            if not x then
                return false
            end
            if _G.openHaker.settings.timersTickAllow and _G.openHaker.event.timers[x][5] then
                local z = {pcall(t, ...)}
                v[4] = math.floor(v[4] - 1)
                if z[1] then
                    if z[2] == false or v[4] <= 0 then
                        table.remove(_G.openHaker.event.timers, x)
                    end
                    return table.unpack(z, 2)
                else
                    if v[4] <= 0 then
                        table.remove(_G.openHaker.event.timers, x)
                    end
                    error(z[2])
                end
            end
        end
        local A = _G.openHaker.event.timer(q, w, s, ...)
        v = {A, q, t, s, true}
        table.insert(_G.openHaker.event.timers, v)
        u = A
        return A
    end
    a.register = function(l, r, ...)
        if not _G.openHaker.event.registerListens then
            return _G.openHaker.event.register(l, r, ...)
        end
        checkArg(1, l, "string", "nil", "boolean")
        checkArg(2, r, "function")
        local t = r
        local u
        local B = ({...})[2]
        local function w(...)
            local x
            for y = 1, #_G.openHaker.event.listens do
                if _G.openHaker.event.listens[y][4] == u then
                    x = y
                    break
                end
            end
            if not x then
                return false
            end
            if _G.openHaker.settings.listensTickAllow and _G.openHaker.event.listens[x][5] then
                local z = {pcall(t, ...)}
                B = math.floor(B - 1)
                if z[1] then
                    if z[2] == false or B <= 0 then
                        table.remove(_G.openHaker.event.listens, x)
                    end
                    return table.unpack(z, 2)
                else
                    if B <= 0 then
                        table.remove(_G.openHaker.event.listens, x)
                    end
                    error(z[2])
                end
            end
        end
        local A = _G.openHaker.event.register(l, w, ...)
        table.insert(_G.openHaker.event.listens, {l, t, w, A, true})
        u = A
        return A
    end
    a.ignore = function(l, r, ...)
        checkArg(1, l, "string", "nil", "boolean")
        checkArg(2, r, "function")
        local u
        local w = r
        for y = 1, #_G.openHaker.event.listens do
            if _G.openHaker.event.listens[y][2] == r and _G.openHaker.event.listens[y][1] == l then
                w = _G.openHaker.event.listens[y][3]
                u = y
                break
            end
        end
        local z = _G.openHaker.event.ignore(l, w, ...)
        if z and u then
            table.remove(_G.openHaker.event.listens, u)
        end
        return z
    end
    a.cancel = function(A)
        checkArg(1, A, "number")
        for y = 1, #_G.openHaker.event.listens do
            if A == _G.openHaker.event.listens[y][4] then
                _G.openHaker.event.cancel(_G.openHaker.event.listens[y][4])
                table.remove(_G.openHaker.event.listens, y)
                for y = 1, #_G.openHaker.event.timers do
                    if A == _G.openHaker.event.timers[y][1] then
                        _G.openHaker.event.cancel(_G.openHaker.event.timers[y][1])
                        table.remove(_G.openHaker.event.timers, y)
                        return true
                    end
                end
                return true
            end
        end
        return false
    end
    b.beep = function(...)
        if _G.openHaker.settings.beepAllow then
            local i = {...}
            if not i[1] then
                i[1] = 440
            end
            if not i[2] then
                i[2] = 0.1
            end
            if _G.openHaker.settings.beepCard and type(i[1]) ~= "string" and f.isAvailable("beep") then
                f.beep.beep({[i[1]] = i[2]})
                os.sleep(i[2])
            else
                _G.openHaker.computer.beep(...)
            end
        end
    end
    e.create = function(r, ...)
        local C = _G.openHaker.thread.create(r, ...)
        table.insert(_G.openHaker.thread.threads, C)
        return C
    end
end
local function D()
    local E
    local function F()
        E = {"back"}
        for y = 1, #_G.openHaker.event.timers do
            local G = _G.openHaker.event.timers[y]
            table.insert(
                E,
                "index: " ..
                    y ..
                        ", num: " ..
                            math.floor(G[1]) ..
                                ", pereud: " .. G[2] .. ", times: " .. G[4] .. ", active: " .. tostring(G[5])
            )
        end
    end
    while true do
        F()
        while true do
            local A = h.menu("timers", E)
            if A == 1 then
                return
            else
                A = A - 1
                local G = _G.openHaker.event.timers[A]
                while true do
                    F()
                    local H = ": " .. E[A + 1]
                    local I =
                        h.menu("timer control " .. H, {"back", "kill", "set pereud", "set times", "call", "set active"})
                    if I == 1 then
                        break
                    elseif I == 2 then
                        a.cancel(G[1])
                        break
                    elseif I == 3 then
                        local J = n("pereud")
                        a.cancel(G[1])
                        G[2] = J
                        a.timer(table.unpack(G, 2))
                        A = #_G.openHaker.event.timers
                    elseif I == 4 then
                        local J = n("times")
                        a.cancel(G[1])
                        G[4] = J
                        a.timer(table.unpack(G, 2))
                        A = #_G.openHaker.event.timers
                    elseif I == 5 then
                        local z = {xpcall(G[3], debug.traceback)}
                        if #z > 1 or z[1] == false then
                            local K = c.serialize(z)
                            h.splash(d.detab(K))
                        end
                    elseif I == 6 then
                        G[5] = k("activate", G[5])
                    end
                end
            end
        end
    end
end
local function L()
    local E
    local function F()
        E = {"back"}
        for y = 1, #_G.openHaker.event.listens do
            local M = _G.openHaker.event.listens[y]
            table.insert(
                E,
                "index: " ..
                    y ..
                        ", num: " .. math.floor(M[4]) .. ", event: " .. tostring(M[1]) .. ", active: " .. tostring(M[5])
            )
        end
    end
    while true do
        F()
        local A = h.menu("listens", E)
        if A == 1 then
            return
        else
            A = A - 1
            local M = _G.openHaker.event.listens[A]
            while true do
                F()
                local H = ": " .. E[A + 1]
                local I = h.menu("listen control" .. H, {"back", "kill", "call", "set active"})
                if I == 1 then
                    break
                elseif I == 2 then
                    a.cancel(M[4])
                    break
                elseif I == 3 then
                    local z = {xpcall(M[2], debug.traceback)}
                    if #z > 1 or z[1] == false then
                        local K = c.serialize(z)
                        h.splash(d.detab(K))
                    end
                elseif I == 4 then
                    M[5] = k("activate", M[5])
                end
            end
        end
    end
end
local function N()
    local E
    local function F()
        E = {"back"}
        for y = 1, #_G.openHaker.thread.threads do
            local C = _G.openHaker.thread.threads[y]
            table.insert(E, "index: " .. y .. ", state: " .. C:status())
        end
    end
    while true do
        F()
        local A = h.menu("threads", E)
        if A == 1 then
            return
        else
            A = A - 1
            local C = _G.openHaker.thread.threads[A]
            while true do
                F()
                local H = ": " .. E[A + 1]
                local I = h.menu("thread control" .. H, {"back", "kill", "suspend(stop)", "resume(start)"})
                if I == 1 then
                    break
                elseif I == 2 then
                    C:kill()
                    table.remove(_G.openHaker.thread.threads, A)
                    break
                elseif I == 3 then
                    C:suspend()
                elseif I == 4 then
                    C:resume()
                end
            end
        end
    end
end
local function O()
    while true do
        local A =
            h.menu(
            "event",
            {"push allow", "timer tick allow", "listen tick allow", "timer menager", "listen menager", "back"}
        )
        if A == 1 then
            _G.openHaker.settings.pushAllow = k("pushAllow", _G.openHaker.settings.pushAllow)
        elseif A == 2 then
            _G.openHaker.settings.timersTickAllow = k("timersTickAllow", _G.openHaker.settings.timersTickAllow)
        elseif A == 3 then
            _G.openHaker.settings.listensTickAllow = k("listensTickAllow", _G.openHaker.settings.listensTickAllow)
        elseif A == 4 then
            D()
        elseif A == 5 then
            L()
        elseif A == 6 then
            return
        end
    end
end
local function P()
    while true do
        local A = h.menu("thread", {"thread menager", "back"})
        if A == 1 then
            N()
        elseif A == 2 then
            return
        end
    end
end
local function Q()
    while true do
        local A = h.menu("optimization", {"computer.beep to beep card", "back"})
        if A == 1 then
            _G.openHaker.settings.beepCard = k("set", _G.openHaker.settings.beepCard)
        elseif A == 2 then
            return
        end
    end
end
if not _G.openHaker then
    p()
end
if not j.l then
    h = require("simpleGui2").create()
end
while not j.l do
    local A = h.menu("open haker", {"event", "thread", "optimization", "back"})
    if A == 1 then
        O()
    elseif A == 2 then
        P()
    elseif A == 3 then
        Q()
    elseif A == 4 then
        h.exit()
    end
end

 

как мне данаело что мой код сливают, все со следующим обновлениям все проги будут ставиться прям в исполняемый файл market а лицензия проверяться через интернет если я бы хотел я сам бы выложил исходник но для конкретно этой программы я не захотел выкладывать исходник(так как на мой взгляд там плохой код), и теперь все программы с закрытым исходным кодом я буду именно так выкладывать как описал выше

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@rootmaster Против слива исполняемого кода не поможет ничто, если ты этот код собираешься распространять.

 

Каким образом достать код Lua из запускаемой программы? Секрет фирмы...

Скрытый текст

Например, можно подменить функцию load, чтобы она не только компилировала текстовый код Lua в байткод, но и записывала на диск тот код, который ей скормили.

При этом можно сделать так, чтобы этот "мод для OpenOS" не мог перезагрузить компьютер и вернуть load в исходное состояние.

 

16 минут назад, rootmaster сказал:

computer.pushSignal почьти некто не юзает

Так и event.push не очень много кто и что использует.

 

18 минут назад, rootmaster сказал:

это прога для отладки и поиграться

Я-то уже понял. Единственная проблема - почему тот, кто читает эту тему, узнаёт об этом только на 9 комментарии? :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, ProgramCrafter сказал:

@rootmaster Против слива исполняемого кода не поможет ничто, если ты этот код собираешься распространять.

 

Каким образом достать код Lua из запускаемой программы? Секрет фирмы...

  Показать содержимое

Например, можно подменить функцию load, чтобы она не только компилировала текстовый код Lua в байткод, но и записывала на диск тот код, который ей скормили.

При этом можно сделать так, чтобы этот "мод для OpenOS" не мог перезагрузить компьютер и вернуть load в исходное состояние.

 

Так и event.push не очень много кто и что использует.

 

Я-то уже понял. Единственная проблема - почему тот, кто читает эту тему, узнаёт об этом только на 9 комментарии? :blink:

так нада

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, ProgramCrafter сказал:

@rootmaster Против слива исполняемого кода не поможет ничто, если ты этот код собираешься распространять.

 

Каким образом достать код Lua из запускаемой программы? Секрет фирмы...

  Скрыть содержимое

Например, можно подменить функцию load, чтобы она не только компилировала текстовый код Lua в байткод, но и записывала на диск тот код, который ей скормили.

При этом можно сделать так, чтобы этот "мод для OpenOS" не мог перезагрузить компьютер и вернуть load в исходное состояние.

 

Так и event.push не очень много кто и что использует.

 

Я-то уже понял. Единственная проблема - почему тот, кто читает эту тему, узнаёт об этом только на 9 комментарии? :blink:

код можно проше достать string.dump он возврашает byte code но от туда легко выпарсить исходник

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, rootmaster сказал:

Например, можно подменить функцию load, чтобы она не только компилировала текстовый код Lua в байткод

Загрузка байткода недоступна по дефолту без правки конфига мода, проверка зашита в machine.lua. Сомневаюсь, что админы публичных серверов захотят включить эту фичу, пускай даже ради запуска знаменитых безопасных софтин rootmaster'а

  • Нравится 1
  • Одобряю 1
  • В шоке 1
  • Грусть 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, rootmaster сказал:

как мне данаело что мой код сливают, все со следующим обновлениям все проги будут ставиться прям в исполняемый файл market а лицензия проверяться через интернет если я бы хотел я сам бы выложил исходник но для конкретно этой программы я не захотел выкладывать исходник(так как на мой взгляд там плохой код), и теперь все программы с закрытым исходным кодом я буду именно так выкладывать как описал выше

А интернет магазин "безопасных модов" будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Laine_prikol сказал:

А интернет магазин "безопасных модов" будет?

каких безопасных модов? у меня один мод для openOS, это сборник моих библиотек приправленный исправлениям багов и перепилкой пары стандартных api он нужен для упрощения мне создания софта

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...