感謝xctf提供學習平台
crackme有殼,脫殼部分見文章:
檢視字串:
跟蹤來到right,推測為成功時的標誌。
來到這裡,往上翻能看到核心**以及輸入和輸出的指令
輸入的字串放在了[edp-38]這個位置。程式是先迴圈,判斷了字串長度
eax作為計數器,最後與0x2a比較
核心演算法部分,主要是與「this_is_not_flag」異或,之後與402150位置比較,eax再次充當計數器,402150處資料位dword,4位,所以40108d處eax*4。
輸入的字串42位,但是給的異或只有16位,通過and操作解決
402150處資料, 改變顯示方式:
將這部分資料複製出,之後刪除掉前邊的位址,將「000000」替換位「,0x」再加上方括號,就可以直接編寫python指令碼使用。
最後附上整個注釋分析圖(右鍵檢視可放大)和python**
逆向 攻防世界 crackme
查殼,nspack殼,直接用軟體脫殼,ida引導程式。很明顯,就是將402130的資料和輸入的資料進行異或,判斷是否等於402150處的資料。dwrd佔4位元組。這道題主要記錄一下剛學到的,直接在ida使用python指令碼。from ida bytes import get bytes s dat...
逆向 攻防世界 crackme
查殼,nspack殼,直接用軟體脫殼,ida引導程式。很明顯,就是將402130的資料和輸入的資料進行異或,判斷是否等於402150處的資料。dwrd佔4位元組。這道題主要記錄一下剛學到的,直接在ida使用python指令碼。from ida bytes import get bytes s dat...
xctf 攻防世界 key
好久沒有去攻防世界玩了 主要是這段時間太忙了 有很多 雜事 纏身吧 然後沒事看看堆 就。看自閉了 然後這道題其實還是很簡單的 有很多函式 還有指令其實感覺 用od 或者ida 直接靜態 就能查出來什麼意思 就沒有必要 去深究 裡面的演算法 點進去 主要的函式 發現了這個東西 注意這個 memory ...