• 沒有找到結果。

四、 系統實作

4.2 Snort Cross-compiling

為了讓原本只能在 Ubuntu PC 下運行的 snort 移植到 Android 系統中執行來幫 助我們監控網路封包是否含有隱私資料的洩漏,我們必須利用 snort 的開源原始碼 進行交叉編譯(cross compiling)[19]來將 snort 編譯成 Android 可以執行的 ARM 版 本。在這一小截中我們會詳細地解釋如何將 snort 原始碼編譯成 Android 可執行的 版本。

為了在 Linux PC 系統環境進行交叉編譯,首先必須先至 Codesourcery 官網下 載 sourcery g++ Lite 此一交叉編譯程式並且設定環境變數使的系統能使用其提供的 功能指令,之後即可開始進行交叉編譯。

首先我們必須先將 snort 程式所需的 libraries 也都交叉編譯為 Android 系統上可 使用的版本,而 snort 需要的 libraries 有 libpcap、libpcre、libdaq、libdnet、zlib、ncurses,

至各個 library 以及 snort 官網下載其原始碼,接下來會一一解釋如何對這些 libraries 作交叉編譯。

I. Libpcap

首先必須在 Ubuntu PC 系統環境安裝 flex 以及 bison 套件

sudo apt-get install flex bison

之後即可對 libpcap 原始碼進行設定編譯參數

CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux

--prefix=/your/target/directory --with-pcap=linux LDFLAGS="-static"

20

其中”—prefix”選項代表著編譯完成後的 library 的存放目錄位置,設定好參 數後即可開始交叉編譯

make & make install II. Libpcre

對其原始碼作編譯參數設定

CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/your/target/directory LDFLAGS="-static"

CXX=arm-none-linux-gnueabi-g++

設定完成後進行交叉編譯

make & make install III.Libdaq

對其原始碼作編譯參數設定

CC=arm-none-linux-gnueabi-gcc ./configure -- prefix=/your/target/directory --with-libpcap-includes=snort’s directory/out/include --with-libpcap-libraries=

snort’s directory /out/lib --host=arm-linux LDFLAGS="-static" --enable-static 設定完成後進行交叉編譯

make & make install IV. Libdnet

對其原始碼作編譯參數設定

CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/your/target/directory --with-libpcap-libraries=snort’s

directory/out/lib/ LDFLAGS=”-static” CXX=arm-none-linux-gnueabi-g++

21

設定完成後進行交叉編譯

make & make install V. Zlib

對其原始碼作編譯參數設定

CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/your/target/directory – static

設定完成後進行交叉編譯

make & make install VI. Ncurses

對其原始碼作編譯參數設定

CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar CXX=arm-none-linux-gnueabi-g++ ./configure --host=arm-linux --target=arm-linux --prefix=/CrossCompile 工具之目錄

/arm-none-linux-gnueabi/libc/usr 設定完成後進行交叉編譯

make & make install

上述的 libraries 交叉編譯完成後使用下列指令對 snort 原始碼進行編譯參數設定 CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar

RANLIB=arm-none-linux-gnueabi-ranlib ./configure --host=arm-linux --prefix=/your/target/directory LDFLAGS="-static"

CXX=arm-none-linux-gnueabi-g++ --with-libpcap-libraries=snort’s directory/out/lib --with-libpcre-libraries= snort’s directory /out/lib

--with-daq-libraries= snort’s directory /out/lib --with-dnet-libraries= snort’s

22

directory /out/lib --with-

mysql-libraries= snort’s directory /out/lib --with-libpcre-includes= snort’s directory /out/include --with-daq-includes= snort’s directory /out/include --with-dnet-includes= snort’s directory /out/include

設定完成後開啟編輯”snort 根目錄/src/Makefile”檔案將

LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS)

\

--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \

$(LDFLAGS) -o $@

改成

INK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS)

\

--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \

$(LDFLAGS) -all-static -o $@

修改完成並儲存之後進行交叉編譯

make & make install

編譯完成之後我們即可得到可在 Android 系統上執行的 snort 執行檔,之 後我們就可在 Android 系統上監控網路封包來記錄 APP 執行期間隱私資料洩漏 的行為。

23

相關文件