您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關cocos2d-LUA逆向中如何解密app資源,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
還是以大神apk為例,通過前面分析app解密lua腳本,我們能夠解密大神apk的lua腳本,現在我們來解密其資源(配置文件和圖片等)。我們以比較重要的配置文件為例,未解密之前:
文件頭部也有簽名值:fuckyou!。看到這,我們首先就想到是不是也是用xxtea加密的,我們用上面的方法,先xxtea解密,再解壓,發現依舊是亂碼,在操作的過程中就出現了錯誤,顯然,要否定我們剛才的猜想。我們繼續按部就班的解密配置文件。
稍微思考一下,文件頭部是:fuckyou!如果想對文件進行解密,那么不可避免的需要處理字符串:fuckyou!,所以,我們應該能在idaPro中搜到fuckyou字符串,然后以fuckyou字符串所在代碼段處的函數分析調試解密即可。驗證一下我們的猜想,打開idaPro,打開string視圖,搜索fuckyou:
居然啥也沒有!猜測應該是做過優化,在某個地方把字符串優化掉了。
線索斷了,但是好奇心還是讓我們繼續,這時候,我們可以瀏覽cocos2d框架源碼,結合網上一些資料,發現cocos2d對文件的處理封裝到了CCFileUtils類中:
函數有些多,不一一貼了,從網上也找到了前輩的經驗:
好了,我們現在回到idaPro,在export窗口,搜索getData:
進這兩個函數,反編譯看下,長得不大像,略過,但是先記下,在動態調式時,我們可以在此下個斷。
我們再來看getFileData:
由于app運行在Android平臺上,我們看Android平臺的CCFileUtilsAndroid::getFileData:
我們接著跟蹤:
代碼很長,就不全貼了,貼此函數關鍵的部分:
看到上圖,感覺就是它了,呵呵!但是我們還是需要繼續分析驗證。函數處理文件頭部sign時,并不是直接與字符比較而是與其ASCII值一個一個比較,所以我們在字符串窗口是搜不到fuckyou!的。接著往下看,當函數判斷完是符合加密格式的文本時,會移除前8個字節(fuckyou!),然后與異或表中的值進行異或操作,每256個字節循環操作。
我們可以看下byte_A1C55F:
至此,我們已基本可以確定文件解密函數及過程了,我們可以動態調試,再確認一下,當app調用完這個函數后,內存中應該是明文內容了。當我們調試時,分別在getData、CCFileUtilsAndroid:doGetFileData函數開始和結束時下斷,GetData函數下斷:
doGetFileData函數下斷:
雖然兩個函數都下斷了,但是只在doGetFileData斷點出暫停,說明解密過程中是走的doGetFileData函數,符合我們的預期,看下寄存器及內存:
我們看到內容在doGetFileData之前是密文,函數返回之前已經解密成明文了,這說明我們之前的分析是對的。
好了,現在,我們可以將異或表byte_A1C55F拷貝出來,然后模仿app的解密過程(可從GitHub上找個xor解碼腳本,稍作修改即可)寫一個小工具,對大神.apk的所有資源進行解密了:
看完上述內容,你們對cocos2d-LUA逆向中如何解密app資源有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。