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 在線工具內轉換,展示如下:
- 第一步:復制 Decryption函數的綠色部分。DZSH加密的核心代碼。
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 在線工具內轉換,展示如下:
- 如果輸出的不是源碼,就繼續 復制 Decryption函數的綠色部分。進行轉化。(每次解密后的核心代碼是不一樣)如果不是源碼。就一直循環執行。
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 .....
結尾:
文中涉及到加密,解密都是 給一個思路。具體還需要自己多研究。多琢磨。
最終目的,都是是為了促進大家相互學習。不存在任何侵權行為。