# [[Rev] be-quick-or-be-dead-1 [200]](https://bamboofox.cs.nctu.edu.tw/courses/6/challenges/119) 1. 存檔案到虛擬機  2. 使用IDA Pro開啟並按F5彙編成C黨  3. 雙擊方法可以打開裡面內容     ▲ 從上得知在獲取 print_flag 之前,我們需要運行 get_key 函數。因此,要獲取密鑰,我們需要運行 calculate_key 函數。 4. GDB是什麼 - [GDB介紹](https://b8807053.pixnet.net/blog/post/336154079-%5B%E8%BD%89%E8%B2%BC%5Dgdb-%E4%BB%8B%E7%B4%B9) > GDB 全稱“GNU symbolic debugger”,從名稱上不難看出,它誕生於GNU 計劃(同時誕生的還有GCC、Emacs 等),是Linux 下常用的程序調試器。發展至今,GDB 已經迭代了諸多個版本,當下的GDB 支持調試多種編程語言編寫的程序,包括C、C++、Go、Objective-C、OpenCL、Ada 等。實際場景中,GDB 更常用來調試C 和C++ 程序。 >> Windows 操作系統中,人們更習慣使用一些已經集成好的開發環境(IDE),如VS、VC、Dev-C++ 等,它們的內部已經嵌套了相應的調試器。 >  ▲ GDB的吉祥物:弓箭魚 > 總的來說,借助GDB 調試器可以實現以下幾個功能: > 1. 程序啟動時,可以按照我們自定義的要求運行程序,例如設置參數和環境變量; > 2. 可使被調試程序在指定代碼處暫停運行,並查看當前程序的運行狀態(例如當前變量的值,函數的執行結果等),即支持斷點調試; > 3. 程序執行過程中,可以改變某個變量的值,還可以改變代碼的執行順序,從而嘗試修改程序中出現的邏輯錯誤。 5. 開始使用gdb  * 設置斷點 -> 設在main(從main開始執行) *  * 開始執行 -> 會先跑到main的一開始 *   * 如上所述,要獲取print_flag,我們需要先運行get_key函數。在get_key執行之後,我們調用函數print_flag * 使用命令```call (int)get_key()```或```call get_key()```來調用key函數。 *  * 使用命令```call (int)print_flag()```成功取得flag。  6. 此題flag需要刪除後面的值  * flag: picoCTF{why_bother_doing_unnecessary_computation}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up