【问题标题】:how would I make this script less laggy? lua我怎样才能使这个脚本不那么滞后? lua
【发布时间】:2021-07-30 02:04:15
【问题描述】:

所以我正在研究一个混淆器,但是当我添加字符串解码算法时,由于这个脚本,它真的很滞后:

local addEnc = ""
local shouldAdd = true
newScript:gsub(".", function(c)
    if c == ")" then
        if shouldAdd == true then
            addEnc = addEnc .. ")" .. MyAlgorithm
            shouldAdd = false
        else
            addEnc = addEnc .. c
        end
    else
        addEnc = addEnc .. c
    end
end)

它适用于较小的脚本,但是当您混淆非常大的脚本时,它需要很长时间。 所以基本上该脚本在第一个之后添加了解码算法)有什么办法可以做到这一点但又不会那么滞后?

【问题讨论】:

    标签: lua obfuscation


    【解决方案1】:

    您正在遍历整个字符串,只是为了在第一次出现 ) 之后连接一些东西。您可以使用newScript:find('%)') 找到第一个) 的位置,然后简单地连接部分:

    local index = newScript:find('%)')
    return newScript:sub(1, index) .. MyAlgorithm .. newScript:sub(index + 1)
    

    %) 中的 % 是因为是 Lua 字符串模式中的特殊字符。或者,您可以使用:find(')', 1, true) 禁用模式匹配并使用严格查找。

    【讨论】:

    • 谢谢,这解决了我所有的性能问题 :)
    • @cheatcentral 然后不要忘记将此答案标记为您问题的解决方案
    • 应该是newScript:sub(1, index) .. MyAlgorithm .. newScript:sub(index + 1)?
    • @Nifim Mhm 既然你提到了它,如果你确实想保留),那确实应该是这样。
    • 我的意思是,如果您使用这些输入 (hello)!world 运行您的示例,您将得到 (hello)world(hello)!
    【解决方案2】:

    您将gsub 用于其标准目的,但以非常不标准的方式。

    而不是你可以简单地做的功能:

    newScript:gsub('%)', ')' .. MyAlgorithm, 1)
    

    此处的 1 阻止 gsub 继续将 ) 替换为 ")" .. MyAlgorithm


    例子

    newScript = "((hello)!)"
    MyAlgorithm = "world"
    
    print(newScript:gsub('%)', ')' .. MyAlgorithm, 1))
    

    输出

    ((你好)世界!)

    【讨论】:

    • 这很好用,我的算法使用“%”并且由于某种原因删除了所有“%”,我将如何解决这个问题?
    猜你喜欢
    • 2023-01-05
    • 2019-05-30
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多