往googler的路上day2
今天在輔大資工閎安的幫助下,完成了人生第一次的逆向工程 (Reverse engineering)答題,且在完成答題之後,與閎安一起完成了這次HackMD的學習共筆。
本來今天打算學一點點動態規劃跟GIT的,但是因為自己有點懶惰了所以沒學,明天請繼續加油!
以下為此次逆向工程簡述過程
cd /Downlaods
./lab1 //這個指令是for 本次逆向工程main.c的exe(執行檔)
想要使用gdb操作時,需要跟組合語言有關
1.gdb (執行檔名稱)//代表對 (執行檔名稱).exe執行 gdb
進去之後
2.disas flag()// 現在我們反組譯flag之後,可以將機器語言轉成組合語言
此時利用組合語言尋找自己所需地址給breakpoint所用
3.利用breakpoint再 if(password == input) 即組合語言中的cmp執行前,將兩者改成相同數字,破解密碼
r //run the code 直接跑
n //the next code
b *(address) //下中斷點
b (函式) // ex: b main, b flag
disas (函式)// disassemble 程式 即反組譯
附錄:本次逆向工程使用GDB,全名是GNU Debugger,能夠透過設置多個breakpoint
讓程式再執行的時候分非常多段,本次逆向工程即是利用設置breakpoint來更改程式碼中的"input" 來符合 password,最終得到索求答案。