最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

cocos2d游戲lua解密分析

2023-02-18 18:00 作者:Anicca丶Y  | 我要投稿

很長(zhǎng)一段時(shí)間沒有寫解密分析了,最近遇到的cocos2d解密比較多,于是就選了一個(gè)比較典型的來分析一下。

cocos2d游戲中l(wèi)ua是經(jīng)常需要解密的,最常見的加密手段就是使用xxtea。常規(guī)的xxtea使用128bit作為密鑰進(jìn)行加密,并且在cocos2d中還附加了顯著的標(biāo)記sign作為記號(hào)。加密的文件頭部x個(gè)字節(jié)通常就是sign。解密的關(guān)鍵通常就是找到128bit的key。

其實(shí)一般來說,在ida分析中,sign和key都會(huì)被經(jīng)過各種手段加密混淆。還有的人也會(huì)對(duì)xxtea本身下手進(jìn)行魔改。不過大差不大,基本上不會(huì)出現(xiàn)太麻煩的加密混淆。

本次需要解密的是一款問x手游,lua文件的特征非常明顯,并且是xxtea加密。

將游戲的so拖入ida中分析,在經(jīng)過漫長(zhǎng)的等待后,搜索導(dǎo)出表關(guān)鍵詞xxtea。

導(dǎo)出表搜索xxtea

首先先跟蹤一下xxtea_decrypt這個(gè)函數(shù),看看函數(shù)的交叉引用,

xxtea_decrypt? ?xref-1
xxtea_decrypt ? xref-2
xxtea_decrypt xref-3

經(jīng)過跳轉(zhuǎn)找到xxtea_decrypt_ex這個(gè)函數(shù),顯然這是一個(gè)后期封裝的函數(shù)。

根據(jù)xxtea_decrypt的函數(shù)簽名對(duì)參數(shù)名進(jìn)行修改,

然后向上查看代碼。

xxtea_decrypt xref-4
xxtea_decrypt xref-5

根據(jù)key這個(gè)參數(shù)向上尋找最終定位到,發(fā)現(xiàn)data值來自于tree_data的索引結(jié)果,在向上可以看到,tree_data在函數(shù)開始從全局接受值。所以我們的目標(biāo)已經(jīng)明確,就是要找到tree_data這個(gè)全局變量,在哪里被賦值。

tree_data xref

可以看到交叉引用還是挺多的,不過我們既然是在找xxtea的key那么基本上可以先從xxtea_set_sign_key這個(gè)函數(shù)入手

xxtea_set_sign_key-1
xxtea_set_sign_key xref-1
xxtea_set_sign_key xref-2
xxtea_set_sign_key xref-3

通過多次跳轉(zhuǎn)后找到一個(gè)非??梢傻暮瘮?shù),

可以看到這一塊多次調(diào)用xxtea_set_sign_key,并且參數(shù)都是hex值,經(jīng)驗(yàn)來講這一塊基本上就是sign和key的初始化位置。

而xxtea_set_sign_key這個(gè)函數(shù)就是解密的關(guān)鍵入口,回過來在分析xxtea_set_sign_key函數(shù)。

xxtea_set_sign_key_analys

前面看到的兩個(gè)字符串參數(shù),在函數(shù)開始就被調(diào)用(后期分析后將該處函數(shù)名修改成decode便于理解),大概猜測(cè)是將hex值轉(zhuǎn)為字節(jié)數(shù)組當(dāng)然其中應(yīng)該是有解密過程的(在前期分析時(shí)已經(jīng)通過腳本將所有字符串轉(zhuǎn)為字節(jié)數(shù)組,發(fā)現(xiàn)都是無法理解的字符,并且迭代遍歷所有可能的key,無法解密出文件,說明這些字節(jié)還經(jīng)過加密)。

于是從尋找key,轉(zhuǎn)變?yōu)閷ふ襨ey的解密函數(shù)。

decode-1
decode-2

進(jìn)入decode函數(shù),經(jīng)過一系列分析,中間一塊代碼就是常規(guī)的hex轉(zhuǎn)byte,真正的解密區(qū)域再下面,可以看出key是經(jīng)過des加密的。

于是我用des的密鑰,寫了個(gè)腳本去解析這些字符,發(fā)現(xiàn)解出來仍是亂碼,可見des的密鑰(des_key)也是經(jīng)過加密的。可見開發(fā)者是多么喪心病狂,瘋狂套娃。

于是要先分析makekey這個(gè)函數(shù),因?yàn)閐eskey經(jīng)過分析就是常規(guī)的des子密鑰生成函數(shù),所以makekey就是解密的關(guān)鍵。

makekey-1
makekey-2
makekey-3
makekey-4

函數(shù)里面也沒什么好分析的,從start位置開始就是解密的關(guān)鍵部分,

key_r和key_l是兩個(gè)des的密鑰,生成了兩串dessubkey,然后在最下面對(duì)輸入的key進(jìn)行解密

是典型的des3流程,只是在des3的中間有一個(gè)小插曲,就是函數(shù)傳入的key逐字節(jié)與key_l進(jìn)行xor。結(jié)果通過指針傳出。

于是到此,所有的關(guān)鍵函數(shù)都差不多分析完了。

整個(gè)流程就是

xxtea_set_sign_key 設(shè)置sign和key,

sign和key為des3加密所得,加密密鑰寫死在函數(shù)內(nèi)部。

當(dāng)然再回過來看,xxtea_set_sign_key會(huì)發(fā)現(xiàn)還有第三個(gè)int類型的參數(shù),

如果分析過xxtea源碼的話一看這些數(shù)字就會(huì)知道,基本上都接近delta。

所以根據(jù)經(jīng)驗(yàn)判斷,這個(gè)游戲的開發(fā)者不僅對(duì)key,sign進(jìn)行加密,還對(duì)xxtea本身動(dòng)了手腳,不過手段一般,可能會(huì)難道一些小白。

cocos2d游戲lua解密分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阜新市| 南郑县| 尼玛县| 板桥市| 崇义县| 武山县| 乌审旗| 华容县| 竹北市| 雷山县| 屏东市| 固原市| 都兰县| 壤塘县| 井陉县| 长岛县| 凯里市| 邹平县| 彭泽县| 阿城市| 玛多县| 广汉市| 濉溪县| 建宁县| 耒阳市| 五河县| 晋城| 织金县| 永修县| 呈贡县| 临江市| 江门市| 东阿县| 南开区| 伊通| 丰宁| 仪陇县| 加查县| 兴海县| 巴中市| 巫山县|