逆向工程:level1 破解指南
信息標(biāo)志:SYC{ppxdtedZrekKSpAMeqzNoewKQjEFTOMaFNCQiLeMFGg}
必要工具:
- IDA 7.5 linux 破解版(由ericyudatou提供)
- Pwntools
- pycharm 和 python3
- 調(diào)試環(huán)境:Linux Kali 5.10.0-kali9-amd64
反編譯檢測: 程序架構(gòu)信息:
- 目標(biāo)程序?yàn)?4位程序,選擇使用IDA x64反編譯該程序,并且跟隨來到level1()函數(shù)入口,F(xiàn)5轉(zhuǎn)換為偽代碼,并對變量進(jìn)行重命名,便于分析。
主要代碼分析:
- __readfsqword用于本地反調(diào)試,遠(yuǎn)程調(diào)試即可解決此問題。
- 循環(huán)中的異或操作,可由密文再次異或得到明文,并且位置不受影響,遵循交換律,如:a ^ b = b ^ a。
- 異或后,再與.data中的compare_data內(nèi)存比較,如果相同則提示:You Win。
- 在IDA中,提取compare_data中的內(nèi)容,并且轉(zhuǎn)換為Python List,便于接下來的還原。
逆向腳本: 腳本語言:Python3
data = [13, 5, 137, 179, 22, 20, 106, 116, 250, 233, 94, 98, 164, 177, 41, 11, 173, 140, 43, 37, 99, 117, 200, 254, 65, 73, 173, 147, 39, 30, 167, 166, 202, 211, 71, 105, 224, 234, 17, 1, 167, 128, 31, 53, 80, 83, 229, 253]
運(yùn)行該腳本后,即可得到對應(yīng)的Flag:
SYC{ppxdtedZrekKSpAMeqzNoewKQjEFTOMaFNCQiLeMFGg}
結(jié)果驗(yàn)證: 將得到的Flag的值輸入,最后得到正確結(jié)果。
反思與建議: 當(dāng)ASCII大于127并且需要將其轉(zhuǎn)換為可視字符,需要%128再進(jìn)行轉(zhuǎn)換。異或運(yùn)算,明文秘鑰和密文相互轉(zhuǎn)換,知道其二可求其一。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END