| 
版主 
 
 精华0积分68T豆805 听众1热心值0 违规0  
 | 购买资源前注意看清简介和图片,资源失效请点下面【网盘失效反馈】,资源问题点页底右下角【举报】
 
| 前言:
 
 在GG修改器,除了修改数据,精华就应该算是运行lua脚本了。
 
 但是通常的lua脚本的编写者,都会把自己的脚本进行加密。
 
 加密这种事情,交给软件就可以了,最没有成就感,还是解密让人会有阵阵快感。
 
 这篇文章就简单来记录一下,自己遇到 lua脚本DZSH加密算法的解密过程。
 
 推荐GG修改器与lua脚本学习地方:B站,自己搜索视频学习。
 
 一、lua脚本加密
 通常lua脚本,都会有3种加密方式,luaR、ssulua、DZSH算法加密。
 
 加密过程,基本都是软件加密,这里就不多说了。自己百度,下载工具加密即可。
 
 二、lua脚本解密
 我通常碰到的lua加密脚本基本都是:luaR、ssulua、DZSH算法加密。其中:
 
 luaR 解密:网上有很多,用java 即可就行解密。这里不多做陈述。百度即可解决。有时间后续会进行详细补充。
 ssulua解密:ssulua加密也是相当简单。网上有很多解密的APP,下载,即可搞定。难度也不高。
 DZSH算法解密:这里主要说一下DZSH算法加密的lua文件,因为这种解密方法,在网上并不容易找到。还需要自己多研究。
 三、lua脚本DZSH算法的认识
 要进行 lua脚本DZSH算法的解密,那就得先了解,DZSH 加密过的lua脚本长什么样?找到标识码,这样才能对症下药。
 
 如果你打开,lua脚本文件,长以下这样,那基本就是 被 DZSH 加密过。我就不上图了,直接贴代码。
 
 
 复制代码function Decryption(jian,Text)
  return (Text:gsub('..', function (jian)
    return string.char((tonumber(jian,16))%256)
  end))
end
--  Decryption()函数中 667开头我做了省略,大概有上万个。特别长。
local jian = Decryption('DZSH','667...............................n')
local dzsh= load(jian)
load(dzsh)
 这里有个番外,我简单说一下。避免大家踩坑。
 
 网上,大多数教程,都是让改,最后的两个 dzsh ,改成大写。然后把最后一行的 load,改成 print 来运行脚本。就能解密。
 
 反正我试了,是不行,因为 DZSH算法 它会加密很多次。一次的估计很少。
 
 四、解密开始(双端):
 lua脚本 DZSH算法 的解密。思路其实很简单,在手机,电脑都可进行。这篇文章都会简单进行说明。
 
 1、手机端
 手机端解密脚本,需要 MT管理器。这个就比较坑。听说会员很贵。或许有人能用的上。附上:每款MT管理器下载地址
 
 别人给我推荐了 另一款 安卓逆向神器NP管理器。我用了其实也并不好用。停卡的。
 
 MT管理器破解-步骤开始:
 第一步:用MT管理器,先在要操作的脚本的目录新建一个文件,有没有后缀不重要。先放着。
 第二步:打开加密的脚本。复制 Decryption函数的绿色部分。这一堆绿色代码,就是DZSH加密的核心部分,其他的都是混淆视听的。如下:
 绿色标注部分:local jian = Decryption('DZSH','667...............................n')
 第三步:用MT管理器复制的绿色部分特大,大概有几万个字节。复制不上,记得打开自动换行。
 第四步:用MT管理器,打开 第一步 新建的文件,打开方式 十六进制。
 第五步:直接粘贴进去。粘贴方式 粘贴从 十六进制。粘贴进去,你就会发现右边,就已经有转换后的代码了。如果加密一次的脚本,就已经能看见源码了。点击保存。
 第六步:如果第五步之后,打开新建的文件,显示的还是加密代码,说明脚本是被多次加密。继续像第二步一样,复制第五步转换完成的代码中的 Decryption函数的绿色部分。在进行第四步,第五步。
 第七步:这个时候你以为 Decryption函数的绿色部分核心代码一样,其实是不一样的。继续执行四五次,源码就出来了。
 2、电脑端
 理解了手机端方法,基本就知道,原理和大概思路就是 HEX和字符串互相转换,因此在电脑上操作,找个在线工具即可。(这里随便贴一个。失效了自己去百度)HEX和字符串互相转换在线工具
 
 这里就不贴图了。只是简单模拟演示一下。
 
 步骤:
 第一步:复制 Decryption函数的绿色部分。DZSH加密的核心代码。
 把DZSH加密的核心代码,复制到 模拟 HEX 在线工具内转换,展示如下:
 
 
 输出复制代码6674A683D322043683D312043613D342043643D382043623D31362050533D32363231343420413D3332206D723D323632......n
 复制代码function Decryption(jian,Text)
  return (Text:gsub('..', function (jian)
    return string.char((tonumber(jian,16))%256)
  end))
end
--  Decryption()函数中,每次解密转码后,核心代码是不一样的。这次是 'F6E20.....n'
local jian = Decryption('DZSH','F6E20.....n')
local dzsh= load(jian)
load(dzsh)
 如果输出的不是源码,就继续 复制 Decryption函数的绿色部分。进行转化。(每次解密后的核心代码是不一样)如果不是源码。就一直循环执行。
 把DZSH加密的核心代码,复制到 模拟 HEX 在线工具内转换,展示如下:
 
 
 输出复制代码F6E202043643D382043623D31362050533D32363231343420413D3332206D723D323632......n
 复制代码--  执行 4 5 次后,源码基本就出来了。不出来就继续循环执行
function Main()
  menu1 = gg.choice({
  "1.功能一",
  "2.功能二",
  "3.功能三",
  "4.功能四",
  "5.功能五",
  "退出"
  }, nil, "不言谢独家制作")
  if menu1 == 1 then byx1() end
  if menu1 == 2 then byx2() end
  if menu1 == 3 then byx3() end
  if menu1 == 4 then byx4() end
  if menu1 == 5 then byx5() end
  if menu1 == 6 then Exit() end
  XGCK = -1
end
function byx1()
  gg.clearResults()
  gg.setRanges(32)
  gg.searchNumber("特征码", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
  gg.searchNumber("改善", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
  gg.getResults(100)
  gg.editAll("修改的数值", gg.TYPE_DWORD)
  gg.toast("完成后的提示")
  gg.clearResults()
end
.....
 
 结尾:
 
 文中涉及到加密,解密都是 给一个思路。具体还需要自己多研究。多琢磨。
 
 最终目的,都是是为了促进大家相互学习。不存在任何侵权行为。
 
 
 | 
 |