逆向工程
以設計方法學為指導,以現代設計理論、方法、技術為基礎,運用各種專業人員的工程設計經驗、知識和創新思維,對已有產品進行解剖、深化和再創造。
逆向工程不僅僅在計算機行業、各行各業都存在逆向工程。
計算機行業逆向工程
計算機行業中的逆向工程有兩種分類:1、硬件逆向;2、軟件逆向;
軟件逆向包括:系統級逆向和代碼級逆向。
軟件逆向工程
軟件逆向工程是通過反匯編和調試等手段,分析計算機程序的二進制可執行代碼從而獲得程序的算法細節和實現原理的技術。
研究對象:沒有公開源代碼的計算機程序,主要是已經編譯過的二進制可執行代碼(包括exe、dll文件)。
軟件逆向的主要應用
- 軟件破解(最早)
- 病毒和惡意程序的分析
- 系統漏洞分析
軟件正向流程
設計文檔-->源代碼-->可執行文件
軟件逆向步驟
1、研究保護方式,去除保護功能
2、反匯編目標軟件,定位功能函數
3、分析匯編代碼
4、修改源代碼或還原高級抽象代碼
常用工具
- Ollydbg
- 一款動態追蹤工具,將IDA與SoftICE結合起來的思想,Ring 3級調試器,成為最為流行的調試解密工具,支持插件擴展功能;
- Windbg
- 在Windows平台下,用戶態和內核態調試工具,是微軟公司免費的調試器,可以用來分析dump數據;
- IDA
- 由比利時Hex-Rayd公司開發的強大的交互式反匯編器,是目前最棒的一個靜態反編譯軟件,為眾多0day世界的成員和ShellCode安全分析人士不可缺少的利器;
- PEiD
- PEiD(PE Identifier)是一款著名的查殼工具,其功能強大,幾乎可以偵測出所有的殼,其數量已超過470 種PE 文檔 的加殼類型和簽名。
- C32Asm
- c32asm 是款非常好用的反匯編程序,具有反匯編模式和十六進制編輯模式,能跟蹤exe文件的斷點,也可直接修改軟件內部代碼。