<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 2.2、二進制審計 現在你已經深入到原生層,這是你撕扯下所有遮掩后的軟件。今天我們所關注的原生代碼形式是Intel X86下的32位代碼。Intel處理器從上世紀80年代開始在個人計算機市場有著強勁的表現,現在支配著桌面和服務器市場。理解這些指令集可以幫助你以內部視角看到程序每天是如何運行的,也可以在你遇到諸如ARM、MIPS、PowerPC和SPARC等其他指令集時提供一種參考。 這部分內容我們將要逐漸熟悉原生層和開發策略,以理解、分析和解釋本地代碼。在該部分結束時你應該能夠完成一項“逆向編譯”——從匯編分段到高級語言狀態——以及處理過程、派生意義和程序員意圖。 **課程** 學習X86初看起來令人生畏且需要一些專業性的學習才能掌握。我們建議閱讀《深入理解計算機系統》的第三章學習C程序是怎樣編譯成機器指令的。當你有了一些基礎的、這種過程的應用知識,就在手邊隨時備著像弗吉尼亞大學x86匯編指南這樣的參考指南。我們還發現了來自Quinn Liu的系列視頻作為快速介紹。 * 《深入理解計算機系統》第三章: [Machine-Level Representation of Programs](https://picoctf.com/docs/asmhandout.pdf) * [x86 Assembly Guide](http://www.cs.virginia.edu/~evans/cs216/guides/x86.html) * [Introduction to x86 Assembly](https://www.youtube.com/watch?v=qn1_dRjM6F0&list=PLPXsMt57rLthf58PFYE9gOAsuyvs7T5W9) **挑戰工坊** 下面的程序都是“二進制炸彈”。逆向工程這些Linux程序并確定輸入序列就可以“拆除“炸彈。炸彈的每個連接層關注于原生代碼的不同層面。例如,CMU實驗室中的程序(CMU Binary Bomb Lab)中你會看到不同數據結構(鏈表、樹)以及控制流結構(切換、循環)在原生代碼層面怎樣表現的。在逆向這些程序時你可以發現將程序執行流程轉換為C或者其他高級語言的有用之處。 你應該將目標聚焦于解決這兩個實驗室程序的八個段。CMU炸彈程序有一個隱藏段,RPI炸彈程序有一個段包含有內存錯誤,你能找到并解決么? * [CMU Binary Bomb Lab](http://csapp.cs.cmu.edu/public/bomb.tar) * [RPI Binary Bomb Lab](http://www.cs.rpi.edu/academics/courses/spring10/csci4971/rev2/bomb) **工具** 處理原生代碼的兩個至關重要的工具是調試器和反匯編器。我們建議你熟悉下行業標準反匯編工具:IDA Pro。IDA會分割代碼為獨立的塊以對應程序源碼的定義函數。每個函數進一步被分割為修改控制流的指令定義的“基礎塊”。這樣很容易一眼識別循環、條件和其他控制流指令。 調試器允許你與設置了斷點的運行中代碼進行交互和狀態檢查,以及內存檢查和寄存器內容查看。你會發現如果你的輸入沒有產生預期的結果,這些查看功能是很有用的,但是一些程序會使用反調試技術在調試時改變程序行為。對于大多數Linux系統來說GNU調試器(gdb)是標準的調試工具。gdb可以通過你所用Linux版本的軟件包管理器獲得。 * [IDA Pro Demo](https://www.hex-rays.com/products/ida/support/download_demo.shtml) * [gdb](http://www.sourceware.org/gdb/) **資源** 已經有許多好的資源用來學習x86匯編和CTF題目中的技巧。除了以上資源,x86維基手冊和AMD指令集幫助都是更加完整的參考供你參考(我們發現AMD幫助手冊沒有Intel幫助手冊那么嚇人)。 * AMD64程序員幫助手冊: [General-Purpose and System Instructions](http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2008/10/24594_APM_v3.pdf) * [x86 Assembly Wikibook](https://en.wikibooks.org/wiki/X86_Assembly) * [Computer Systems: A Programmer's Perspective](http://csapp.cs.cmu.edu/) (《深入理解計算機系統》) 一些逆向工程工具使用起來和匯編語言自身一樣復雜。下面列出的是常用的命令行工具的命令表單: * [gdb Quick Reference](http://www.refcards.com/docs/peschr/gdb/gdb-refcard-a4.pdf) * [IDA Quick Reference](https://www.hex-rays.com/products/ida/support/freefiles/IDA_Pro_Shortcuts.pdf) * [WinDBG x86 Cheat Sheet](https://trailofbits.github.io/vulnerabilities/references/X86_Win32_Reverse_Engineering_Cheat_Sheet.pdf) 最后,許多CTF挑戰會使用反調試技術和反匯編技術隱藏或混淆目標。上面的炸彈程序就使用了其中的幾種技術,但是你可能想要更全面的參考資料。 * [Linux anti-debugging techniques](http://vxheavens.com/lib/vsc04.html) * [The "Ultimate" Anti-Debugging Reference](http://pferrie.host22.com/papers/antidebug.pdf)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看