一個小玩意的逆向

南小天天發表於2020-11-17

前言:

        “吹氣球,吹個氣球玩球球”......逆了一個小玩意,叫【紙飛機大亂鬥】,需攻破的主要有三個地方:請求body中message加密(req_sign)、ss-sign、返回資料message解密。俗話說:工欲善其事必先利其器,準備好jadx(jeb)、ida pro。

過程:

(一)、請求body中message加密(req_sign)

        message裡面有很多資訊,大部分欄位均可通過hook方式拿到,其中req_sign是通過演算法計算出來的。

        (1)開啟jadx,將apk拖入並查詢關鍵詞:req_sign,定位到具體程式碼位置:

        (2)查詢到之後,應該就容易明白了,主要就是將三個字串拼接在一起然後進行一次MD5,三個字串分別是:當前時間戳、code_id的值、UUID隨機字串。

(二)、ss-sign

        (1)同樣,先查詢字元:ss-sign,定位到實現程式碼處:

        (2)一步一步跟蹤進去,你會發現呼叫了native方法,呼叫的so庫是:libnms.so,用ida開啟此so庫,裡面有具體的實現過程。但是...我的天讓我吐一會,混淆太嚴重,做了控制流平坦化,你需要做的是什麼呢,是去控制流平坦化,我需要做的是什麼呢,是直接上andserver,嘿嘿嘿(三連~)......andserver直接google教程就好了,很簡單。

(三)、返回資料message解密

        (1)當你hook了很多資料,你會發現message解密是通過“AES/ECB/PKCS5Padding”去解密的,都知道,解密需要key,key從何而來,key從黃土高坡來...從message前17位字串來。

        (2)現在來個反向定位,我們先定位“AES/ECB/PKCS5Padding”解密方法,然後查詢方法呼叫位置,一步步向前搜尋,即可找到key計算位置:

後記

        具體程式碼不放了,免得被迫搞成只能VIP可見...思路就是以上思路,成不成就靠大家了...研究可以,不要亂搞...

        我的vx:YY_yhzf

相關文章