[按键精灵]代码混淆——生成一堆“无用”的函数代码

[按键精灵]代码混淆——生成一堆“无用”的函数代码

首页角色扮演代号精灵更新时间:2024-05-09

大家好,我是公众号3分钟学堂的郭立员~

前言

为了增加脚本被破解的难度,今天来说一个向脚本里面注入大量“无用”函数。

举个例子:

原始代码:

Dim str = "abc" TracePrint str

增加“无用”代码后:

//脚本开始。。 TracePrint c5ONCyRUbK4DzFil() Function c5ONCyRUbK4DzFil() c5ONCyRUbK4DzFil=d6Ib2yKt6IjlDezZ() End Function Function d6Ib2yKt6IjlDezZ() d6Ib2yKt6IjlDezZ=TKIc8lQgY6br6s5Q() End Function Function TKIc8lQgY6br6s5Q() TKIc8lQgY6br6s5Q=d2QmN6hyPzkrc6dW() End Function Function d2QmN6hyPzkrc6dW() d2QmN6hyPzkrc6dW=HUrtqF9l0ezbS9hW() End Function Function HUrtqF9l0ezbS9hW() HUrtqF9l0ezbS9hW=sgAunJkOSVzdWzMa() End Function Function sgAunJkOSVzdWzMa() sgAunJkOSVzdWzMa=FgJ71yHnZDSBPXR7() End Function Function FgJ71yHnZDSBPXR7() FgJ71yHnZDSBPXR7=Od27Q83eZUqdmkZ4() End Function Function Od27Q83eZUqdmkZ4() Od27Q83eZUqdmkZ4=rzjrz2vJbJ1UIVRP() End Function Function rzjrz2vJbJ1UIVRP() rzjrz2vJbJ1UIVRP="abc" End Function

从功能上来说都是输出一个"abc"的变量。

一、这种混淆有什么用

一般脚本被破解后,别人会直接删除掉脚本激活码部分,从而使脚本不需要进行卡密验证就能正常使用。

如果激活码部分的代码中有涉及到变量的,使用上混淆函数替换了,使得原本1行或者几行的代码,增加到几百行几千行,这样破解时删除的难度增加,同时把脚本内的其他变量也使用一些混淆函数,再把所有混淆函数穿插在正常脚本中,基本就很难删除了。

这样有人想破解,基本就是牵一发而动全身。

二、混淆函数的编写逻辑

先看两个混淆函数:

Function c5ONCyRUbK4DzFil()

c5ONCyRUbK4DzFil=d6Ib2yKt6IjlDezZ()

End Function

Function d6Ib2yKt6IjlDezZ()

d6Ib2yKt6IjlDezZ=TKIc8lQgY6br6s5Q()

End Function

它们之间的关系是一个函数的返回值是调用另外一个函数,如果看多个函数就会发现它们是“链条”关系,一环套一环的进行数据传递。

并且这样编写混淆函数,编写的数量无上限。

三、脚本代码:

①、把命令都当做字符串处理,然后写入到文本中。

②、函数名是一个16位的随机数字和字母,要求首位不能是数字。

③、一个函数是上一个函数的返回值。

其他细节就不说了,直接上代码:

Dim path = "/sdcard/pictures/code.txt" file.Write(path,"//脚本开始。。\n") Dim Str = "abc" Dim n = 10 For i = 1 To n Dim Rnd_Func_Name = Rnd_Func_Name_Next Dim Rnd_Func_Name_next = RndStr() If i = 1 Then file.Append path, "TracePrint " & Rnd_Func_Name_next & "()\n" ElseIf i = n Then If IsNumeric(str) Then file.Append path, "Function " & Rnd_Func_Name & "()\n" & Rnd_Func_Name & "=" & Str & "\nEnd Function\n" Else file.Append path, "Function " & Rnd_Func_Name & "()\n" & Rnd_Func_Name & "=""" & Str & """\nEnd Function\n" End If Else file.Append path, "Function " & Rnd_Func_Name & "()\n" & Rnd_Func_Name & "=" & Rnd_Func_Name_next & "()\nEnd Function\n" End If Next Function RndStr() Dim words = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" Dim num = "0123456789" Dim Rndword,line For i = 1 To 16 If i = 1 Then Rndword = Mid(words, Int(52 * Rnd() 1), 1) Else Rndword = mid(words&num,Int(62*rnd() 1),1) End If line = line&Rndword Next RndStr = line End Function

四、补充

①、顺序生成混淆函数后,需要把函数随机打乱穿插在正常代码里面。

②、混淆函数里面最好加上停止脚本命令,这样当任意一个混淆函数丢失后,都会让脚本自动停止。

③、最重要一点在做混淆代码前一定要最好脚本备份,因为混淆后点在加新功能就比较困难了。

正文完

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved