當前位置:首頁 » 編程軟體 » 殺毒軟體為什麼都喜歡編譯

殺毒軟體為什麼都喜歡編譯

發布時間: 2023-06-27 13:48:16

『壹』 易語言編寫的程序為什麼容易被報毒

編譯:直接將代碼轉換為程序,程序運行時要求系統或該軟體運行目錄里有該程序運行時所需要的庫文件!靜態編譯:將代碼編譯為程序,再將軟體運行所需要的壓進程序里,當程序運行時釋放庫文件,再從指定位置讀取調用庫文件,使程序運行! 「靜態編譯」的程序就很類似於捆綁木馬:1.程序運行,2.釋放文件,3.調用文件!幾乎都差不多把!只是最後一步有點差別! 「靜態編譯」的程序裡面含有程序運行所需要的庫文件,運行程序後就像是捆綁了東西的文件,釋放文件愛你,並調用!使殺毒軟體誤以為程序是被捆綁後的的軟體,所以報毒!而現在大多數人都應該用的是靜態編譯,所以就有了網上鬧得沸沸揚揚的「易語言誤報門」了! 「編譯」出來的程序,直接調用庫文件,類似於C++,而靜態編譯則需要先將庫文件釋放出來在加以調用,就類似於「winrar自解壓」,使得殺毒軟體檢測到程序里包含了其他文件,而且程序里也含有將文件釋放出來的命令,觸動殺毒神經,所導致殺毒誤認為是捆綁了木馬的程序,故殺毒軟體認為「靜態編譯」出來的程序是病毒!

『貳』 殺毒軟體的原理是什麼

工作原理是部分殺毒軟體是在內存里劃分一部分空間,將計算機中流過內存的數據與殺毒軟體自身所帶的病毒庫(包含病毒定義)的特徵碼相比較,以判斷是否為病毒;另一部分殺毒軟體在所劃分到的內存空間里,虛擬執行系統或用戶提交的程序,根據其行為或結果作出判斷。 殺毒軟體會生成現有主機操作系統的全新虛擬鏡像,該鏡像具有真實操作系統完全一致的功能。桌面虛擬化技術具有獨立分擋操作系統壓力,通過該技術實現運行過程中垃圾文件為零的目標,同時生成的虛擬環境與主機操作系統完全隔離,保護主機不被病毒感染,減少了系統被破壞的概率。

一個殺毒軟體的構造的復雜程度要遠遠高於木馬或病毒,所以其原理也比較復雜。而且鑒於現在木馬病毒越來越向系統底層發展,殺毒軟體的編譯技術也在不斷向系統底層靠近。例如現在的「主動防禦」技術,就是應用RING0層的編譯技巧。這里我簡單為大家介紹一下基本構成。 一個殺毒軟體一般由掃描器、病毒庫與虛擬機組成,並由主程序將他們結為一體,如圖1。 掃描器是殺毒軟體的核心,用於發現病毒,一個殺毒軟體的殺毒效果好壞就直接取決於它的掃描器編譯技術與演算法是否先進,而且殺毒軟體不同的功能往往對應著不同的掃描器,也就是說,大多數殺毒軟體都是由多個掃描器組成的。而病毒庫存儲的特徵碼形式則取決於掃描器採用哪種掃描技術。它裡面存儲著很多病毒所具有的獨一無二的特徵字元,我們稱之為「特徵碼」。特徵碼總的分來只有兩個,文件特徵碼與內存特徵碼。文件特徵碼存在於一些未執行的文件里,例如EXE文件、RMVB文件、jpg文件甚至是txt文件中都有可能存在文件特徵碼,也都有可能被查殺。而內存特徵碼僅僅存在於內存中已運行的應用程序。而虛擬機則是最近引進的概念,它可以使病毒在一個由殺毒軟體構建的虛擬環境中執行,與現實的CPU、硬碟等完全隔離,從而可以更加深入的檢測文件的安全性。 簡單的說,殺毒軟體的原理就是匹配特徵碼。當掃描得到一個文件時,殺毒軟體會檢測這個文件里是否包含病毒庫里所包含的特徵碼,如果有,則報毒病查殺,如果沒有,縱然這個文件確實是一個病毒,它也會把它當作正常文件來看待。 我覺得騰訊電腦管家就是最好的殺毒軟體了二、基於文件掃描的殺毒技術 基於文件的殺毒技術可以分為「第一代掃描技術」、「第二代掃描技術」與「演算法掃描」這三種方法,對於免殺愛好者來說,要對每一種方法爛熟於心,才能成為高手!但做為一個初學者來說了解一下即可。這里我們就簡單介紹一下其中兩種種方法,詳細的技術原理如果各位得這有興趣的話可以自己研究。

『叄』 殺毒軟體的殺毒原理是什麼

現在有很多各種類型的殺毒軟體,從以前收費的,到現在大部分免費的,但是大部分人不了解其內部殺毒原理。下面對殺毒軟體的工作原理作詳細介紹。

一、殺毒軟體原理基礎

一個殺毒軟體的構造的復雜程度要遠遠高於木馬或病毒,所以其原理也比較復雜。而且鑒於現在木馬病毒越來越向系統底層發展,殺毒軟體的編譯技術也在不斷向系統底層靠近。

例如現在的「主動防禦」技術,就是應用RING0層的編譯技巧。這里簡單介紹一下基本構成。

一個殺毒軟體一般由掃描器、病毒庫與虛擬機組成,並由主程序將其結為一體,如圖1

掃描器是殺毒軟體的核心,用於發現病毒,一個殺毒軟體的殺毒效果好壞就直接取決於它的掃描器編譯技術與演算法是否先進,而且殺毒軟體不同的功能往往對應著不同的掃描器,也就是說,大多數殺毒軟體都是由多個掃描器組成的。

而病毒庫存儲的特徵碼形式則取決於掃描器採用哪種掃描技術。它裡面存儲著很多病毒所具有的獨一無二的特徵字元,稱之為「特徵碼」。特徵碼總的分來只有兩個,文件特徵碼與內存特徵碼。文件特徵碼存在於一些未執行的文件里,例如EXE文件、RMVB文件、jpg文件甚至是txt文件中都有可能存在文件特徵碼,也都有可能被查殺。而內存特徵碼僅僅存在於內存中已運行的應用程序。而虛擬機則是最近引進的概念,它可以使病毒在一個由殺毒軟體構建的虛擬環境中執行,與現實的CPU、硬碟等完全隔離,從而可以更加深入的檢測文件的安全性。

簡單的說,殺毒軟體的原理就是匹配特徵碼。

當掃描得到一個文件時,殺毒軟體會檢測這個文件里是否包含病毒庫里所包含的特徵碼,如果有,則報毒病查殺,如果沒有,縱然這個文件確實是一個病毒,它也會把它當作正常文件來看待。

二、基於文件掃描的殺毒技術

基於文件的殺毒技術可以分為「第一代掃描技術」、「第二代掃描技術」與「演算法掃描」這三種方法,對於免殺愛好者來說,要對每一種方法爛熟於心,才能成為高手!但做為一個初學者來說了解一下即可。

這里介紹一下其中兩種種方法,詳細的技術原理如果各位得這有興趣的話可以自行研究。

1、通配符掃描技術

通配符掃描技術屬於是第一代掃描技術的一個分支,對於「通配符」,可以理解為具有一定意義的符號,例如DOS命令里的*號就是任意長度的任意字元的意思,而且通配符在不同的領域也里可以代表不同的意思。

現在殺毒軟體中簡單的掃描器常常支持通配符,因為鑒於字元串掃描技術的執行速度與特徵碼長度限制等問題,使得其逐漸退出歷史舞台,取而代之的是通配符掃描技術,通配符掃描技術以同樣簡單的原理與技術卻實現了更為強大的功能。

掃描器中的通配符一般用於跳過某些位元組或位元組范圍,以至於現在有些掃描器還支持正則表達式!

下面通過一個例子來講解通配符掃描技術的原理。

例如病毒庫中有這樣一段特徵碼:0400
B801 020E 07BB ??02 %3 33C9 8BD1
419C上面的特徵碼可以解釋為:

1、嘗試匹配04,如果找到則繼續,否則跳出。

2、嘗試上一匹配目標後匹配00,如果找到則繼續,否則跳出。

3、嘗試上一匹配目標後匹配B8,如果找到則繼續,否則跳出。

4、嘗試上一匹配目標後匹配01,如果找到則繼續,否則跳出。

5、嘗試上一匹配目標後匹配02,如果找到則繼續,否則跳出。

6、嘗試上一匹配目標後匹配0E,如果找到則繼續,否則跳出。

7、嘗試上一匹配目標後匹配07,如果找到則繼續,否則跳出。

8、嘗試上一匹配目標後匹配BB,如果找到則繼續,否則跳出。

9、忽略此位元組。

10、嘗試上一匹配目標後匹配02,如果找到則繼續,否則跳出。

11、在接下來的3個位置(位元組)中嘗試匹配33,如果找到則繼續,否則跳出。

12、嘗試上一匹配目標後匹配C9,如果找到則繼續,否則跳出。

13、嘗試上一匹配目標後匹配8B,如果找到則繼續,否則跳出。

14、嘗試上一匹配目標後匹配D1,如果找到則繼續,否則跳出。

15、嘗試上一匹配目標後匹配41,如果找到則繼續,否則跳出。

16、嘗試上一匹配目標後匹配9C,如果找到則繼續,否則跳出。

這種掃描技術通常支持半位元組匹配,這樣可以更精確地匹配特徵碼,一些早期的加密病毒用這種方法都比較容易檢測出來。

其實現在的一些特徵碼仍然在使用類似此種方法的特徵碼表達技術,因此掌握這些知識會對以後的免殺有所幫助,同樣可以使在定位特徵碼時更加了解自己正在做什麼,以及做的是否正確等等,這非常重要。

2、智能掃描

智能掃描屬於第二代掃描技術的一個分支,這種方法是在一種病毒變異工具包出現之後提出的。智能掃描法會忽略檢測文件中象NOP這樣的無意義指令。而對於文本格式的腳本病毒或宏病毒,則可以替換掉多餘的例如空格、換行符或製表符等空白字元,這一切替換動作在掃描緩沖區就會執行,從而大大提高了掃描器的檢測能力。

3、近似精確識別法

近似精確識別法同樣是屬於第二代掃描技術的一個分支,但是相比起來應用的更為廣泛,這種掃描技術包含了兩種方式與若干種方法,在這里不可能一一介紹,下面將主要介紹兩種方法的代表。

方法一:多套特徵碼

該方法採用兩個或更多個字元串集來檢測每個病毒,如果掃描器檢測到其中一個特徵符合,那麼就會警告發現變種,但並不會執行下一步操作(例如清除病毒體或刪除文件)。如果多個特徵碼全部符合,則報警發現病毒,並執行下一步操作。

方法二:效驗和

對於校驗和,也許有些朋友會想到文件校驗和比對的方法,這個方法的思路是將每一個無毒的文件生成一個校驗和,等待下次掃描時在進行簡單的校驗和比對即可,如果校驗和有所變化,在進行進一步的掃描,這樣有利於提升掃描器的效率,但是嚴格地說,這並不算是掃描技術。

效驗和掃描技術利用的最為到位的就是比較出名的KAV(卡巴斯基)了,它的第二代掃描器就採用了密碼效驗和技術,並且沒有使用任何搜索字元串技術。關於效驗和是一個復雜的概念,簡單的說就是通過對病毒中的某一段代碼的計算,從而得出一個值(例如123XY4),與MD5加密有些相似,當然這樣說不完全正確。

但KAV採用的是一種由卡巴斯基發明的一種叫做密碼效驗和的特殊演算法,這種演算法通常會產生兩個值。而且病毒庫的查詢採用了特徵碼分類思想,例如掃描EXE文件時只調用與EXE文件有關的病毒庫,而根據EXE文件的位置不同(例如文件頭、入口點)又分為不同的子庫,這樣有利於提高掃描速度。

三、由此得出的一些經驗

首先應該明白第一個例子介紹的通配符「0400 B801 020E 07BB ??02 %3 33C9 8BD1
419C」代表的肯定不是一個位元組。

也就是說,殺毒軟體廠商定位的特徵一般都是數十位元組,所以定位特徵碼時就要避免定位過於精確,一般保證在10位元組以內就足夠了!因為如果特徵碼定位的過於精確,會為以後的修改操作帶來很大不必要的麻煩。可以簡單的想一下,是修改一個位元組的方法多,還是修改10位元組的方法多?

而由智能掃描也可以得出一個結論,就是不要將殺毒軟體想的太傻,例如屬於智能掃描的一個分支——啟發式掃描,它會將一些異常改動計算到可能性的「權值」里,如果一個文件的可疑改動過多,就會導致報毒,這樣之前所做的一些工作就起到了相反的作用,是典型的畫蛇添足。

所以,修改木馬文件時也要掌握一個度的問題,不要修改的過多,但還要保證自己的木馬免殺時間夠長,這就要明白那些更改會被歸為可疑修改,而那些則不會。

『肆』 為什麼用易語言編輯軟體會報毒啊

1、對於「病毒誤報」,我們認為,易語言編譯生成的EXE在運行時,絕大多數情況下CPU指令運行在支持庫領空(僅少數在EXE領空,這與其它編譯器生成的EXE的行為有很大不同),給殺毒軟體查殺和機器分析造成了較大阻力,而且由於易語言影響力遠不如JAVA/C/C++,很難吸引殺軟廠商重視,從而導致誤報時有發生。如果以上觀點成立,則靜態編譯可以有效解決誤報,因為靜態編譯後所有有效代碼都在EXE內。

2、對於「靜態編譯」,是指在編譯時,把支持庫中被程序使用的有效代碼按實際需要鏈接到EXE中,未被用到的則不鏈接。以後將不存在「即使僅僅使用一條命令也必須多帶一個1M多的支持庫文件」的現象。

3、對於所謂「脫庫」,我們指的是「運行時不再必須依賴支持庫文件」,而不是簡單粗暴的「放棄使用支持庫」。現有支持庫內容豐富功能強大又易學易用,是易語言一大寶貴財富,是易語言核心價值的突出體現,絕對不會輕言放棄。

4、對於所謂「秒脫」,是指目前易語言編譯出的EXE,由於有「易格式體」的存在,在被加殼保護之後,會被某些特定軟體很容易的脫殼,因而不利於軟體自我保護。新版易語言靜態編譯後,將取消「易格式體」,從而不會再有被「秒脫」的現象

熱點內容
官方源碼 發布:2025-02-08 14:09:25 瀏覽:435
python過濾器 發布:2025-02-08 14:05:06 瀏覽:616
火山幣演算法 發布:2025-02-08 14:04:49 瀏覽:668
jffs2解壓 發布:2025-02-08 13:55:15 瀏覽:388
如何向伺服器發送大數據包 發布:2025-02-08 13:55:12 瀏覽:662
伺服器pop地址是什麼 發布:2025-02-08 13:39:21 瀏覽:386
網站訪問計數器 發布:2025-02-08 13:32:07 瀏覽:6
釣魚的腥怎麼配置 發布:2025-02-08 13:22:57 瀏覽:754
php數組的引用 發布:2025-02-08 13:22:54 瀏覽:94
致遠a6伺服器地址在哪裡看 發布:2025-02-08 13:22:06 瀏覽:132