《黑客大曝光》在攻擊Unix章節,有提到linux日誌清理工具Logclean-ng,給的評價也挺高的。正好手頭上有須要,就下載下來玩一下。html
開始覺得按照說明編譯就能夠了,後來發現其實有個小坑的。在這裏記錄一下,可能有些朋友會用獲得。linux
Logclean-ng的源碼下載地址:https://packetstormsecurity.com/files/46742/logclean-ng_1.0.tar.gz.html。Logclean-ng工具創建在一個用來簡化編寫日誌清理程序的函數庫上,這個函數庫是Liblogclean。在後續編譯Logclean-ng以前,要先編譯Liblogclean這個庫。ubuntu
我在kali虛擬機(32位和64位的須要修改的地方略有不一樣)上演示一下。函數
32位系統演示工具
首先進入Liblogclean文件夾,編譯Liblogclean這個庫,來看下可能遇到的錯誤:測試
從圖中能夠看到(注意紅框裏的內容),是某個結構體中的成員變量有問題。先看下logs_wtmp.c中出錯的代碼,發現引用了頭文件utmp.h。咱們來看下linux源碼中對應頭文件該結構體的定義。spa
utmp.h文件在/usr/include下面,打開發現以下圖所示:.net
接下來找到bits/utmp.h(在/usr/include/i386-linux-gnu/bits文件夾下面),查看結構體utmp的定義以下所示:日誌
注意紅色下劃線的部分,結構體這個變量的定義與Liblogclean庫中的定義有差異,修改一下便可。這是由於版本更新的緣由。後續在64位系統下出現編譯問題也有部分是由於版本不兼容致使的。orm
將logs_wtmp.c源代碼中的save.__unused修改成save.__glibc_reserved以後,再次編譯Liblogclean,便可編譯成功。
接下來返回到logclean-ng_1.0文件夾下面,編譯logclean-ng_1.0。以下圖所示,已經編譯成功:
運行一下試試:
32位下已經OK了,繼續編譯64位下的logclean-ng吧。
64位系統演示
先按照32位系統下編譯Liblogclean這個庫的方法,來看下可能遇到的錯誤:
按照提示,咱們修改一下Makefile文件中的編譯參數,在CFLAGS中加入-fPIC。通過個人測試,凡是涉及到編譯的地方,都須要在Makefile中的CFLAGS加入-fPIC這個編譯選項。涉及到ncrypt和libmix中的Makefile文件。進入libmix文件夾,首先執行make clean,而後執行make,能夠發現已經編譯成功,在目錄下生成了所須要的動態連接庫。而後返回上級目錄,編譯Liblogclean。記得參照32位編譯所描述的將logs_wtmp.c源代碼中的save.__unused修改成save.__glibc_reserved以後再進行編譯。發現出現以下錯誤:
爲了解決這個問題,須要進行幾步操做以後再進行編譯。爲什麼這樣作在這裏有說明。
編譯以前進行以下操做:
cd /usr/lib/gcc/x86_64-linux-gnu/4.9cp crtbeginT.o crtbeginT.orig.ocp crtbeginS.o crtbeginT.o
編譯成功後再修改回來:
cd /usr/lib/gcc/x86_64-linux-gnu/4.9cp crtbeginT.orig.o crtbeginT.orm crtbeginT.orig.o
最後一步和以前32位編譯的相似。好了,到此就編譯成功了。以下圖所示:
繼續運行一下:
32位和64位編譯該工具的步驟就到此爲止了。至於logclean-ng如何使用,能夠看help說明,也能夠參考《黑客大曝光》中的說明。