- C++反匯編與逆向分析技術(shù)揭秘(第2版)
- 錢(qián)林松 張延清
- 824字
- 2021-09-27 17:05:07
1.2 安裝GCC
GCC(GNU Compiler Collection,GNU編譯器套件)是由GNU開(kāi)發(fā)的支持C/C++的編譯器。它是以GPL許可證發(fā)行的自由軟件,是一個(gè)跨平臺(tái)的編譯器,現(xiàn)已被大部分操作系統(tǒng)(如Windows、Linux、macOS等)采納為標(biāo)準(zhǔn)編譯器。在軟件逆向工程中,經(jīng)常會(huì)遇見(jiàn)使用GCC編譯的應(yīng)用程序。在Windows上安裝GCC可以選擇安裝Cygwin或者M(jìn)inGW-w64,本節(jié)將介紹MinGW-w64的安裝。
1. 下載安裝MinGW-w64
MinGW-w64的官方地址為http://mingw-w64.org,下載地址為https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/,下載頁(yè)面如圖1-10所示。

圖1-10 MinGW-w64下載
單擊Download進(jìn)行下載,下載完成后運(yùn)行mingw-w64-install.exe,按照?qǐng)D1-11所示選擇安裝設(shè)置。安裝設(shè)置說(shuō)明如下。

圖1-11 MinGW-w64安裝選項(xiàng)
- Version:編譯器版本,選擇最新版8.1.0。
- Architecture:CPU,選擇x86-64。
- Threads:線程API,選擇win32。
- Exception:異常處理庫(kù),選擇sjlj庫(kù),它可以同時(shí)支持32位和64位程序的異常處理。
- Build revision:默認(rèn)項(xiàng)。
設(shè)置安裝路徑,單擊Next直到安裝完成,如圖1-12所示。

圖1-12 MinGW-w64安裝
2. 配置環(huán)境變量
將MinGW-w64的bin目錄設(shè)為環(huán)境變量,鼠標(biāo)右鍵選中桌面“此電腦”→“系統(tǒng)”→“高級(jí)系統(tǒng)設(shè)置”→“環(huán)境變量”,如圖1-13所示。

圖1-13 環(huán)境變量設(shè)置入口
雙擊Path變量,單擊“新建”將bin目錄設(shè)置為環(huán)境變量,最后單擊“確定”保存設(shè)置,如圖1-14所示。

圖1-14 環(huán)境變量設(shè)置
單擊開(kāi)始菜單運(yùn)行cmd,輸入gcc -v查看gcc版本信息是否安裝成功,如圖1-15所示。

圖1-15 查看gcc版本信息
3. 編譯
運(yùn)行cmd,輸入以下命令編譯程序。
cd <源碼目錄> gcc -m32 -O2 -o x86_gcc.exe hello.c
編譯選項(xiàng)說(shuō)明如下。
- -m32表示編譯32位程序,-m64表示編譯64位程序。
- -O2表示編譯Release版,以最快執(zhí)行速度優(yōu)化;默認(rèn)編譯Debug版。
- -o指定可執(zhí)行文件名稱,是現(xiàn)在比較流行的一個(gè)編譯器,越來(lái)越多的軟件選擇使用Clang編譯器編譯。
(1)下載并安裝Clang
Clang的官方下載地址為http://releases.llvm.org/download.html,選擇下載Windows版本,如圖1-16所示。

圖1-16 安裝Clang
運(yùn)行下載LLVM-8.0.1-win64.exe,選擇安裝目錄,一直單擊“下一步”直到安裝完成,如圖1-17所示。

圖1-17 Clang安裝
將Clang安裝路徑的bin目錄設(shè)置到環(huán)境變量,為防止與VS2019的Clang編譯器沖突,可調(diào)整環(huán)境變量順序。運(yùn)行cmd并輸入命令clang -v,顯示版本信息表示安裝成功,如圖1-18所示。

圖1-18 Clang安裝成功
(2)編譯
運(yùn)行cmd,輸入以下命令編譯程序,編譯選項(xiàng)與GCC一致,其中O0表示Debug版,如圖1-19所示。
cd <源碼目錄> clang -m32 -O0 -o x86_clang.exe hello.c

圖1-19 使用Clang編譯程序
- The Modern C++ Challenge
- Mastering RabbitMQ
- Oracle Database In-Memory(架構(gòu)與實(shí)踐)
- Mastering Entity Framework
- MySQL 8 DBA基礎(chǔ)教程
- Quarkus實(shí)踐指南:構(gòu)建新一代的Kubernetes原生Java微服務(wù)
- Easy Web Development with WaveMaker
- Monitoring Elasticsearch
- 用戶體驗(yàn)增長(zhǎng):數(shù)字化·智能化·綠色化
- 從零開(kāi)始學(xué)C#
- 一本書(shū)講透Java線程:原理與實(shí)踐
- GitHub入門(mén)與實(shí)踐
- Laravel Application Development Blueprints
- OpenCV Android Programming By Example
- 軟件工程與UML案例解析(第三版)