• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            afxmessagebox

            更新時間:2023-03-01 17:46:24 閱讀: 評論:0

            安全類工具制作AutoRun.inf免疫程序

            一、前言

            我曾經(jīng)在《反病毒攻防研究第006篇:利用WinRAR與AutoRun.inf實現(xiàn)自啟動》那篇文章中討論過AutoRun.inf的原理與應對方法,作為對這個問題的收尾,我打算在此討論一下如何利用MFC開發(fā)一個簡單的免疫程序。盡管如今我們應該已經(jīng)不會再受到AutoRun.inf的肆虐,但是這其中包含的很多思想依舊值得探討。需要強調的是,這篇文章的重點在于預防,也就是在還沒有受到AutoRun.inf的威脅時該如何給自己的計算機打預防針。如果計算機中了AutoRun.inf的破壞,可參考反病毒系列第006篇的文章內容。

            二、AutoRun.inf的免疫原理

            我們在網(wǎng)上可以找到很多免疫工具,現(xiàn)在一些修改版的操作系統(tǒng)里面也會提供這樣一個免疫工具。它免疫的原理是建立一個不被刪除的AutoRun.inf文件夾,以防止病毒生成一個運行病毒的AutoRun.inf。其免疫要點是:

            1、防止病毒在驅動器根目錄下生成autorun.inf文件。

            2、防止病毒破壞我們的免疫措施。

            對于第一點,我們可以在驅動器根目錄下做一個autorun.inf文件夾,原理是同一個目錄中文件不能和文件夾重名。對于第二點,我們在剛才建立的autorun.inf文件夾中做一個不可刪除的目錄即可實現(xiàn)。

            Windows下,不能夠以下面這些字樣來命名文件/文件夾,包括:aux、com1、com2、prn、con、nul等,因為這些名字都屬于設備名稱,等價于一個DOS設備。如果我們把文件命名為這些名字,Windows就會誤以為發(fā)生重名。而以這些名字命名的文件夾雖可以訪問,也可以建立文件夾,但卻無法刪除,因為Windows不允許以這種方式刪除設備。在系統(tǒng)看來,這個文件夾就是設備。如果不以設備名稱作為文件名,也可以采用某些方法給文件或者文件起一個包含非法字符的名稱,這樣一來,它們也是不能夠被刪除的,這也是接下來所要討論的方法。而這類名稱,雖然不能夠用正常的手段進行創(chuàng)建與刪除,但是我們是可以通過編程實現(xiàn)的,接下來就對編程方法進行討論。

            三、利用MFC制作免疫程序的界面

            首先需要建立一個基于對話框的MFC程序,然后界面上的默認控件,添加一個Combo Box控件和兩個Button控件

            圖1 程序界面

            將界面中的三個控件的ID分別改為:IDC_COMBO_DRIVER、IDC_IMMUNITY和IDC_CANCEL。然后再給ComboBox控件添加一個類型為“Control”,名稱為“m_ComboDriver”的變量。

            這里有一點需要說明的是,很多初學者發(fā)現(xiàn)程序在運行后,單擊Combo Box控件右邊的下三角,無法打開下拉選項,而用鍵盤的“↓”卻可以進行下拉項的選擇。其實這是因為在界面設計時,需要將Combo Box控件向下拉一定的范圍才可以。單擊右邊的倒三角,就能夠進行調整:

            圖2 調整Combo Box控件顯示范圍

            至此,界面設計完畢,還是非常簡單的,接下來就要添加代碼來實現(xiàn)功能了。

            四、編寫免疫程序的代碼

            程序中的Combo Box控件是用來選擇想要進行免疫的盤符的,所以需要在控件中顯示出所有的盤符供用戶選擇,這里定義一個函數(shù)以實現(xiàn)相應的功能。在CImmunityARDlg.cpp文件中,找到OnInitDialog()函數(shù),在“// TODO: Add extra initialization here”與“return”之間的進行函數(shù)聲明:

            [cpp] view plain copy

            InitComboDriver();

            以表明程序對話框的初始設定,然后在OnInitDialog()函數(shù)的后面添加InitComboDriver()函數(shù):

            [cpp] view plain copy

            void CImmunityARDlg::InitComboDriver()

            {

            char szDriverString[MAXBYTE] = { 0 };

            char *pTmp = NULL;

            //設置編輯框顯示的內容

            SetDlgItemText(IDC_COMBO_DRIVER,_T("Select a drive letter..."));

            //獲取字符串類型的驅動器列表

            GetLogicalDriveStrings(MAXBYTE, szDriverString);

            pTmp = szDriverString;

            while( *pTmp )

            {

            //向CComboBox中添加字符串

            m_ComboDriver.AddString(pTmp);

            //每個盤符占據(jù)4個字節(jié),所以加上4可以切換到下一個盤符

            pTmp += 4;

            }

            }

            對于初學者來說,還有一點需要注意的是,由于這里我們自定義了InitComboDriver()函數(shù),因此一定要把這個函數(shù)的聲明添加到頭文件,也就是CImmunityARDlg.h中,可以在public下添加:

            [cpp] view plain copy

            void InitComboDriver();

            接下來添加“Immunity”按鈕的代碼,雙擊該按鈕就可以來到代碼編輯界面,首先在最上方添加兩個宏定義:

            [cpp] view plain copy

            //創(chuàng)建的目錄名稱

            #define AUTORUN "autorun.inf"

            //創(chuàng)建無法刪除的目錄

            #define IMMUNITY \Immunity...\

            然后對按鍵定義如下代碼:

            [cpp] view plain copy

            void CImmunityARDlg::OnBtnImmunity()

            {

            // TODO: Add your control notification handler code here

            char szPath[MAX_PATH] = { 0 };

            GetDlgItemText(IDC_COMBO_DRIVER, szPath, MAX_PATH);

            //創(chuàng)建autorun.inf文件夾

            strcat(szPath, AUTORUN);

            BOOL bRet = CreateDirectory(szPath,NULL);

            //盤符無法免疫的情況,可能已經(jīng)免疫或盤符不可寫

            if(!bRet)

            {

            //在MFC中推薦使用AfxMessageBox

            AfxMessageBox("Immunity error!");

            return;

            }

            //創(chuàng)建無法刪除的用來進行免疫的文件夾

            strcat(szPath,IMMUNITY);

            bRet = CreateDirectory(szPath, NULL);

            if(!bRet)

            {

            AfxMessageBox("Immunity error!");

            }

            }

            接下來是給Cancel按鈕添加代碼:

            [cpp] view plain copy

            void CImmunityARDlg::OnBtnCancel()

            {

            // TODO: Add your control notification handler code here

            char szPath[MAX_PATH] = { 0 };

            //刪除文件夾Immunity...,其路徑為X:autorun.infImmunity...

            GetDlgItemText(IDC_COMBO_DRIVER, szPath, MAX_PATH);

            strcat(szPath, AUTORUN);

            strcat(szPath, IMMUNITY);

            RemoveDirectory(szPath);

            //清空保存有路徑信息的數(shù)組

            ZeroMemory(szPath,MAX_PATH);

            //刪除文件夾autorun.inf,其路徑為X:autorun.inf

            //注意這里的目錄需要從里向外一層層刪除

            GetDlgItemText(IDC_COMBO_DRIVER, szPath, MAX_PATH);

            strcat(szPath, AUTORUN);

            RemoveDirectory(szPath);

            }

            至此所有代碼編寫完畢,經(jīng)實際測試,可以達到相應的效果,這里不再贅述。

            五、知識補充

            上述程序中用到了ZeroMemory()函數(shù),我以前的程序中為了達到相同的目的,也用過memt()函數(shù),二者的區(qū)別在于:

            1、ZeroMemory()是微軟SDK提供的,memt()是屬于C Run-timeLibrary提供的,因此ZeroMemory()只能用于Windows系統(tǒng),而memt()還可以用于其他系統(tǒng)。

            2、ZeroMemory()是一個宏,只是用于把一段內存的內容置零,內部其實是用memt()實現(xiàn)的,而memt()除了對內存清零操作,還可以將內存置成別的字符。

            3、如果程序是Win32程序而不想連接CRun-time Library,就用ZeroMemory;如果需要跨平臺,就用memt。ZeroMemory相當于memt(buffer,0,length)。

            對于AfxMessageBox和MessageBox的區(qū)別如下:

            1、AfxMessageBox是MFC庫提供的全局函數(shù),提供了多種重載形式,而MessageBox是標準的Windows API函數(shù)。

            2、AfxMessageBox函數(shù)在任何類里邊都可以使用,而MessageBox()函數(shù)只能在CWnd類的繼承類中使用。另外,AfxMessageBox()函數(shù)的參數(shù)沒有MessageBox()函數(shù)的參數(shù)豐富,所以后者較前者靈活。

            3、AfxMessageBox不能控制消息框標題,常用于調試程序時的內部數(shù)據(jù)輸出或警告;MessageBox比較正式,常用在要提交的應用程序版本中,可以控制標題內容而不必采用含義不明的可執(zhí)行文件名為標題。

            本文發(fā)布于:2023-02-28 20:13:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167766398482100.html

            版權聲明:本站內容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內刪除。

            本文word下載地址:afxmessagebox.doc

            本文 PDF 下載地址:afxmessagebox.pdf

            標簽:afxmessagebox
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 丁香亚洲综合五月天婷婷 | 亚洲avav天堂av在线网爱情| 熟女少妇精品一区二区| 精品日韩亚洲av无码| 久久免费网站91色网站| 最新系列国产专区|亚洲国产| 欧美野外伦姧在线观看| 忘忧草在线社区www中国中文| 538porm在线看国产亚洲 | 亚洲国产成人片在线观看 | AV极品无码专区亚洲AV| 久久精品国产亚洲不AV麻豆| 国内熟妇人妻色在线视频| 欧美熟妇乱子伦XX视频| 国产成人亚洲精品无码车a| 大尺度国产一区二区视频| 最新AV中文字幕无码专区| 天天综合网站| 影音先锋啪啪av资源网站| 欧美大胆老熟妇乱子伦视频| 日本一区二区三区东京热| 国产精品成人免费视频网站京东| 国产成人免费手机在线观看视频 | 中文字幕亚洲资源网久久| 中国小帅男男 gay xnxx| 黄色亚洲一区二区三区四区 | 精品国产中文字幕在线看| 人妻中文字幕亚洲精品| 午夜福利精品一区二区三区| 亚洲国产成人无码网站大全| 国产极品粉嫩福利姬萌白酱| 国内精品人妻一区二区三区| 国产91丝袜在线播放动漫| 国产乱色熟女一二三四区| 久久精品国产亚洲AV瑜伽| 亚洲欧美日韩精品久久| 色综合久久综合久鬼色88| 国产国拍精品av在线观看| 中文字幕日韩精品有码| 久久月本道色综合久久| 国产精品中文字幕久久|