對(duì)小天才系統(tǒng)程序的簡單逆向分析
前言:
????????受專欄小天才手表逆向研究的啟發(fā),我打開了XTC pojie 的新思路,感謝nu11plex。

正文
?????? 本次逆向分析針對(duì)的是開發(fā)者選項(xiàng)中切換訪問服務(wù)器環(huán)境。


? ? ? ?一、通過adb指令?adb logcat | find "START" 獲取到上圖密碼輸入框的Activity名叫 "com.xtc.i3launcher/.develop.config.view.ConfigActivity"。
? ? ???二、提取包"com.xtc.i3launcher"的apk

????????三、用dex2jar將apk反編譯為jar文件

????????四、用jd-gui打開jar文件

????????五、以Activity名中的關(guān)鍵詞"ConfigActivity"進(jìn)行搜索

????????六、閱讀ConfigActivity.class的反編譯代碼,從中找到了有關(guān)密碼校驗(yàn)的部分代碼:
????????可以注意到,這段代碼調(diào)用了另一個(gè)函數(shù)"int i =?bqg.a(str);"來給變量i賦值,然后校驗(yàn)i的值,如果為零就校驗(yàn)通過
????????七、追蹤到bgp.a()函數(shù)的定義代碼位置
????????我對(duì)上面代碼進(jìn)行了修復(fù)和簡化,得到以下代碼:
????????通過分析,我大概明白了校驗(yàn)密碼的原理

????????原理:軟件取出密碼第七位到最后一位的字串,并轉(zhuǎn)換成長整數(shù)與"System.currentTimeMillis() / 1000L / 60L / 60L"進(jìn)行比較,當(dāng)前一個(gè)數(shù)較大時(shí),進(jìn)入下一步校驗(yàn)。
????????然后,軟件取出密碼前兩位和第七位開始到最后一位的字串,并與一個(gè)固定字串拼接,將所得結(jié)果用a6()函數(shù)進(jìn)行哈希值計(jì)算,最后將得到的哈希值與密碼第三位到第七位的字串進(jìn)行不計(jì)大小寫的判斷,如果相等就判定密碼合法。
????????八、計(jì)算密碼
????????根據(jù)第一步校驗(yàn),設(shè)密碼第七位往后的字串為"999999"
????????然后設(shè)前兩個(gè)字符為"xm"
????????經(jīng)過哈希值計(jì)算,得到第三道第五位為"3cbb3"
????????最后拼接密碼,得到"xm3cbb3999999"
????????嘗試密碼,順利通過。

總結(jié)
????????這次的逆向分析十分順利,本以為XTC會(huì)用網(wǎng)絡(luò)校驗(yàn),沒想到只是本地校驗(yàn)。
????????感謝你看到了這里,如果喜歡請點(diǎn)個(gè)贊,如果有問題歡迎在評(píng)論區(qū)討論