Reverse: Level1 Cracked by Eswink

逆向工程:level1 破解指南

信息標(biāo)志:SYC{ppxdtedZrekKSpAMeqzNoewKQjEFTOMaFNCQiLeMFGg}

必要工具

  • IDA 7.5 linux 破解版(由ericyudatou提供)
  • Pwntools
  • pycharmpython3
  • 調(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é)果。

Reverse: Level1 Cracked by Eswink

Reverse: Level1 Cracked by Eswink

Reverse: Level1 Cracked by Eswink

反思與建議: 當(dāng)ASCII大于127并且需要將其轉(zhuǎn)換為可視字符,需要%128再進(jìn)行轉(zhuǎn)換。異或運(yùn)算,明文秘鑰和密文相互轉(zhuǎn)換,知道其二可求其一。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享