lua腳本加密與解密、luaR、ssulua、DZSH算法


lua腳本加密與解密。包括:luaR、ssulua、DZSH算法


 

前言:

在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
.....

 

結尾:

文中涉及到加密,解密都是 給一個思路。具體還需要自己多研究。多琢磨。

最終目的,都是是為了促進大家相互學習。不存在任何侵權行為。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM