程序員就是這麼皮,逆向Google maps snake遊戲

導語:程序員就是這麼皮,Check Point研究人員用遠程調試方法對對Google Maps應用中的snake遊戲應用進行了逆向破解。

為了慶祝愚人節,Google在Google Maps應用安卓版和IOS版本中加入了snake遊戲。Check Point研究人員對該應用進行了逆向破解……你不知道的是逆向竟然使用的是遠程調試的方法。

本文詳細介紹遠程調試進行逆向的全過程。

首先用Genymotion在虛擬設備中啟動Google maps應用,然後進入snake遊戲。


程序員就是這麼皮,逆向Google maps snake遊戲


程序員就是這麼皮,逆向Google maps snake遊戲


看起來該應用是基於WebView的,因此研究人員打開了chrome開發者攻擊遠程調試,如下圖所示:


程序員就是這麼皮,逆向Google maps snake遊戲


研究人員發現網站中sources tab中只有一個有趣的JS文件v18.js。進一步分析該文件研究人員發現了一些函數。

函數fa()的作用是開始一個面積為20×20的面板:

this.height = this.width = 20;

變量width和height分別表示遊戲板的寬度和長度,因此研究人員在源碼中搜索了width和height然後找到了如下函數F(a,b):


程序員就是這麼皮,逆向Google maps snake遊戲


函數F(a, b)好像是檢查snake的身體的座標是否超過面板的限制。研究人員想要刪除該函數中的條件使該函數返回的結果都是true,這樣遊戲就進入了無敵(無限)模式。

因此研究人員在遠程console中輸入了inspect,然後將F(a,b)函數修改為:


程序員就是這麼皮,逆向Google maps snake遊戲


然後玩遊戲就進入了無敵模式,界面如下圖所示:


程序員就是這麼皮,逆向Google maps snake遊戲


圖1:無敵模式

但是研究人員的目的是對戰贏取積分,因此進入下一步逆向:

通過逆向調用棧,研究人員發現有很多對函數wa(a)的調用。研究人員進一步分析該函數發現該函數的遞歸的,負責請求幀動畫。Wa(a)調用函數xa(a, b)和ya(a)來生成生成組成遊戲的小方塊和麵板。

函數xa(a, b)代碼如下所示:


程序員就是這麼皮,逆向Google maps snake遊戲


其中有2個參數是a和b。a是全部變量Q的一部分,含有表示遊戲面板的數組,還可以看到train(M)火車,人和路標(K)。該函數還負責計算玩家得分並保存在c.i中,與Q.b的值相同。


程序員就是這麼皮,逆向Google maps snake遊戲


圖2:表示遊戲界面的數組

表示的界面如下所示:


程序員就是這麼皮,逆向Google maps snake遊戲


圖3:遊戲頁

xa(a)會調用函數sa(a)(如圖4),函數sa(a)負責當新的小人創建後來生成隨機座標。如果多次調用該函數,就會生成多個小人,如圖5所示。


程序員就是這麼皮,逆向Google maps snake遊戲


圖4: 調用函數sa(a)

程序員就是這麼皮,逆向Google maps snake遊戲


圖5:調用的結果,創建了很多小人

雖然多次調用sa(a),也接到了很多人,但是研究人員發現分數並沒有變。當火車接到乘客後,會調用函數ka(a,b)。因此還需要修改該函數來增加分數,並更新在屏幕上。


程序員就是這麼皮,逆向Google maps snake遊戲


圖6: 更新的函數

火車的每部分的座標都在Q.b.o.b中,其中第一個元素表示火車的第一節車廂。


程序員就是這麼皮,逆向Google maps snake遊戲


圖7: 表示火車車廂的數組

研究人員創建了一個簡單的AI算法,算法邏輯如下:


程序員就是這麼皮,逆向Google maps snake遊戲


圖8:AI邏輯

snake執行如下狀態機:

· 當X=19時,繼續向下直到Y=19;

· 當X=19且Y=19時間,繼續向左直到X=0;

· 進入Z字形狀態機:

a. 向上一次,然後向後,直到X=18;

b. 向下一次,然後向左,直到X=0

c. 返回步驟A.

· 當Y=0時,向後,直到X=19

· 回到步驟1

代碼參見gihub地址:https://github.com/romanzaikin/Google_Maps_Snake_Hack

Demo視頻如下:


程序員就是這麼皮,逆向Google maps snake遊戲


參考視頻:https://research.checkpoint.com/wp-content/uploads/2019/04/snake3.mp4


分享到:


相關文章: