在今年也剛好有負責金盾決賽的題目,題型是Android逆向分析,需要找出裡面的Flag,雖然難度不難,但也可以學習如何逆向Dex、so相關的執行檔,是個不錯練習的機會,因為金盾賽是只能大專校院學生報名,所以將提供我自己設計的題目給大家知道金盾決賽的題型脈絡。
題目下載連結
https://drive.google.com/file/d/1YVS5wgVacWBUmYssLTGDWKedMEfXB64z/view?usp=sharing
ㄧ、題目介紹
此題是Android平台上的貪食蛇遊戲,遊戲規則和傳統的類似,不過有一些特殊的物品,像是防護盔甲、延遲移動速度的效果,只要獲取10萬的積分,就能獲取Flag完成此題。
二、題目技術說明
此款貪食蛇遊戲有使用到舊版的API,因此只能運行在本版4.0-4.4 SDK (也可透過逆向知道運行版本),另外也有使用一些Anti-Debugger和防止篡改APK的防護,需要繞過這些防護才能動態分析,不過裡面也有使用一些Method reflect、Field reflect來隱匿Flag,如果熟悉這些技術,就能輕易地解出Flag。
三、解答
修改APK完整性驗證,將jz改成jmp,就能完美繞過。
修改分數是否達到10萬分的判斷,將jle改成nop,就能直接獲取Flag。
成功獲取Flag (x^U^1@b)。