通過(guò)前面idapro調(diào)試或hook,我們可以獲取到xxtea解密key,對(duì)于sign我們可以直接打開(kāi)原文件:
????????
可以看到sign值:byds。因此,我們可以嘗試使用xxtea解密工具(通過(guò)在GitHub上獲取源代碼并編譯)進(jìn)行解密
????????
以index.luac為例,我們看index.luac解密前后變化:
??????? 我們看到經(jīng)過(guò)xxtea解密后的lua腳本仍然不是明文!我們之前根據(jù)cocos2d框架源碼及大神apk反編結(jié)果確定就是用的xxtea加密,而且app的lua腳本也有簽名值,這也印證了就是xxtea加密方式,但是我們解密出來(lái)的結(jié)果仍然不是明文,這說(shuō)明我們解密可能不完全,到底是不是還得再回到idapro一探究竟。
??????? 用idapro打開(kāi)libgame.so,在export窗口中搜索byds,找到byds_d函數(shù),雙擊進(jìn)去:
????????
直接F5會(huì)顯示反編代碼:
????????
這沒(méi)有什么特別的,和我們框架源碼中的代碼是等效的。如果是解密未完成的話,應(yīng)該會(huì)再調(diào)用此函數(shù)的上一級(jí)繼續(xù)解密過(guò)程,我們jump xrefs跟蹤一下此函數(shù)調(diào)用:
????????
出來(lái)兩個(gè),其中一個(gè)是got表,肯定不是,我們雙擊第一個(gè):
????????
只是一個(gè)包裝函數(shù),我們繼續(xù)跟蹤:
????????
雙擊進(jìn)去:
????????
我們看到這個(gè)函數(shù)名稱和源碼中調(diào)用xxtea_decrypt是一樣的,我們一開(kāi)始也將這個(gè)函數(shù)列入突破口了?,F(xiàn)在可以很清晰的看到腳本經(jīng)過(guò)byds_d解密之后,又進(jìn)行了一次uncompress解壓,到現(xiàn)在應(yīng)該基本清晰了,lua腳本應(yīng)該是經(jīng)過(guò)壓縮又進(jìn)行加密,所以要想還原,應(yīng)該是先xxtea解密,再解壓縮。在GitHub上可以找到一個(gè)解壓zlib的腳本,可用于對(duì)解密后的文本再進(jìn)行解壓
? ? ? ??
然后再看index.lua:
????????
可以看到現(xiàn)在已經(jīng)變成明文了。
以上就是idaPro如何分析app解密lua腳本的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)