• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[教程心得] [按键精灵]代码混淆——生成一堆“无用”的函数代码 [复制链接]

1#

前言

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

举个例子:

原始代码:

Dim str = "abc"TracePrint str

增加“无用”代码后:

//脚本开始。。TracePrint c5ONCyRUbK4DzFil()Function c5ONCyRUbK4DzFil() c5ONCyRUbK4DzFil=d6Ib2yKt6IjlDezZ()End FunctionFunction d6Ib2yKt6IjlDezZ() d6Ib2yKt6IjlDezZ=TKIc8lQgY6br6s5Q()End FunctionFunction TKIc8lQgY6br6s5Q() TKIc8lQgY6br6s5Q=d2QmN6hyPzkrc6dW()End FunctionFunction d2QmN6hyPzkrc6dW() d2QmN6hyPzkrc6dW=HUrtqF9l0ezbS9hW()End FunctionFunction HUrtqF9l0ezbS9hW() HUrtqF9l0ezbS9hW=sgAunJkOSVzdWzMa()End FunctionFunction sgAunJkOSVzdWzMa() sgAunJkOSVzdWzMa=FgJ71yHnZDSBPXR7()End FunctionFunction FgJ71yHnZDSBPXR7() FgJ71yHnZDSBPXR7=Od27Q83eZUqdmkZ4()End FunctionFunction Od27Q83eZUqdmkZ4() Od27Q83eZUqdmkZ4=rzjrz2vJbJ1UIVRP()End FunctionFunction 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 = 10For 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 IfNextFunction 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 = lineEnd Function

四、补充

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

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

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

正文完


扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
发新话题 回复该主题