溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在沒有源代碼的情況下如何對Linux二進(jìn)制代碼進(jìn)行模糊測試

發(fā)布時間:2022-03-29 14:34:27 來源:億速云 閱讀:290 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“在沒有源代碼的情況下如何對Linux二進(jìn)制代碼進(jìn)行模糊測試”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“在沒有源代碼的情況下如何對Linux二進(jìn)制代碼進(jìn)行模糊測試”這篇文章吧。

AFL配合DynamoRIO,沒錯,就是drAFL。在drAFL的幫助下,我們就可以在沒有源代碼的情況下對LInux二進(jìn)制代碼進(jìn)行模糊測試了。

在沒有源代碼的情況下如何對Linux二進(jìn)制代碼進(jìn)行模糊測試

drAFL

原始版本的AFL支持使用QEMU模式來對待測目標(biāo)進(jìn)行黑盒測試,因此在使用drAFL之前,作者強烈建議大家先嘗試使用一下原始版本的AFL,如果達(dá)不到各位的目標(biāo),再來使用drAFL。

工具使用

首先,你需要定義DRRUM_PATH值來指向drrun啟動工具,并設(shè)置LIBCOV_PATH來指向libbinafl.so代碼覆蓋庫。除此之外,你還需要設(shè)置AFL的fork服務(wù)器(AFL_NO_FORKSRV=1),或者設(shè)置“AFL_SKIP_BIN_CHECK=1”。具體請參考代碼構(gòu)建部分的第五步。

注意:請注意,針對64位代碼庫,你需要使用64位的DynamoRIO,如果使用的是32位的代碼庫,你就需要使用32位的DynamoRIO了,否則工具將無法正常運行。你可以使用下列命令來確保項目運行在DynamoRIO下:

drrun -- <path/to/your/app/> <app_args>

代碼構(gòu)建

第一步:將drAFL代碼庫克隆到本地。

git clone https://github.com/mxmssh/drAFL.git /home/max/drAFLcd/home/max/drAFL

第二步:克隆并構(gòu)建DynamoRIO。

git clone https://github.com/DynamoRIO/dynamoriomkdir build_drcd build_dr/cmake../dynamorio/make -jcd ..

如果在DynamoRIO的編譯環(huán)節(jié)遇到問題的話,可以參考這篇【文檔】。

第三步:構(gòu)建代碼覆蓋工具。

mkdir buildcd buildcmake ../bin_cov/ -DDynamoRIO_DIR=../build_dr/cmakemake -jcd ..

第四步:構(gòu)建AFL。

cd afl/makecd ..

第五步:配置環(huán)境變量并執(zhí)行掃描任務(wù)。

cd buildmkdir inmkdir outecho "AAAA" > in/seedexport DRRUN_PATH=/home/max/drAFL/build_dr/bin64/drrunexport LIBCOV_PATH=/home/max/drAFL/build/libbinafl.soexport AFL_NO_FORKSRV=1export AFL_SKIP_BIN_CHECK=1../afl/afl-fuzz-m none -i in -o out -- ./afl_test @@

注意:對于afl_test測試樣例,可能需要大概25-30秒的執(zhí)行時間。

以上是“在沒有源代碼的情況下如何對Linux二進(jìn)制代碼進(jìn)行模糊測試”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI