FI原理 (1千字)

看雪資料發表於2001-10-22

一般來說在不透過載入的情況下判斷檔案的型別只有兩種
第一是 透過判斷副檔名  這個誰都會 而且透過副檔名也不可能判斷出是什麼東西加殼  所以這一項基本排除
第二就是特徵碼判斷  舉個例子來說 比如一個軟體使用UPX加殼 那麼他的區段名稱必然是UPX0 UPX1 UPX2…………  只要寫一個軟體讀取EXE檔案的區段名稱就可以輕易的判斷出是使用什麼東西加殼  而且現在使用大多數加殼軟體加殼後的檔案都會有自己獨有的區段名稱  比如上面的UPX ASP(ASPACK加殼) PEC(PECompact) .yc(Yode) 等等 就不一一列舉了
但是加殼的人都不是傻子 用這種方法加殼後的檔案只要透過單一點修改區段頭資訊就可以預防被檢測了 所以FI採用的也不是這種方法檢測(有可能個別型別的殼出外)
因此得出的結論就是它要透過加殼後程式固有的一段特徵程式碼來驗證 這段特徵程式碼一定是不會改變的 不信你試試用UPX加殼後  無論你將它的區段改成什麼都無法逃過FI的眼睛…………
或者你用字串替換器查詢脫殼後的FI  你就會發現有很多看不懂得ASCII字元 這些大多是加殼程式的特徵程式碼  你在使用這種加殼程式加殼後都會在程式中找到這段特徵程式碼 ^_^

至於逃過檢測的方法………… 據我知道有三種
一種是透過SMC技術 讓加殼後的程式改變 這是一個有效的方法 因為FI所檢測的特徵碼大多是在殼的第一個入口之前 所以SMC可以改變程式的程式碼 即躲過FI的檢測  如果你使用過冰天雪地以前製作過的SMC破解的ASPACK2.0的話 你就會體會到了  它加殼後的程式即無法使用UnASPACK脫殼 也無法是FI檢測!!  不過會SMC技術的Cracker很少 而且浪費時間 所以不推薦使用
第二種是透過TOPO這個軟體  在加殼後使用它建立一個新的區段 這樣對某些測試工具有效 比如language ………… 在FI下也對有些殼有效!而且這種方法還可以導致在使用W32dasm反彙編的時候產生非法操作!
第二種方法呢就簡單了  呵呵 就是~~~~~~~ 打死FI的作者 呵呵 就沒有升級了  哈哈

相關文章