中易网

请问什么是WINDOWS下的PE病毒 ?

答案:3  悬赏:0  
解决时间 2021-04-07 03:38
我电脑中PE病毒了
最佳答案
PE病毒是指所有感染Windows下PE文件格式文件的病毒. PE病毒大多数采用Win32汇编编写. PE病毒对于一个热衷于病毒技术的人来说,是必须掌握的. 只有在PE病毒中,我们才能真正感受到高超的病毒技术. 编写Win32病毒的几个关键 Api函数的获取 不能直接引用动态链接库 需要自己寻找api函数的地址,然后直接调用该地址 一点背景:在PE Loader装入我们的程序启动后堆栈顶的地址是是程序的返回地址,肯定在Kernel中! 因此我们可以得到这个地址,然后向低地址缩减验证一直到找到模块的起始地址,验证条件为PE头不能大于4096bytes,PE header的ImageBase值应该和当前指针相等. 病毒没有.data段,变量和数据全部放在.code段 编写Win32病毒的几个关键 偏移地址的重定位 Call delta delta: pop ebp sub ebp,offset delta 那么变量var1的真正偏移地址为:var1+ebp 对PE文件格式的了解 编写Win32病毒的几个关键 病毒如何感染其他文件 在文件中添加一个新节 该新节中添加病毒代码和病毒执行后的返回Host程序的代吗 修改文件头中代码开始执行位置(AddressOfEntryPoint)指向新添加的节,以便程序运行后先执行病毒代码. PE病毒感染其他文件的方法还有很多,譬如PE病毒还可以将自己分散插入到每个节的空隙中等等,这里不在一一叙述. PE文件格式一览 Section n Section ... Section 2 Section 1 Section table PE header DOS stub DOS MZ header PE header Pe header 由三部分组成 字串"PE\0\0"(Signature) 映像文件头(FileHeader) 可选映像头(OptionalHeader) 字串"PE\0\0" Signature 一dword类型,值为50h, 45h, 00h, 00h(PE\0\0). 本域为PE标记,我们可以此识别给定文件是否为有效PE文件. 这个字串在文件中的位置(e_lfanew),可以在DOS程序头中找到它的指针,它占用四个字节,位于文件开始偏移3CH字节中. 映像文件头 该结构域包含了关于PE文件物理分布的信息, 比如节数目,文件执行机器等. 它实际上是结构IMAGE_FILE_HEADER的简称. 映像文件头结构 IMAGE_FILE_HEADER STRUCT ___ Machine WORD ___ NumberOfSections WORD ___ TimeDateStamp dd ___ PointerToSymbolTable dd ___ NumberOfSymbols dd ___ SizeOfOptionalHeader WORD ___ Characteristics WORD IMAGE_FILE_HEADER ENDS 映像文件头的基本信息 关于文件信息的标记,比如文件是exe还是dll 2 Characteristics * 7 可选头的大小 2 SizeOfOptionalHeader 6 符号数目 4 NumberOfSymbols 5 COFF符号表的偏移 4 PointerToSymbleTable 4 生成该文件的时间 4 TimeDataStamp 3 文件中节的个数 2 NumberOfSection ** 2 机器类型,x86为14ch 2 Machine * 1 描述 大小(字节) 名字 顺序 可选映像头 optional header 结构是 IMAGE_NT_HEADERS 中的最后成员.包含了PE文件的逻辑分布信息.该结构共有31个域,一些是很关键,另一些不太常用.这里只介绍那些真正有用的域. 这儿有个关于PE文件格式的常用术语: RVA RVA 代表相对虚拟地址.它是相对虚拟空间里的一个地址 . 举例说明,如果PE文件装入虚拟地址(VA)空间的400000h处,且进程从虚址401000h开始执行,我们可以说进程执行起始地址在RVA 1000h.每个RVA都是相对于模块的起始VA的. 可选映像头 文件中节对齐的粒度. FileAlignment 内存中节对齐的粒度. SectionAlignment PE文件的优先装载地址.比如,如果该值是400000h,PE装载器将尝试把文件装到虚拟地址空间的400000h处.若该地址区域已被其他模块占用,那PE装载器会选用其他空闲地址. ImageBase PE装载器准备运行的PE文件的第一个指令的RVA.若要改变整个执行的流程,可以将该值指定到新的RVA,这样新RVA处的指令首先被执行. AddressOfEntryPoint * 描述 名字 可选映像头 NT用来识别PE文件属于哪个子系统. Subsystem 一IMAGE_DATA_DIRECTORY 结构数组.每个结构给出一个重要数据结构的RVA,比如引入地址表等. DataDirectory 所有头+节表的大小,也就等于文件尺寸减去文件中所有节的尺寸.可以以此值作为PE文件第一节的文件偏移量. SizeOfHeaders 内存中整个PE映像体的尺寸. SizeOfImage win32子系统版本.若PE文件是专门为Win32设计的,该子系统版本必定是4.0否则对话框不会有3维立体感. MajorSubsystemVersion MinorSubsystemVersion 描述 名字 DataDirectory数据目录 一个IMAGE_DATA_DIRECTORY数组,里面放的是这个可执行文件的一些重要部分的RVA和尺寸,目的是使可执行文件的装入更快,数组的项数由上一个域给出.IMAGE_DATA_DIRECTORY包含有两个域,如下: IMAGE_DATA_DIRECTORY VitualAddress DD Size DD IMAGE_DATA_DIRECTORY ENDS 节表 节表其实就是紧挨着 PE header 的一结构数组.该数组成员的数目由 file header (IMAGE_FILE_HEADER) 结构中 NumberOfSections 域的域值来决定.节表结构又命名为 IMAGE_SECTION_HEADER. 结构中放的是一个节的信息,如名字,地址,长度,属性等. IMAGE_SECTION_HEADER 本节原始数据在文件中的位置 4 PointerToRawData * 5 本节的原始尺寸 4 SizeOfRawData * 4 这个值+映像基地址=本节在内存中的真正地址.OBJ中无意义. 4 Virtual * 3 OBJ文件用作表示本节物理地址EXE文件中表示节的真实尺寸 4 PhysicalAddress或VirtualSize 2 节名 8 Name * 1 描述 大小(字节) 名字 顺序 IMAGE_SECTION_HEADER 节属性 4 Characteristics * 10 本节在行号表中的行号数目 2 NumberOfLinenumbers 9 本节要重定位的数目 2 NumberOfRelocations 8 行号偏移 4 PointerToLinenumbers 7 OBJ中表示该节重定位信息的偏移EXE文件中无意义 4 PointerToRelocations 6 描述 大小(字节) 名字 顺序 节 "节(Section)"跟在节表之后,一般PE文件都有几个"节".比较常见的有: 代码节 已初始化的数据节 未初始化的数据节 资源节 引入函数节 引出函数节 代码节 代码节一般名为.text或CODE,该节含有程序的可执行代码. 每个PE文件都有代码节 在代码节中,还有一些特别的数据,是作为调用映入函数之用.如: Call MessageBoxA的调用,反汇编后该指令被换为call 0040101A,而地址0040101A仍在.text中,它放有一个跳转指令jmp dword ptr[0040304c],即这条跳转指令的目的地址处于.idata节中的0040304C处,其中放的才是MessageBoxA的真正地址,如下图: 已初始化的数据节 这个节一般取名为.data或DATA 已初始化的数据节中放的是在编译时刻就已确定的数据.如Hello World 中的字符串"Hello World!". 未初始化的数据节 这个节的名称一般叫.bbs. 这个节里放有未初始化的全局变量和静态变量. 资源节 资源节一般名为.rsrc 这个节放有如图标,对话框等程序要用到的资源. 资源节是树形结构的,它有一个主目录,主目录下又有子目录,子目录下可以是子目录或数据. 都是一个IMAGE_RESOURCE_DIRECTORY结构.结构如下: IMAGE_RESOURCE_DIRECTORY 结构 以ID标识的资源数 2 NumberOfldEntries 6 以名字标识的资源数 2 NumberOfNamedEntries 5 次版本号 2 MinorVersion 4 主版本号 2 MajorVersion 3 资源生成时间 4 TimeDateStamp 2 通常为0 4 Characteritics 1 描述 大小(字节) 名字 顺序 引入函数节 一个引入函数是被某模块调用的但又不在调用者模块中的函数 这个节一般名为.idata,也叫引入表. 它包含从其它(系统或第三方写的)DLL中引入的函数,例如user32.dll,gdi32.dll等. 它的开始是一个IMAGE_IMPORT_DESCRIPTOR数组.这个数组的长度不定,但他的最后一项是全0,可以以此判断数组的结束. 引出函数节 什么是引出函数节 引出函数节是用来向系统提供导出函数的名称,序号和入口地址等信息,以便Windows装载器通过这些信息来完成动态链接的过程. 了解引出函数节对于学习病毒来说,是极为重要的. Api函数地址的获取与引出函数节息息相关. 引出函数节 通过Api函数名查找其地址 (1)定位到PE文件头 (2)从PE文件头中的课选文件头中取出数剧目录表的第一个数据目录,得到导出表的地址. (3)从导出表的NumberOfNames字段得到以命名函数的总数,并以这个数字做微循环的次数来构造一个循环. (4)从AddressOfNames字段指向的函数名称地址表的第一项开始,在循环中将每一项定义的函数名与要查找的函数名比较,如果没有任何一个函数名符合,说明文件中没有指定名称的函数. (5)如果某一项定义的函数名与要查找的函数名符合,那么记住这个函数名在字符串地址表中的索引值,然后在AddressOfNameOrdinals指向的数组中以同样的索引值去除数组项的值,假如该值为m. (6)以m值作为索引值,在AddressOfFunctions字段指向的函数入口地址表中获取的RVA就是函数的入口地址,当函数被装入内存后,这个RVA值加上模块实际装入的基址(ImageBase),就得到了函数真正的入口地址.
满意请采纳
全部回答
PE病毒,又称Win32 PE病毒,或简称Win32病毒。它指所有感染Windows下PE文件格式文件的病毒。因为它通常采用Win32汇编编写,而且格式为PE,因此得名。建议您使用腾讯电脑管家杀毒软件,全面的查杀病毒程序,彻底的清理干净,提供快速扫描、全盘扫描和自定义扫描三种扫描方式:快速扫描针对电脑病毒易感区进行快速扫描,快速直达“病根”;全盘扫描对用户电脑进行全方位查杀,病毒木马无处逃;自定义扫描让用户能根据自己的需求进行扫描,兼具人性化。两大云查杀引擎和趋势本地查杀引擎“三强联合”,超强查杀电脑中存在的顽固木马,能彻底清洁电脑环境,清除电脑病毒 希望可以帮到您了
PE病毒是指所有感染Windows下PE文件格式文件的病毒. 你可以下载一款杀毒软件杀毒,比如腾讯电脑管家 打开腾讯电脑管家--闪电杀毒--全盘扫描--完成 腾讯电脑管家应用了具有“自学习能力”的自研第二代“鹰眼”引擎, 业界首创将CPU虚拟执行技术运用到杀毒软件中, 能够根除顽固病毒、大幅度提升深度查杀能力, 并且大大降低了杀毒软件对用户电脑系统资源的占用率。 同时,沿用“4+1”多引擎架构保证了腾讯电脑管家病毒查杀的稳定性。 误杀率也极低,深受广大用户的认可。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
当他发脾气的时候就像一只凶猛的小老虎是比喻
推荐几个与学习有关的APP
圆通快递或优速快递在广东陆丰内湖能收的到吗
笔记本温度过高 型号是sony s118 谁知道怎么
南开区红太阳素质教育基地
哈尔滨卫生纸厂
我的directx version 9.0c 下好了 咋安不起呀
离开你并不是我唯一 是那首歌的词
光明红木家具怎么样
T/T 90Days是什么意思
巴适的板川味小吃地址在哪,我要去那里办事
昆明到弥勒车票多少钱
idea 怎么导入maven插件
我不是杭州人在杭州交生育保险在异地生育是否
人吉尔朗喜欢星野吗
推荐资讯
天府香城(西北门)地址在什么地方,想过去办事
胜利快捷酒店地址在什么地方,想过去办事
丰田皇冠有哪几种?
给姓袁的男生取名,是属兔的,生日是十月十六
请问唐山地区普通话 什么时候可以考试
江安镇宁通社区公共服务中心怎么去啊,有知道
桌面壁纸,能养鱼的,鱼能动,能喂食
背洞山我想知道这个在什么地方
新技术牙科怎么去啊,有知道地址的么
男女交往的目的是什么?
如何获得我是歌手的门票
账户被冻结,操作失败(t7943)是支付宝账户,谁
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?