re學習筆記(62)2020網鼎杯-白虎組-Re-惡龍

題目:惡龍
題目描述:這是一個與史萊姆和惡龍戰鬥的故事,請戰勝三頭惡龍,取得flag。張三長老說,試圖patch這個程序的人會得到錯誤的flag…

IDA64載入進入main函數
在這裏插入圖片描述
main函數會循環執行dround函數,次數是3次,次數bossexist在main函數之前的init裏被初始化。outflag函數輸出flag

init函數
在這裏插入圖片描述
同時被初始化的還有unief=100 coin(金錢) =5

此時outflag的一個參數flag4已經知道了。。

dround函數裏面有三個選項,數字1打小怪,數字2打boss,數字3商店買東西。
在這裏插入圖片描述
小怪是隨機打過的,商店store函數裏可用兩個金幣換1戰鬥力

boss函數裏面有判斷,分別當bossexist == 3、bossexist == 2、bossexist == 1的時候並且戰鬥力eff高於boss的時候執行三個加密函數。而只有三次選擇事件的機會,也就是說這三次事件都是2 打BOSS

看了一下加密函數的參數都是固定的,,題目描述說不可以patch會得到錯誤flag,大概是因爲按順序執行加密函數吧。

兩個思路:一個是斷點下斷,然後改跳轉標誌位達到預期走向。

另一個就是修改戰鬥力eff了。

真不知道題目描述中張三長老說的話是提示還是啥,,,

戰鬥力eff是全局變量,隨便下個斷點,斷下來後修改全局變量,進行byte patch

修改成ffffff7f,也就是int的最大值(小端序存放
在這裏插入圖片描述
在這裏插入圖片描述
然後連續三天都打boss,,flag就出來了。。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章