[網鼎杯 2020 青龍組]jocker


打開ida查看文件,按f5發現不能反編譯

 

 

找到這塊地址,並且把這里的棧指針修改正確

 

 

然后在按f5

 

 

 

 接着改

 

 然后f5反匯編

 

 進入wrong看一看

 

 

一個簡單的加密

打開omg看一看

 

 有個全局變量unk_4030c0進去看一看

 

 發現就是一堆加密后的數據

還有一個encrypt函數

 

 這里的for循環應該是把程序里加殼的部分給脫殼,所以動態調試

 

 

這一部分就對應着上面的for循環

直接把斷點設在這個jle下面一行指令

 

 

通過ida的順序可以知道,上面這個函數就是encypt函數,進入看看

 

 不難發現這里有個for循環,並且循環了19次,並且進行了異或運算,然后對全局變量中的值進行比較,如下是異或后的結果,所以我們只需要拿這個結果對其進行異或即可

 

 

00403040  0E 00 00 00 0D 00 00 00 09 00 00 00 06 00 00 00  ..............
00403050  13 00 00 00 05 00 00 00 58 00 00 00 56 00 00 00  ......X...V...
00403060  3E 00 00 00 06 00 00 00 0C 00 00 00 3C 00 00 00  >..........<...
00403070  1F 00 00 00 57 00 00 00 14 00 00 00 6B 00 00 00  ...W......k...
00403080  57 00 00 00 59 00 00 00 0D 00 00 00              W...Y.......

運行完后,發現只對了19個進行了加密,所以還有5個flag{d07abccf8a410cd_me?所以繼續運行,進入finally函數,開頭設置了一個字符串,並且調用了隨機函數,

 

 然后接下來會看到這些奇怪的運算,沒搞清楚是干嘛的

 

接着往下看,發現這里是取局部變量字符串的第一個和參數字符串的第一個來比較,如果相同就將al設置為0,不同為1,然后在比較eax和ebp-0xc的值

 

 

 接下來,不會分析了,不過由於每次隨機出來的數字都不一樣,並且最終eax的值只會是0或1,無法跟隨機的值比較,那么這道題得靠猜了。。

flag最后一個是}所以,接下來猜其加密方式是啥,看了網上wp大佬后,發現這只是用了異或,並且是對0x47進行了異或

所以得到的最后5個字符串就是

b37a}

所以答案就是flag{d07abccf8a410cb37a}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM