2018/11/29-NCTF-Some Box
阿新 • • 發佈:2018-11-30
題目連結:https://pan.baidu.com/s/1n1a4VFdCkloDV3OBunbKQQ
提取碼:wqs9
題目是一個推箱子的遊戲,需要將兩個箱子推到終點。
在sub_400EB9中有一個smc,進行異或操作,作用是解鎖地圖map。
開始會有”sp-analysis failed“,修一下棧指標可以進行反編譯。
寫IDApython指令碼進行靜態解密。
address = 0x6020A0 for i in range(192): b = Byte(address+i)^i PatchByte(address+i,b)
並且在sub_400796函式中初始化了推箱人和兩個箱子的座標。
解密後的map與person和box座標如下(08代表牆,00代表通道,14代表終點):
我們來分析一下程式如何實現推箱子游戲的。
輸入的字串可以控制person的移動方向,我們分析一個控制向左移動函式為例。
然後每一次移動後都會跳轉到check函式對box1和box2座標值進行檢測,看是否都等於0x14即推到了終點。
現在我們知道了程式如何實現的推箱子,然後只需要先將box1推進左邊的14,然後把box2推進右邊的14,可以實現這樣的輸入為”WW44W444W45555555450050W0000WWWWW5444WW00050W4W0000W0550544“。