現在我們已經知道輸入 flag 開頭的指令會進入隱藏的 flag checker,而驗證的部分是 verify 在執行,因此我們開始對 verify 進行分析
通常在驗證的時候,會先執行長度的驗證,這裡的 a3 != 64
推估是在檢查長度是否為 64,因此 a3 = flag 長度
從這段程式碼中,可看出 v3 = a2,只是進行了比較冗長的複製流程企圖混淆視聽
v4 = v3
結合上下文來看,函式的參數__int64 a1
, __int128 *a2
, __int64 a3
可推測分別代表
a1
:一個指標或 context 之類的東西,未知目前先不深入探討a2
:指向 128-bit 的陣列, 為 flaga3
:flag 長度將這些變數重新命名,方便我們後續分析