這幾天在作Whale CTF的基礎題目,練手試着加強人肉反編譯的能力~~~數組
看到關鍵處以下兩段代碼,嘗試把它們翻譯一下...學習
/***********************************************************/ mov ecx, [rbp+var_24] ;[rbp+var_24]爲index mov edx, 55555556h mov eax, ecx imul edx mov eax, ecx sar eax, 1Fh sub edx, eax mov eax, edx add eax, eax add eax, edx sub ecx, eax mov edx, ecx movsxd rax, edx mov rsi, [rbp+rax*8+var_20] ;[rbp+var_20]爲數組起始地址,每一個元素大小爲8 bytes /************************************************************/ mov ecx, [rbp+var_24] ;[rbp+var_24]爲數組起始地址,每一個元素大小爲1 byte mov edx, 55555556h mov eax, ecx imul edx mov eax, ecx sar eax, 1Fh sub edx, eax mov eax, edx add eax, eax cdqe add rax, rsi movzx eax, byte ptr [rax] movsx edx, al
這種題目,要是以往我就直接F5大法解決了,確實F5很快很便捷,同時Whale CTF視頻教程中用的是符號執行的方法。雖然這兩種方法都能解決,可是我以爲過於粗暴,逆向工程的根本功底之一就是強大的彙編閱讀能力,而此時處於學習階段的咱們,更要注重基本功的培養。因此在初次解決問題的時候,咱們應該儘可能用眼睛和腦子去調試靜態反彙編出來的彙編代碼,在腦子裏將代碼不斷抽象,最終獲得正確的關鍵邏輯。若是腦子不夠用,但又要解決問題,此時咱們再動用IDA F5和符號執行也不遲...翻譯