Ⅰ 緩沖區溢出怎麼解決
1重啟後一定不要取消殺毒,讓殺毒軟體在進入XP界面前先殺個毒,
2如果下載不了殺毒軟體就在另外一台機子上下載360修復專家(或者'windows清理助手'或'惡意軟體清理助手'),如果不行再一項一項的殺,不要怕麻煩,除非你想重做系統。
(如果再打不開可以把360.exe改成360.scr 然後運行安裝,安裝好之後,把360的主程序的後綴名也要改成*.scr 這樣在運行 。因為scr和exe的初始化不一樣。。所以改後綴名即可。。然後在360裡面安裝一個專殺工具~!記得,要先斷網哦~)!
3,運行安全360,修復IE ,清理一下,然後到安全模式下殺毒。這問題我也剛才遇到一般就可以解決。
然後給系統減負.
Ⅱ 關於電腦!什麼是「緩沖區溢出」
什麼是緩沖區溢出
單的說就是程序對接受的輸入數據沒有進行有效的檢測導致錯誤,後果可能造成程序崩潰或者執行攻擊者的命令,詳細的資料可以看unsecret.org的漏洞利用欄目 。
緩沖區溢出的概念
緩沖區溢出好比是將十磅的糖放進一個只能裝五磅的容器里……
堆棧溢出(又稱緩沖區溢出)攻擊是最常用的黑客技術之一。我們知道,UNIX本身以及其上的許多應用程序都是用C語言編寫的,C語言不檢查緩沖區的邊界。在某些情況下,如果用戶輸入的數據長度超過應用程序給定的緩沖區,就穗高會覆蓋其他數據區。這稱作「堆棧溢出或緩沖溢出」。
一般情況下,覆蓋其他數據區的數據是沒有意義的,最多造成應用程序錯誤。但是,如果輸入的數據是經過「黑客」精心設計的,覆蓋堆棧的數據恰恰是黑客的入侵程序代碼,黑客就獲取了程序的控制權。如果該程序恰好是以root運行的,黑客就獲得了root許可權,然後他就可以編譯黑客程序、留下入侵後門等,實施進一步地攻擊。按照這種原理進行的黑客入侵就叫做「堆棧溢出攻擊」。
為了便於理解,我們不妨打個比方。緩沖區溢出好比是將十磅的糖放進一個只能裝五磅的容器里。一旦該容器放滿了,餘下的部分就溢出在櫃台和地板上,弄得一團糟。由於計算機程序的編寫者寫了一些編碼,但是這些編碼沒有對目的區域或緩沖區——五磅的容器——做適當的檢查,看它們是否夠大,能否完全裝入新的內容——十磅的糖,結果可能造成緩沖區溢出的產生。如果打算被放進新地方的數據不適合,溢得到處都是,該數據也會製造很多麻煩。但是,如果緩沖區僅僅溢出,這只是一個問題。到此時為止,它還沒有破壞性。當糖溢出時,櫃台被蓋住。可以把糖擦掉或用吸塵器吸走,還櫃台本來面貌。與之相對的是,當緩沖區溢出時,過剩的信息覆蓋的是計算機內存中以前的內容。除非這些被覆蓋的內容被保存或能夠恢復,否則就會永遠丟失。
在丟失的信息里有能夠被程序調用的子程序的列表信息,直到緩沖區溢出發生。另外,給那些子程序的信息——參數——也丟失了。這意味著程序不能得到足夠的信息從子程序返回,以完成它的任務。就像一個人步行穿過沙漠。如果他依賴於他的足跡走回頭路,當沙暴來襲抹去了這些痕跡時,他將迷失在沙漠中。這個問題比程序僅僅迷失方向嚴重多了。入侵者用精心編寫的入侵代碼(一種惡意程序)使緩沖區溢出,然後告訴程序依據預設的方法處理緩沖區,並且執行。此時的程序已經完全被入侵者操縱了。
入侵者經常改編現有的應用程序運行不同的程序。例如,一個入侵者能啟動一個新的程序,發送秘密文件(支票本記錄,口令文件,或財產清單)給入侵者的電子郵件。這就好像不僅僅是沙暴吹了腳印,而且後來褲寬者也會踩出新的腳印,將我們的迷路者領向不同的地方,他自己一無所知的地方。
緩沖區溢出的處理
你屋子裡的門和窗戶越少,入侵者進入的方式就越少……
由於緩沖區溢胡族亮出是一個編程問題,所以只能通過修復被破壞的程序的代碼而解決問題。如果你沒有源代碼,從上面「堆棧溢出攻擊」的原理可以看出,要防止此類攻擊,我們可以:
1、開放程序時仔細檢查溢出情況,不允許數據溢出緩沖區。由於編程和編程語言的原因,這非常困難,而且不適合大量已經在使用的程序;
2、使用檢查堆棧溢出的編譯器或者在程序中加入某些記號,以便程序運行時確認禁止黑客有意造成的溢出。問題是無法針對已有程序,對新程序來講,需要修改編譯器;
3、經常檢查你的操作系統和應用程序提供商的站點,一旦發現他們提供的補丁程序,就馬上下載並且應用在系統上,這是最好的方法。但是系統管理員總要比攻擊者慢一步,如果這個有問題的軟體是可選的,甚至是臨時的,把它從你的系統中刪除。舉另外一個例子,你屋子裡的門和窗戶越少,入侵者進入的方式就越少。
Ⅲ 緩沖區溢出的基本原理是什麼
緩沖區溢出的原理:
通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。例如下面程序:
void function(char *str) {
char buffer[16];
strcpy(buffer,str);
}
上面的strcpy()將直接吧str中的內容到buffer中。這樣只要str的長度大於16,就會造成buffer的溢出,使程序運行出錯。存在象strcpy這樣的問題的標准函數還有strcat(),sprintf(),vsprintf(),gets(),scanf()等。
漏洞:
緩沖區溢出攻擊的目的在於擾亂具有某些特權運行的程序的功能,這樣可以使得攻擊者取得程序的控制權,如果該程序具有足夠的許可權,那麼整個主機就被控制了。一般而言,攻擊者攻擊root程序,然後執行類似「exec(sh)」的執行代碼來獲得root許可權的shell。為了達到這個目的,攻擊者必須達到如下的兩個目標:
在程序的地址空間里安排適當的代碼。
通過適當的初始化寄存器和內存,讓程序跳轉到入侵者安排的地址空間執行。
可以根據這兩個目標來對緩沖區溢出攻擊進行分類。
以上內容參考:網路-緩沖區溢出
Ⅳ 如何理解緩沖區溢出攻擊
緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用軟體中廣泛存在。利用緩沖區溢出攻擊,可以導致程序運行失敗、系統當機、重新啟動等後果。更為嚴重的是,可以利用它執行非授權指令,甚至可以取得系統特權,進而進行各種非法操作。由於C語言本身缺乏邊界檢查,同時很多編程人員更注重程序運行時的性能(邊界檢查會降低性能),因此利用C語言等開發工具開發的軟體系統普遍存在著緩沖區溢出漏洞。最早的緩沖區溢出攻擊是著名的Robert Morris的網際網路蠕蟲。1988年,Morris利用fingered程序不限制長度的漏洞使緩沖區溢出,成功地獲得了一個脆弱系統的存取許可權,獲得許可權後Morris的程序會在機器上自動安裝,並且千方百計去感染其他機器。結果造成互聯網上6000餘台伺服器癱瘓,占當時聯網總數的10%。雖然人們認識到了緩沖區溢出的嚴重危害,但由於一些不好的編程習慣,新的緩沖區溢出漏洞仍然層出不窮。
緩沖區溢出的原理
通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。例如下面程序:
void function(char *str) {
char buffer[16];
strcpy(buffer,str);
}
上面的strcpy()將直接把str中的內容到buffer中。這樣只要str的長度大於16,就會造成buffer的溢出,使程序運行出錯。存在象strcpy這樣的問題的標准函數還有strcat(),sprintf(),vsprintf(),gets(),scanf()等。
當然,隨便往緩沖區中填東西造成它溢出一般只會出現「分段錯誤」(Segmentation fault),而不能達到攻擊的目的。最常見的手段是通過製造緩沖區溢出使程序運行一個用戶shell,再通過shell執行其它命令。如果該程序屬於root且有suid許可權的話,攻擊者就獲得了一個有root許可權的shell,可以對系統進行任意操作了。
緩沖區溢出攻擊之所以成為一種常見的安全攻擊手段其原因在於緩沖區溢出漏洞太普遍了,並且易於實現。而且,緩沖區溢出漏洞給予了攻擊者想要的一切:植入並且執行攻擊代碼。被植入的攻擊代碼以一定的許可權運行有緩沖區溢出漏洞的程序,從而得到被攻擊主機的控制權。
緩沖區溢出攻擊有很多種形式,相應的防衛手段也隨著攻擊方法的不同而不同,下面將介紹這兩方面的內容。
Ⅳ 什麼是緩沖區溢出
緩沖區溢出是指當計算機向緩沖區內填充數據位數時超過了緩沖區本身的容量溢出的數據覆蓋在合法數據上,理想的情況是 程序檢查數據長度並不允許輸入超過緩沖區長度的字元,但是絕大多數程序都會假設數據長度總是與所分配的儲存空間想匹配,這就為緩沖區溢出埋下隱患.
操作系統所使用的緩沖區又被稱為堆棧. 在各個操作進程之間,指令會被臨時儲存在堆棧當中,堆棧也會出現緩沖區溢出.
緩沖區溢出有時又稱為堆棧溢出攻擊,是過去的十多年裡,網路安全漏洞常用的一種形式並且易於擴充。相比於其他因素,緩沖區溢出是網路受到攻擊的主要原因。
例如:計算機在內存中存儲了所有的東西,包括程序、數據和圖片。如果計算機要求用戶輸入8位字元密碼卻接收到了200位字元的密碼,多出來的字元可以寫在內存中的其他地方。但事實並不是這樣。這就是個小錯誤。
_______________________________________________________
緩沖區溢出的處理
由於緩沖區溢出是一個編程問題,所以只能通過修復被破壞的程序的代碼而解決問題。如果你沒有源代碼,從上面「堆棧溢出攻擊」的原理可以看出,要防止此握孝類攻擊,我們可以:
1、開放程序時仔細檢查溢出情況,不允許數據溢出緩沖區。由於編程和編程語言的原因,這非常困難,而且不適合大量已經在使用的程序;
2、使用檢查堆棧溢出的編譯器或者在程序中加入某些段森稿記號,以便程序運行時確認禁止黑客有意造成的溢出。問題是無法針對已有程序,對新程序來春臘講,需要修改編譯器;
3、經常檢查你的操作系統和應用程序提供商的站點,一旦發現他們提供的補丁程序,就馬上下載並且應用在系統上,這是最好的方法。但是系統管理員總要比攻擊者慢一步,如果這個有問題的軟體是可選的,甚至是臨時的,把它從你的系統中刪除。舉另外一個例子,你屋子裡的門和窗戶越少,入侵者進入的方式就越少。
Ⅵ 我在運行金山詞霸時出現系統警告-..緩沖區溢出..被緩沖區溢出保護阻擋
分類: 電腦/網路 >> 操作系統/系統故障
問題描述:
我在運行金山詞霸時出現系統警告-..緩沖區溢出..被緩沖區溢出保護阻擋.這是什麼意思啊???什麼叫緩沖區溢出,怎麼產生的啊??
解析:
如果把一加侖的水注入容量為一品脫的容量中,水會四處冒出,這時你就會充分理解溢出的含義。同樣的道理,在計算機內部,如果你向一個容量有限的內存空間里存儲過量數據,這時數據也會溢 出存儲空間。輸入數據通常被存放在一個臨時空間內,這個臨時存放空間被稱為緩沖區,緩沖區的長度事先已經被程序或者操作系統定義好了。
何為緩沖區溢出
緩沖區溢飢羨備出是指當計算機程序向緩沖區內填充的數據位數超過了緩沖區本身的容量。溢出的數據覆蓋在合法數據上。理想情況是,程序檢查數據長度並且不允許輸入超過緩沖區長度的字元串。但是絕大多數程序都會假設數據長度總是與所分配的存儲空間相匹配,這就為緩沖區溢出埋下隱患。操作系統所使用的緩沖區又被稱為堆棧,在各個操作進程之間,指令被臨時存儲在堆棧當中,堆棧也會出現緩沖區溢出。
當一個超長的派搜數據進入到緩沖區時,超出部分就會被寫入其他緩沖區,其他緩沖區存放的可能是數據、下一條指令的指針,或者是其他程爛毀序的輸出內容,這些內容都被覆蓋或者破壞掉。可見一小部分數據或者一套指令的溢出就可能導致一個程序或者操作系統崩潰。
Ⅶ 電腦總報緩沖區溢出怎麼解決
內存容量太小,或虛擬內存設置有問題,而且同時運行太多程序,系統資源耗盡
建議
1
加條內存
2
虛擬內存設置到物理內存的1.5倍,右鍵
我的電腦-》屬性--》高級--》,在性能--設置中設置虛擬內存
3
不要開太多程序
4
盡量優化開機進程,在
開始--》運行
中,輸入msconfig,打開系統配置實用程序,在啟動選項卡中,將非必須進程禁用。
5關閉非必須服務,控制面板-》管理工具-》服務中,將不用的服務關閉,比如錯誤報告,在線系統時間更新,列印服務,系統還原等等
6設置BIOS,優化電腦,這個很多項,最好找書看看
Ⅷ 怎麼解決緩沖區溢出的問題啊``各位大俠請指點!謝了!!求解答
緩沖區溢出是指當計算機程序向緩沖區內填充的數據位數超過了緩沖區本身的容量。溢出的數據覆蓋在合法數據上。理想情況是,程序檢查數據長度並且不允許輸入超過緩沖區長度的字元串。但是絕大多數程序都會假設數據長度總是與所分配的存儲空間相匹配,這就為緩沖區溢出埋下隱患。操作系統所使用的緩沖區又被稱為堆棧,在各個操作進程之間,指令被臨時存儲在堆棧當中,堆棧也會出現緩沖區溢出。
當一個超長的數據進入到緩沖區時,超出部分就會被寫入其他緩沖區,其他緩沖區存放的可能是數據、下一條指令的指針,或者是其他程序的輸出內容,這些內容都被亂裂覆蓋或者破壞掉。可見一小部分數據或者一套指令的溢出就可能導致一個程序或者操作系統崩潰。
緩沖區溢出是由編程錯誤引起的。如果緩沖區被寫滿,而程序沒有去檢查緩沖區邊界,也沒有停止接收數據,這時緩沖區溢出就會發生。緩沖區邊界檢查被認為是不會有收益的管理支出,計算機資源不夠或者內存不足是編程者不編寫緩沖區邊界檢查語句的理由,然而摩嘩正閉爾定律已經使這一理由失去了存在的基礎,但是多數用戶仍然在主要應用中運行十年甚至二十年前的程序代碼。
緩沖區溢出之所以泛濫,是由於開放源代碼程序的本質決定的。一些編程語言對於緩沖區溢出是具有免疫力的,例如Perl能夠自動調節位元組排列的大小,Ada95能夠檢查和阻止緩沖區溢出。但是被廣泛使用的C語言卻沒有建立檢測機制。標准C語言具有許多復制和添加字元串的函數,這使得標准C語言很難進行邊界檢查。C++略微好一些,但是仍然存在緩沖區溢出。一般情況下,覆蓋其他數據區的數據是沒有意義的,最多造成應用程序錯誤,但是,如果輸入的數據是經過「黑客」或者病毒精心設計的,覆蓋緩沖區的數據恰恰是「黑客」或者病毒的入侵程序代碼,一旦多餘位元組被編譯執行清塵,「黑客」或者病毒就有可能為所欲為,獲取系統的控制權。
使用一組或多組附加驅動器存儲數據的副本,這就叫數據冗餘技術。
Ⅸ 系統在此應用程系統在此應用程序中檢測到基於堆棧的緩沖區溢出溢出可能允許惡意用戶獲得此應用程序的控制
有溢出漏洞的話,有可能被病毒提權或者進行高許可權修改,他這個只是個警告。原因如下:這是啟動畫面,文件被損壞,或者修改,也有可能丟失,從正常的機里復制logonui.exe 文件u盤。
解決方法:
1、 用光碟或u盤進入pe把那個文件復制到c:windowssystem32dllcache和c:windowssystem32下面。
2、如果已存在就替換了,重新開機即可。
緩沖區溢出原理
緩沖區是一塊連續的計算機內存區域,可保存相同數據類型的多個實例。緩沖區可以是堆棧(自動變數)、堆(動態內存)和靜態數據區(全局或靜態)。在C/C++語言中,通常使用字元數組和malloc/new之類內存分配函數實現緩沖區。溢出指數據被添加到分配給該緩沖區的內存塊之外。
緩沖區溢出是最常見的程序缺陷。
棧幀結構的引入為高級語言中實現函數或過程調用提供直接的硬體支持,但由於將函數返回地址這樣的重要數據保存在程序員可見的堆棧中,因此也給系統安全帶來隱患。若將函數返回地址修改為指向一段精心安排的惡意代碼,則可達到危害系統安全的目的。
此外,堆棧的正確恢復依賴於壓棧的EBP值的正確性,但EBP域鄰近局部變數,若編程中有意無意地通過局部變數的地址偏移竄改EBP值,則程序的行為將變得非常危險。
由於C/C++語言沒有數組越界檢查機制,當向局部數組緩沖區里寫入的數據超過為其分配的大小時,就會發生緩沖區溢出。攻擊者可利用緩沖區溢出來竄改進程運行時棧,從而改變程序正常流向,輕則導致程序崩潰,重則系統特權被竊取。
若將長度為16位元組的字元串賦給acArrBuf數組,則系統會從acArrBuf[0]開始向高地址填充棧空間,導致覆蓋EBP值和函數返回地址。若攻擊者用一個有意義的地址(否則會出現段錯誤)覆蓋返回地址的內容,函數返回時就會去執行該地址處事先安排好的攻擊代碼。
最常見的手段是通過製造緩沖區溢出使程序運行一個用戶shell,再通過shell執行其它命令。若該程序有root或suid執行許可權,則攻擊者就獲得一個有root許可權的shell,進而可對系統進行任意操作。
除通過使堆棧緩沖區溢出而更改返回地址外,還可改寫局部變數(尤其函數指針)以利用緩沖區溢出缺陷。注意,本文描述的堆棧緩沖區溢出不同於廣義的「堆棧溢出(Stack OverFlow)」,後者除局部數組越界和內存覆蓋外,還可能由於調用層次太多(尤其應注意遞歸函數)或過大的局部變數所導致。
Ⅹ W7系統,打開所有程序都出現:緩沖區溢出。 求救!
你最近是怎麼操作的?將出事前下載的軟體、補丁、驅動全部卸載試試,在看看下面的方法。如果故障依舊,建議先查殺一下木馬,修復一下系統試試(你好好想想最舉爛近的操作,故障不會無緣無故的發生吧,有問題請追問我)。
建議你下載windows清理助手查殺惡意軟體和木馬(請搜索下載,不要用360衛士替代):
1、請你用系統自帶的系統還原,還正檔漏原到你沒有出現這次故障的時候修復(或用還原軟體進行系統還原,如果進不了系統,開機按F8進入安全模式還原系統)。
2、如果故障依舊,使用系統盤修復,打開命令提示符輸蠢蔽入SFC /SCANNOW回車(SFC和/之間有一個空格),插入原裝系統盤修復系統,系統會自動對比修復的。
3、如果故障依舊,在BIOS中設置光碟機為第一啟動設備插入原裝系統安裝盤按R鍵選擇「修復安裝」即可。
4、如果故障依舊,建議重裝操作系統。
使用系統自帶的系統還原的方法:
系統自帶的系統還原:「開始」/「程序」/「附件」/「系統工具」/「系統還原」,點選「恢復我的計算機到一個較早的時間」,按下一步,你會看到日期頁面有深色的日期,那就是還原點,你選擇後,點擊下一步還原(Win7還原系統,在控制面板然後設備和安全子選項然後備份和還原子選項)。