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病毒实验报告
姓名:佟蕊学号: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病毒的种类以及运行原理。
更加重要的是知道了病毒带来的危害。
这样这以后的工作生活中就尽量避免下载到病毒,即使下载到病毒也会在安全模式下去删除它。