PE病毒实验报告
- 格式:rtf
- 大小:1.14 MB
- 文档页数:5
编写PE文件分析工具一、实验目的:编写一个工具,自动分析PE文件,要能判断是否是PE文件,能分析PE文件头文件个数据项的分析二、实验原理:可以通过一个叫做IMAGE_DOS_HEADER的结构来识别一个合法的DOS 头。
这个结构的头两个字节一定是“MZ”(#define IMAGE_DOS_SIGNATURE "MZ")。
你通过该结构的一个叫做“e_lfanew”(offset 60,32bits)的成员来找到PE开始的标志它。
通过DOS头,可以找到一个叫做IMAGE_FILE_HEADER的结构。
文件头下面就是可选头,这是一个叫做IMAGE_OPTIONAL_HEADER的结构。
它包含很多关于PE文件定位的信息。
三、主要功能实现:1、加载PE文件BOOL OpenFileDlg(HWND hwnd){OPENFILENAME ofn;memset(szFilePath,0,MAX_PATH);memset(&ofn, 0, sizeof(ofn));ofn.lStructSize =sizeof(ofn);ofn.hwndOwner =hwnd;ofn.hInstance =GetModuleHandle(NULL);ofn.nMaxFile =MAX_PATH;ofn.lpstrInitialDir =".";ofn.lpstrFile =szFilePath;ofn.lpstrTitle ="Open ...[PEInfo_example] by A.Yong(信息安全)";ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;ofn.lpstrFilter ="*.*\0*.*\0";if(!GetOpenFileName(&ofn))return FALSE;return TRUE;}如果加载的文件不是PE文件,提示,在主窗口的处理函数中加入如下处理过程if(!IsPEFile(stMapFile.ImageBase)){MessageBox(hWnd,"Invalid PEFormat file!:(","PEInfo_Example",MB_OK);UnLoadFile(&stMapFile);EnableEditCtrl(hWnd,FALSE);return FALSE;}这样,在加载的文件不是PE文件是,就会弹出消息窗口void UnLoadFile(PMAP_FILE_STRUCT pstMapFile){if(pstMapFile->ImageBase)UnmapViewOfFile(pstMapFile->ImageBase);if(pstMapFile->hMapping)CloseHandle(pstMapFile->hMapping);if(pstMapFile->hFile)CloseHandle(pstMapFile->hFile);}BOOL LoadFileR(LPTSTR lpFilename,PMAP_FILE_STRUCT pstMapFile){HANDLE hFile;HANDLE hMapping;LPVOID ImageBase;memset(pstMapFile,0,sizeof(MAP_FILE_STRUCT));hFile=CreateFile(lpFilename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXIS TING,FILE_ATTRIBUTE_NORMAL,0);if (!hFile)return FALSE;hMapping=CreateFileMapping(hFile,NULL,PAGE_READONL Y,0,0,NULL);if(!hMapping){CloseHandle(hFile);return FALSE;}ImageBase=MapViewOfFile(hMapping,FILE_MAP_READ,0,0,0);if(!ImageBase){CloseHandle(hMapping);CloseHandle(hFile);return FALSE;}pstMapFile->hFile=hFile;pstMapFile->hMapping=hMapping;pstMapFile->ImageBase=ImageBase;return TRUE;}得到ODS头文件结构IMAGE_FILE_HEADER GetFileHeader(LPVOID ImageBase){PIMAGE_DOS_HEADER pDH=NULL;PIMAGE_NT_HEADERS pNtH=NULL;PIMAGE_FILE_HEADER pFH=NULL;if(!IsPEFile(ImageBase))return NULL;pDH=(PIMAGE_DOS_HEADER)ImageBase;pNtH=(PIMAGE_NT_HEADERS)((DWORD)pDH+pDH->e_lfanew);pFH=&pNtH->FileHeader;return pFH;}得到NT映像头结构PIMAGE_NT_HEADERS GetNtHeaders(LPVOID ImageBase){if(!IsPEFile(ImageBase))return NULL;PIMAGE_NT_HEADERS pNtH;PIMAGE_DOS_HEADER pDH;pDH=(PIMAGE_DOS_HEADER)ImageBase;pNtH=(PIMAGE_NT_HEADERS)((DWORD)pDH+pDH->e_lfanew);return pNtH;}得到可选头结构PIMAGE_OPTIONAL_HEADER GetOptionalHeader(LPVOID ImageBase) {PIMAGE_DOS_HEADER pDH=NULL;PIMAGE_NT_HEADERS pNtH=NULL;PIMAGE_OPTIONAL_HEADER pOH=NULL;if(!IsPEFile(ImageBase))return NULL;pDH=(PIMAGE_DOS_HEADER)ImageBase;pNtH=(PIMAGE_NT_HEADERS)((DWORD)pDH+pDH->e_lfanew);pOH=&pNtH->OptionalHeader;return pOH;}显示dos头信息void ShowFileHeaderInfo(HWND hWnd){char cBuff[10];PIMAGE_FILE_HEADER pFH=NULL;pFH=GetFileHeader(stMapFile.ImageBase);if(!pFH){MessageBox(hWnd,"Can't get File Header ! :(","PEInfo_Example",MB_OK);return;}wsprintf(cBuff, "%04lX", pFH->Machine);SetDlgItemText(hWnd,IDC_EDIT_FH_MACHINE,cBuff);wsprintf(cBuff, "%04lX", pFH->NumberOfSections);SetDlgItemText(hWnd,IDC_EDIT_FH_NUMOFSECTIONS,cBuff);wsprintf(cBuff, "%08lX", pFH->TimeDateStamp);SetDlgItemText(hWnd,IDC_EDIT_FH_TDS,cBuff);wsprintf(cBuff, "%08lX", pFH->PointerToSymbolTable);SetDlgItemText(hWnd,IDC_EDIT_FH_PTSYMBOL,cBuff);wsprintf(cBuff, "%08lX", pFH->NumberOfSymbols);SetDlgItemText(hWnd,IDC_EDIT_FH_NUMOFSYM,cBuff);wsprintf(cBuff, "%04lX", pFH->SizeOfOptionalHeader);SetDlgItemText(hWnd,IDC_EDIT_FH_SIZEOFOH,cBuff);wsprintf(cBuff, "%04lX", pFH->Characteristics);SetDlgItemText(hWnd,IDC_EDIT_FH_CHARACTERISTICS,cBuff);}显示可选头信息void ShowOptionHeaderInfo(HWND hWnd){char cBuff[10];PIMAGE_OPTIONAL_HEADER pOH=NULL;pOH=GetOptionalHeader(stMapFile.ImageBase);if(!pOH){MessageBox(hWnd,"Can't get Optional Header !:(","PEInfo_Example",MB_OK);return;}wsprintf(cBuff, "%08lX", pOH->AddressOfEntryPoint);SetDlgItemText(hWnd,IDC_EDIT_OH_EP,cBuff);wsprintf(cBuff, "%08lX", pOH->ImageBase);SetDlgItemText(hWnd,IDC_EDIT_OH_IMAGEBASE,cBuff);wsprintf(cBuff, "%08lX", pOH->BaseOfCode);SetDlgItemText(hWnd,IDC_EDIT_OH_CODEBASE,cBuff);wsprintf(cBuff, "%08lX", pOH->BaseOfData);SetDlgItemText(hWnd,IDC_EDIT_OH_DA TABASE,cBuff);wsprintf(cBuff, "%08lX", pOH->SizeOfImage);SetDlgItemText(hWnd,IDC_EDIT_OH_IMAGESIZE,cBuff);wsprintf(cBuff, "%08lX", pOH->SizeOfHeaders);SetDlgItemText(hWnd,IDC_EDIT_OH_HEADERSIZE,cBuff);wsprintf(cBuff, "%08lX", pOH->SectionAlignment);SetDlgItemText(hWnd,IDC_EDIT_OH_SECTIONALIGN,cBuff);wsprintf(cBuff, "%08lX", pOH->FileAlignment);SetDlgItemText(hWnd,IDC_EDIT_OH_FILEALIGN,cBuff);wsprintf(cBuff, "%08lX", pOH->Subsystem);SetDlgItemText(hWnd,IDC_EDIT_OH_SUBSYSTEM,cBuff);wsprintf(cBuff, "%04lX", pOH->CheckSum);SetDlgItemText(hWnd,IDC_EDIT_OH_CHECKSUM,cBuff);wsprintf(cBuff, "%04lX", pOH->DllCharacteristics);SetDlgItemText(hWnd,IDC_EDIT_OH_DLLFLAGS,cBuff);}显示数据目录信息void ShowDataDirInfo(HWND hDlg){char cBuff[9];PIMAGE_OPTIONAL_HEADER pOH=NULL;pOH=GetOptionalHeader(stMapFile.ImageBase);if(!pOH)return;for(int i=0;i<16;i++){wsprintf(cBuff, "%08lX", pOH->DataDirectory[i].VirtualAddress);SetDlgItemText(hDlg,EditID_Array[i].ID_RV A,cBuff);wsprintf(cBuff, "%08lX", pOH->DataDirectory[i].Size);SetDlgItemText(hDlg,EditID_Array[i].ID_SIZE,cBuff);}}显示节表信息void ShowSectionHeaderInfo(HWND hDlg){LVITEM lvItem;char cBuff[9],cName[9];WORD i;PIMAGE_FILE_HEADER pFH=NULL;PIMAGE_SECTION_HEADER pSH=NULL;pFH=GetFileHeader(stMapFile.ImageBase);if(!pFH)return;pSH=GetFirstSectionHeader(stMapFile.ImageBase);for( i=0;i<pFH->NumberOfSections;i++){memset(&lvItem, 0, sizeof(lvItem));lvItem.mask = LVIF_TEXT;lvItem.iItem = i;memset(cName,0,sizeof(cName));memcpy(cName, pSH->Name, 8);lvItem.pszText = cName;SendDlgItemMessage(hDlg,IDC_SECTIONLIST,LVM_INSERTITEM,0,(LPARAM)&lvIte m);lvItem.pszText = cBuff;wsprintf(cBuff, "%08lX", pSH->VirtualAddress);lvItem.iSubItem = 1;SendDlgItemMessage(hDlg,IDC_SECTIONLIST, LVM_SETITEM, 0, (LPARAM)&lvItem);wsprintf(cBuff, "%08lX", pSH->Misc.VirtualSize);lvItem.iSubItem = 2;SendDlgItemMessage(hDlg,IDC_SECTIONLIST, LVM_SETITEM, 0, (LPARAM)&lvItem);wsprintf(cBuff, "%08lX", pSH->PointerToRawData);lvItem.iSubItem = 3;SendDlgItemMessage(hDlg,IDC_SECTIONLIST, LVM_SETITEM, 0, (LPARAM)&lvItem);wsprintf(cBuff, "%08lX", pSH->SizeOfRawData);lvItem.iSubItem = 4;SendDlgItemMessage(hDlg,IDC_SECTIONLIST, LVM_SETITEM, 0, (LPARAM)&lvItem);wsprintf(cBuff, "%08lX", pSH->Characteristics);lvItem.iSubItem = 5;SendDlgItemMessage(hDlg,IDC_SECTIONLIST, LVM_SETITEM, 0, (LPARAM)&lvItem);++pSH;}}运行效果如下:1>显示可选头信息和文件头信息。
病毒理论与防御技术实验报告2015年3月1日实验一:**********一、实验目的1)掌握PE文件格式。
2)了解PE病毒原理。
二、实验步骤1)阅读CVC杂志。
2)学习使用PE Explorer查看不同PE结构文件格式,如exe和dll。
3)文件型病毒演练。
a)实验测试的示例程序包由教师提供,解压后请从病毒包中取得Virus.exe拷贝在当前解压目录中即可运行病毒程序进行测试。
b)为了保持测试的一般性,我们采用的是一个常见的软件ebook;该测试包即为ebook安装目录下的所有程序。
c)测试时请依照软件提示进行,在测试中,我们发现该测试包还具有典型性特点:其中ebookcode.Exe 和 KeyMaker.exe 可以看成一组,它们在感染后能够明显的体现病毒的基本特征,故而杀毒软件Norton能够比较及时的查出是病毒程序;而ebookedit.exe 和 ebrand-it.exe 是另一类程序,它们在感染后很好地体现了病毒的隐藏的特征,在运行初期,杀毒程序很难查出其为病毒程序,只有在该程序感染其他可执行程序,在宿主程序中添加4k的节时,杀毒软件检测到该行为时才能判断是病毒程序。
三、思考题1、详细记录实验步骤、现象、问题。
实验现象:1)PE文件格式按节组织(section)->中病毒之后section number变多(多了一个IS节)中病毒之后Address of entry point程序入口点变化(调用子程序SUB_L0066D58B)2)中病毒文件中病毒文件也具有了感染其他文件的功能。
●病毒重定位:原因:病毒的生存空间就是宿主程序,而因为宿主程序的不同,所以病毒每次插入到宿主程序中的位置也不同。
那么病毒需要用到的变量的位置就无法确定。
这就是病毒首先要重定位的原因。
目的:找到基址举例:在几乎每个病毒的开头都用下面的语句:call deltadelta:pop ebp ;得到delta地址sub ebp,offset delta ;因为在其他程序中基址可能不是默认的所以需要重定位mov dword ptr [ebp+offset appBase],ebp;把扩展基址寄存器ebp中的内容(基址)存入内存appBase位置●API函数地址的获取:步骤:首先获得诸如kernel32.dll,user32.dll的基址,然后再找到真正的函数地址.2、写下你阅读CVC杂志后的读后感,你同意杂志的所表达的倾向吗,你觉得现阶段病毒肆虐和这样的倾向和认识有没有关系,为什么?CVC杂志很有意思,语言幽默,观点明确,并且总结了很多关于病毒的基础知识。
防病毒实验报告姓名:王宝学号:08103663班级:信安10-1班指导教师:朱长征2013.7实验一PE结构分析及DOS病毒感染与清除一、实验目的1.熟悉PE文件结构2.掌握DOS系统下.EXE文件病毒感染与清除方法二、实验要求1.实验之前认真准备,编写好源程序。
2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3.不断积累程序的调试方法。
三、实验内容1)手工或编程从user32.dll中获得MessageBoxA的函数地址;1、打开lordPE软件,查找user32.dll,找到如下图:图 12、右击点载入到PE文件编辑器3、点击目录,查看目录表信息4、用软件给出的文件位置计算器就可以得到MessageBoxA的一些信息如下:如此就可以得到MessageBoxA的VA。
又因为,文件中的地址与内存中表示不同,它是用偏移量(File offset)来表示的。
在SoftICE和W32Dasm下显示的地址值是内存地址(memory offset),或称之为虚拟地址(Virual Address,VA)。
而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 或物理地址(RAW offset)。
所以偏移地址就是物理地址。
这样就得到了MessageBoxA的地址了。
2)查阅资料,结合第2章内容,根据PE结构编写一个小的工具软件,或者用PE Explorer、PEditor、Stud_PE等工具软件查看、分析PE 文件格式。
针对PE文件格式,请思考:Win32病毒感染PE文件,须对该文件作哪些修改;PE的总体结构如下表所示:DOS MZ header部分是DOS时代遗留的产物,是PE文件的一个遗传基因,一个Win32程序如果在DOS下也是可以执行,只是提示:“Thisprogram cannot be run in DOS mode.”然后就结束执行,提示执行者,这个程序要在Win32系统下执行。
苯并芘检测实验报告一、实验目的苯并芘是一种强致癌物质,广泛存在于环境和食品中。
本次实验的目的是建立一种准确、灵敏的方法来检测样品中的苯并芘含量,评估其潜在的健康风险,并为相关领域的质量控制和环境保护提供科学依据。
二、实验原理本实验采用高效液相色谱法(HPLC)结合荧光检测器进行苯并芘的检测。
苯并芘在特定的色谱条件下能够与固定相和流动相发生相互作用,从而实现分离。
通过荧光检测器检测其荧光信号强度,并与标准曲线对比,计算出样品中苯并芘的含量。
三、实验材料与仪器(一)材料1、苯并芘标准品2、甲醇(色谱纯)3、乙腈(色谱纯)4、超纯水5、待测样品(如食用油、烟熏食品等)(二)仪器1、高效液相色谱仪(配备荧光检测器)2、色谱柱(C18 柱,250mm×46mm,5μm)3、超声波清洗器4、离心机5、移液器6、容量瓶7、过滤膜(045μm)四、实验步骤(一)标准溶液的配制1、准确称取一定量的苯并芘标准品,用甲醇溶解并定容,配制成浓度为100μg/mL 的储备液。
2、将储备液逐步稀释,得到浓度分别为01μg/mL、05μg/mL、10μg/mL、50μg/mL、100μg/mL 的标准工作溶液。
(二)样品前处理1、食用油样品:取适量样品于离心管中,加入一定量的乙腈,超声提取 30 分钟,然后离心分离,取上清液过045μm 滤膜,待进样分析。
2、烟熏食品样品:将样品粉碎均匀,称取一定量置于具塞锥形瓶中,加入乙腈,振荡提取 1 小时,然后离心分离,取上清液过045μm 滤膜,待进样分析。
(三)色谱条件设置1、流动相:甲醇水(85:15,v/v)2、流速:10mL/min3、柱温:30℃4、进样量:20μL5、荧光检测波长:激发波长 365nm,发射波长 410nm(四)样品测定分别将标准工作溶液和处理后的样品溶液注入高效液相色谱仪,记录色谱图和荧光强度。
五、实验结果与数据分析(一)标准曲线绘制以苯并芘的浓度为横坐标,对应的荧光强度为纵坐标,绘制标准曲线。
计算机病毒实验报告姓名:学号:老师:日期:一.PE文件感染实验一:参照病毒感染PE文件的7个步骤,记录病毒是如何感染文件(文字和截屏形式)病毒感染文件过程(以感染文件KeyMaker.exe 为例):重定位,获得所有API地址:通过软件Stud_PE可查看可执行文件KeyMaker.exe的结构可查看文件内容:1.判断目标文件开始的两个字节是否为“MZ”:2.判断PE文件标记“PE”:3.判断感染标记,如果已被感染过则跳出继续执行宿主程序,否则继续:4.读取IMAGE_FILE_HEADER的NumberOfSections域,获得Data Directory(数据目录)的个数,(每个数据目录信息占8个字节):5.得到节表起始位置。
(数据目录的偏移地址+数据目录占用的字节数=节表起始位置)。
6.得到节表的末尾偏移(紧接其后用于写入一个新的病毒节信息)节表起始位置+节的个数*(每个节表占用的字节数28H)=节表的末尾偏移。
7.开始写入节表,感染文件:二:在掌握Stud_PE工具的基础上,比较文件感染前后有哪些变化。
感染前:感染后:由上两图可以看出,感染前后有4处发生了变化:1:PE文件头中入口点:感染病毒后KeyMaker.exe程序的入口点变成了病毒文件的入口点。
2:PointerToRawData域值,即该文件的偏移量发生了变化;3:imag的大小发生了变化;4:Number of sections的数量发生了变化。
由.exe文件感染前后变化可知,PE病毒感染过程即在文件中添加一个新节,把病毒代码和病毒执行后返回宿主程序的代码写入新添加的节中,同时修改PE文件头中入口点(AddressOfEntryPoint),使其指向新添加的病毒代码入口。
程序染毒后运行结果:1:首先执行病毒程序:2:病毒代码执行完后执行宿主程序:三:针对病毒源代码,指出与感染PE文件步骤相对应的程序段1.判断目标文件开始的两个字节是否为“MZ”。
2024年微生物分解塑料的实验报告为了解决全球塑料污染问题,本实验旨在探究2024年微生物对塑料的分解能力,并寻找能够有效降解塑料的微生物。
通过大量的实验数据及分析,我们得出以下结论。
一、实验目的本实验的主要目的是研究微生物在2024年对塑料的分解能力,并探索潜在的塑料分解微生物。
二、实验材料与方法1. 实验材料:- 塑料样品:我们选择了常见的聚乙烯(PE)、聚丙烯(PP)和聚苯乙烯(PS)作为实验材料,以代表不同种类的塑料污染物。
- 微生物种类:本实验选取了来自不同环境中的土壤样品,经过筛选后获得多种潜在的塑料分解微生物。
2. 实验方法:- 样品制备:将塑料样品切割成小块或粉碎成颗粒状,以增加微生物入侵的表面积。
- 微生物分离与培养:从土壤样品中分离出微生物,并通过培养方法获得纯培养物。
- 培养基选择:选择适合微生物生长的培养基,添加适当的营养物质以促进微生物对塑料的分解能力。
- 实验处理:将微生物接种到含有塑料样品的培养基中,并在一定的温度和湿度下进行培养。
- 实验时间观察:定期观察实验培养基中的塑料样品,记录微生物分解的变化情况。
三、实验结果与数据分析经过长时间的培养,我们观察到不同微生物对不同塑料类型的分解能力存在差异。
以下是我们的实验结果和数据分析:1. PE塑料分解:- 微生物菌株A:微生物菌株A在培养基中对PE塑料表现出了较好的降解能力。
在30天后,PE塑料的重量降低了约30%。
- 微生物菌株B:微生物菌株B对PE塑料的分解效果较微弱,重量仅降低了约10%。
2. PP塑料分解:- 微生物菌株C:微生物菌株C对PP塑料的降解效果显著,45天后,PP塑料重量减少了约40%。
- 微生物菌株D:微生物菌株D的分解能力较弱,仅使PP塑料重量下降了约15%。
3. PS塑料分解:- 微生物菌株E:微生物菌株E对PS塑料的降解能力较好,60天后,PS塑料重量减少了约50%。
- 微生物菌株F:微生物菌株F对PS塑料的降解效果有限,仅使塑料重量减少了约20%。
实验二Windows病毒分析与设计(2)WinPE病毒1.实验目的1、了解文件型病毒感染、破坏机制,进一步认识病毒;2、学习使用Stud_PE软件对WinPE可执行文件进行查看和修改。
2.实验所需条件和环境硬件设备:局域网,终端PC机。
系统软件:运行Windows操作系统的PC机,具有MASM32宏汇编集成编译环境软件设置:UtraEdit软件;PEView软件;Stud_PE软件每组人数:13.实验原理WinPE病毒是目前计算机病毒中最重要的一类病毒,要了解PE病毒,首先要熟悉PE 文件的格式,在此基础上理解PE病毒的工作原理和破坏机制。
详情请参考教材第二章计算机病毒基础知识和第五章Windows病毒分析。
注:实验所需软件放在文件夹“4_工具”中。
4.实验步骤4.3Win32PE病毒进入文件夹“3_win32virus”1、解压缩“example”、“virus”2、进入“virus”文件夹,这是实验测试用的示例病毒包,从病毒包中取得Virus.exe 拷贝到“example”目录中。
3、进入“example”文件夹,这是实验测试的示例程序包,双击运行virus,观察病毒运行的情况。
文件夹中包含多个PE文件,双击运行,观察它们染毒后的执行情况。
4、结果分析:查看文件属性(右键→属性→文件大小),比较文件大小在染毒前后的变化;5、用“PEView”工具查看文件在染毒前后的变化(节数、大小、入口地址等),注:需要参照教材中关于PE文件格式的说明。
6、使用4.3中制作的PE文件重复进行步骤2-5。
7、阅读说明文件“源代码详解”(位于“virus”文件夹中),理解此病毒原理。
8、将实验截图、分析内容写入实验报告。
(病毒程序由上海交通大学提供)4.4WinPE程序综合工具(选做)1、下载“H-Stud_PE.rar”;2、用它查看、编辑、比较可执行文件。
5.补充知识为了更好的学习WinPE病毒,考虑到大多数同学都没有接触Win32宏汇编语言程序,下面补充两个在WinPE病毒中经常需要用到的软件:MASM32 v82、Stud_PE 2.1.0.1的相关知识。
计算机病毒实验报告实验2.2 PE病毒2.2 PE病毒2.2.1 实验目的通过实验,了解PE病毒的感染对象和学习文件感染PE病毒前后的特征变化以重点学习PE 病毒的感染机制和恢复感染染毒文件的方法,提高汇编语言的使用能力。
2.2.2 实验原理本实验采用的PE病毒样本是一个教学版的样本,执行病毒样本或者执行染毒文件都将触发此病毒。
一旦触发,病毒感染其所在文件夹内的所有pe文件。
该样本不具有破坏模块,染毒文件可恢复。
2.2.3 实验预备知识点本实验需要如下的预备知识:PE病毒的基础知识,包括PE病毒的概念,PE文件的概念和文件格式。
相关的操作系统知识,包括内存分页机制,变量的重定位机制,动态连接库的概念和调用方法和用于文件操作的API函数。
汇编语言基础,能独立阅读和分析汇编代码,掌握常用的汇编指令。
2.2.4 实验内容本实验需要完成的内容如下:PE病毒感染实验。
通过触发病毒,观察病毒发作的现象和步骤学习病毒的感染机制;阅读和分析病毒的代码,并完成系统附带的习题。
PE病毒的杀毒实验。
使用实验系统提供的杀毒工具学习恢复染毒文件的方法;阅读和分析杀毒程序代码,并完成习题。
2.2.4 实验环境实验小组机器要求有WEB浏览器IE。
操作系统为windows2000。
2.2.5 实验步骤打开“信息安全综合实验系统” 在右上角选择“实验导航”双击“病毒教学实验系统”进入病毒教学实验系统登录面界,输入用户名和密码。
(注意:实验前先关闭所有杀毒软件。
)1.病毒感染实验进入病毒防护教学实验后,点击左侧的“PE病毒”,然后在点击下面的“病毒感染实验”,其右侧为“病毒感染实验”的界面,如图2-2-1,及2-2-2所示。
认真阅读IE页面列出的知识要点,包括PE病毒概念,著名的病毒介绍,PE文件格式和PE病毒感染机制。
2-2-1根据页面首行提示下载实验软件包到本地主机任意路径,解压软件包。
进入“bin”目录点击“PE病毒实验.exe”,选择“PE病毒感染实验”,打开感染实验的界面。
《(课程名称课程名称))》实验报告年级、专业、班级2009级网络工程2班姓名王磊实验题目PE文件实验实验时间2012年04月02日实验地点主教410实验成绩实验性质□验证性□设计性□综合性教师评价:□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;□实验结果正确;□语法、语义正确;□报告规范;其他:评价教师签名:一、实验目的1.认识PE文件头结构2.认识PE文件节表结构3.认识PE文件导出函数结构二、实验项目内容1.利用Winhex软件,打开一个PE文件,手工计算PE文件中的主要内容的位置。
2.利用Winhex软件,打开一个PE文件,通过解读节表内容,列举该文件的节数量、节位置等信息。
3.利用Winhex软件,打开一个PE文件,通过数据目录表的位置,确定导出函数表的位置。
根据导出函数表列举所有导出函数的名字和地址位置。
三、实验过程或算法(源程序)Pe文件框架如下:1.我用vc6.0编写了一个非常简单的函数,调用windows的一个messagebox函数,然后通过分析,一步步了解pe文件结构的具体实现。
运行结果如下:2.用winhex打开这个exe文件,分析其头部结构关注开始两个字节的dos开始标志,和偏移3CH的pe文件头位置,如下面的红线所示。
可以看到,开始dos起始MZ标记,以及指向pe文件头的000000E0,以及pe文件头的004550标记,证明这是一个标准的pe文件。
3.接着,我开始分析pe文件头的结构这里的偏移都是相对于pe开始位置的偏移。
下面关注一下image_file_header结构按照分类,标志如下:接着是可选映像头,实际上必须存在,而不是可选。
我标注的位置,分别是:魔法数字(magic),代码的入口rva地址(addressofentrypoint),载入程序的首选rva地址(imagebase),内存对齐方式(sectionalignment),文件在磁盘的对齐方式(filealignment),数据目录表的项数(numberofrvaandsize).这里可以看到,数据目录项为16项而且每一项都是下面的一个数据结构。
PE_SALITY,这种PE感染型病毒利用了微软的快捷方式漏洞传播。
相关安全公告连接:(MS10-046) Microsoft Windows Shortcut Remote Code Execution Vulnerabilityhttp://about-/vulnerability.aspx?language=us&name=Microsoft%20Windows% 20Shortcut%20Remote%20Code%20Execution%20Vulnerability/technet/security/bulletin/MS10-046.mspx它可能是通过邮件到达被感染用户的电脑。
邮件附件中包含有带有漏洞的快捷方式文件,和一个.dll 文件。
这个dll会导致下载相关的PE 感染类型病毒文件,PE_SALITY.XX-O如PE_SALITY.ER-O。
一旦该PE病毒母体文件运行,他将会感染系统和所有可以访问到的共享设备中的.EXE 以及.SCR文件,并释放AUTORUN.INF起到自启动的目的。
被感染后的.EXE 或者.SCR 文件也会感染其它可执行文件,并且被趋势科技检测为PE_SALITY.XX 如PE_SALITY.ER。
PE_SALITY 感染过程PE_SALITY.ER感染途径:通过母体文件,或是被母体文件PE_SALITY.ER-O感染过的文件感染。
运行后会将恶意代码注入 EXPLORER.EXE 进程。
恶意行为:此病毒会修改被感染电脑的注册表选项来禁用一些系统服务。
这种行为会导致很多系统的功能无法使用。
该感染文件会重写程序入口点的代码并将他指向病毒代码,这样就把病毒程序附加到了宿主中。
当被感染程序运行时就会先执行恶意代码。
它会释放AUTORUN.INF 以使他释放到各个目录中的病毒文件能够自动运行起来。
技术细节:文件大小: 不固定文件类型: PE常驻内存:是第一个样本获得时间: 11.2, 2010恶意行为:禁用服务,中止进程,下载恶意程序修改系统内容:会在系统的SYSTEM.INI 文件中添加以下内容[MCIDRV_VER]DEVICEMB={随机数字 }安装后会添加以下注册表键值:HKEY_CURRENT_USERSoftwareAfukx修改以下注册表键值,来禁用服务:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSharedAccessStart = 4Start的默认值为2HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswscsvcStart = 4Start的默认值为2修改以下文件隐藏属性的相关键值HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSharedAccessParameters FirewallPolicyStandardProfileAuthorizedApplicationsList{malware path and file name} = {malware path and file name}:*:Enabled:ipsecHidden的默认值为1创建以下注册表键值来通过防火墙:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSharedAccessParameters FirewallPolicyStandardProfileAuthorizedApplicationsList%WINDOWS%Explorer.EXE = %WINDOWS%Explorer.EXE:*:Enabled:ipsec删除以下注册表键值:HKEY_LOCAL_MACHINESystemCurrentControlSetControlSafeBootMinimalHKEY_LOCAL_MACHINESystemCurrentControlSetControlSafeBootNetwork文件感染:感染所有EXE,SCR 类型文件该病毒会自动忽略文件命中包含DAEMON,NOTEPAD.EXE,WINMINE.EXE的文件,自动忽略文件名超过250字符的文件,自动忽略包含有SYSTEM的文件删除后缀为.VDB ,.KET ,.AVC 的文件删除文件名以‘drw’开头的文件删除文件名中和安全相关的应用程序传播方式:这个感染型文件释放以下自身的复制到所有物理及可移动存储设备中驱动:{随机名称}.exe/cmd/pif他会释放一个AUTORUN.INF文件来使他释放的这个复制在感染的系统中自动运行AUTORUN.INF 包含以下内容;{garbage characters}[AutoRun];{garbage characters}shellexplorecommand = {random}.exe/cmd/pif;{garbage characters}open = {random file name}.exe;{garbage characters}shellopencommand = {random}.exe/cmd/pifshellopendefault = 1;{garbage characters}shellautoplaycommand = {random}.exe/cmd/pif;{garbage characters}会从以下站点下载恶意程序:http://{BLOCKED}/images/xs.jpghttp://{BLOCKED}/images/xs.jpghttp://{BLOCKED}/images/logo.gifhttp://{BLOCKED}/images/xs.jpghttp://{BLOCKED}/logof.gifhttp://{BLOCKED}/xs.jpghttp://{BLOCKED}.br/s.jpghttp://{BLOCKED}/img/xs.jpghttp://{BLOCKED}/s.jpghttp://{BLOCKED}/images/s.jpghttp://{BLOCKED}.{BLOCKED}.222.206/logos.gifhttp://{BLOCKED}/images/xs2.jpghttp://{BLOCKED}o.cz/logo.gifhttp://{BLOCKED}/images/logof.gif他会将下载文件存放在当前用户的TEMP文件夹中解决方法:到以下站点下载AVB工具/Anti-Virus/Clean-Tool/AvbTool/Release.zip 解压缩密码: novirus选择-增强工具PE 病毒免疫在随后的窗口先选择开启自启动在选择开启免疫免疫成功后的表现:1.注册表可以打开2.任务管理器不再为灰色可以正常显示由于此工具仅仅起到清除线程中病毒以及免疫作用。
北京信息科技大学
信息管理学院
课程设计报告
课程名称《计算机病毒分析与防范》课程设计题目 PE文件格式与PE病毒分析
指导教师孙璇
设计起止日期 2015年4月13日
系别信息管理学院
专业信息安全
学生姓名李自然
班级/学号信安1202/2012012194
成绩
北京信息科技大学信息管理学院
1.课程名称、课程设计目的、课程设计内容、课程设计要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供
学生使用;
2.实验条件由学生在实验或上机之前填写,教师应该在实验前检查并指导;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。
实验五(选做一)计算机病毒同组实验者实验日期成绩练习一PE病毒实验目的 1.了解文件型病毒的原理;2.了解PE文件结构;3.了解文件型病毒的发现方法;4.了解病毒专杀工具的基本原理实验人数每组2人系统环境 Windows网络环境交换网络结构实验工具 LaborDayVirus、OllyDBG、PE Explorer、UltraEdit-32实验类型验证型一、实验原理详见“信息安全实验平台”,“实验26”,“练习一”。
二、实验步骤本练习由单人为一组进行。
首先使用“快照X”恢复Windows系统环境。
一.验证利用OllyDBG修改病毒感染程序(1)进入实验平台,单击工具栏“实验目录”按钮,进入文件型病毒实验目录。
新建文件夹“text”,将文件夹“hei”下的hei0.exe(未感染病毒的可执行程序)复制到text目录中。
点击工具栏“LaborDayVirus”按钮,将目录中的LaborDayVirus.exe也复制到text目录中。
将系统时间调整为5月1日,双击text目录下LaborDayVirus.exe感染hei0.exe文件,观察hei0.exe感染病毒前后的大小变化。
(2)单击工具栏“OllyDBG”按钮启动ollyDbg1.10,单击文件菜单中的“打开”项,选择要修复的hei0.exe。
由于病毒修改了原程序的入口点,因此会有程序入口点超出代码范围的提示,如图1所示。
图1 入口点警告提示单击“确定”按钮继续,程序会停在病毒修改后的程序入口点(hei0.exe的入口点为0x00403200)上,在代码中找到最后一个jmp指令处(病毒感染完成后将跳转回原程序),按F2设置断点,按F9运行,程序会在刚设置的jmp断点上中断,查看EAX寄存器的值(EAX=0x401000注意上面提到的断点,下面还会用到),按F7单步执行到下一条指令地址,点选鼠标右键或选择“插件”菜单项,选择菜单中的用ollyDump脱壳调试进程,选中重建输入表方式1,方式2各脱壳一次,分别保存为1.exe、2.exe。
计算机病毒实验报告计算机病毒实验报告篇一:201X15张三-计算机病毒实验报告计算机与信息学院《计算机病毒与反病毒》实验报告学生姓名:学号:专业班级:计算机科学与技术09-2班 201X年 5 月15 日说明1.本实验报告是《计算机病毒与反病毒》课程成绩评定的重要依据,须认真完成。
2.实验报告严禁出现雷同,每位同学须独立完成。
若发现抄袭,抄袭者和被抄袭者本课程的成绩均以零分计。
3.实验报告要排版,格式应规范,截图一律采用JPG格式(非BMP 格式)。
为避免抄袭,用图像编辑软件在截图右下角“嵌入”自己的学号或姓名。
实验报告的格式是否规范、截图是否嵌入了自己的学号或姓名,是评价报告质量的考量因素。
4.实验报告须说明文字与实验截图相配合,若只有说明文字,或只有截图,则成绩为不及格。
5.只提交实验报告电子版。
在5月31日前,通过电子邮件发送到hfutZRB@163.,若三天之内没有收到内容为“已收到”的回复确认Em ail,请再次发送或电话联系任课老师。
6.为了便于归档,实验报告rd文档的命名方式是“学号姓名-计算机病毒实验报告.d c”,如“201X15张三-计算机病毒实验报告.dc”。
注意:提交实验报告截止日期时间是实验一程序的自动启动一、实验目的(1)验证利用注册表特殊键值自动启动程序的方法;(2)检查和熟悉杀毒软件各组成部分的自动启动方法。
二、实验内容与要求(1)在注册表自动加载程序主键中,添加加载目标程序键值(自己指派任意程序),重启操作系统,检查是否能自动成功加载目标程序。
罗列5或5个以上能自动启动目标程序的键值,并用其中某一个启动自己指派的程序。
(2)检查/分析你所使用的计算机中杀毒软件系统托盘程序、底层驱动程序等组成部分的自动启动方式。
实验一PE结构分析及DOS病毒感染与清除一、实验目的1.熟悉PE文件结构2.掌握DOS系统下.EXE文件病毒感染与清除方法二、实验要求1.实验之前认真准备,编写好源程序。
2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3.不断积累程序的调试方法。
三、实验内容1)手工或编程从user32.dll中获得MessageBoxA的函数地址;(1)首先加载loadPE(2)打开PE编辑器(3)打开目录(4)进入输出表(5)在列表中就可以找到Messagebox的信息。
经过计算可得VA即函数访问内存的逻辑地址。
2)查阅资料,结合第2章内容,根据PE结构编写一个小的工具软件,或者用PE Explorer、PEditor、Stud_PE等工具软件查看、分析PE文件格式。
针对PE文件格式,请思考:Win32病毒感染PE文件,须对该文件作哪些修改;(1)打开Stud_PE,并加载EXE文件;(2)结合16进制编辑器完成EXE文件的分析可以看到,pe文件首部包括MZ头(DOS头),PE文件头,可选映像头,数据目录表;仔细分析各部分发现:MZ头占了64个字节,首先是MZ标志,然后是最后一页的字节数,文件的页数,重定位地址(pe头开始)等,其中FILE address of relocation table指向PE标志(40H)。
接下来是4个字节的PE标志和20个字节的PE文件头部信息,各字段的依次为PE节数量,时间戳,指向符号表,符号表数量,扩展PE头大小,文件属性。
这些都被封装在_IMAGE_FILE_HEADER结构中。
然后是可选映像头,占了96个字节。
这一部分字段很多,有31个,其中比较重要的有SIZEOfcode(可执行代码长度),AddressOfEntrypoint (程序入口点),Imagebase(PE文件的首选装载地址)。
然后是占有128个字节的数据表目录:据查资料知道这一块是IMAGE-DATA-DIRECTORY结构的数组,里面每个结构体给出了重要的数据结构的RVA。
PE病毒实验报告
姓名:佟蕊学号:201224010138 班级:12计本非师学院:信息学院
一、PE病毒种类:
pe文件是windows下的一个32位文件格式,在windows系统中广泛存在,该文件格式是病毒喜欢感染的类型。
win32.tenga
该病毒式一个win32pe感染型病毒,可以感染普通pe exe文件并把自己的代码加到exe文件尾部。
win16.hllp.hiro.10240
该病毒式利用pascal编写的病毒,不会驻内存中,包含“hiroshima end 000 v1.2000:0000”字符串。
该病毒在windows目录中寻找exe文件并将自身复制到开始文件夹中
win16.hllp.hiro.10240
该病毒式利用pascal编写的病毒,不会驻内存中,包含“hiroshima end 000 v1.2000:0000”字符串。
该病毒在windows目录中寻找exe文件并将自身复制到开始文件夹中
2001 tokugawa
此病毒查找类似下的文件,但它对反病毒程序文件不起作用。
win32.sankey
该病毒是一个非常危险的win32病毒,它会在当前目录和被破坏的文件中搜索exe文件并感染它们,当感染了一个exe文件后,病毒会在文件中创建一个名为“kaze/fat”的片段。
二、PE病毒的删除以及运作原理:
病毒在安全模式下删除:
病毒是将可执行文件的代码中程序入口地址,改为病毒的程序入口,这样就会导致用户在运行的时候执行病毒文件:
三、总结
本次实验让我了解了PE病毒的种类以及运行原理。
更加重要的是知道了病毒带来的危害。
这样这以后的工作生活中就尽量避免下载到病毒,即使下载到病毒也会在安全模式下去删除它。