[系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
作者前文介绍了PE文件格式,熟悉各种PE编辑查看工具,针对目标EXE程序新增对话框等;这篇文章将介绍Windows PE病毒, 包括PE病毒原理、分类及感染方式详解,并通过案例进行介绍。这些基础性知识不仅和系统安全相关,同样与我们身边的APP、常用软件及操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。本文参考了《软件安全》视频、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。
文章目录:
一.PE文件
二.PE病毒概念
三.PE病毒的分类
四.传统文件感染型
1.感染思路
2.PE病毒典型案例
3.关键技术
五.系统感染型
1.控制权再次获取
2.病毒的传播方式
六.捆绑释放型
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!
接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~推荐前文:网络安全自学篇系列-100篇
https://blog.csdn.net/eastmount/category_9183790.html
话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好或侵权的地方,可以联系我删除。基础性文章,希望对您有所帮助,作者目的是与安全人共同进步,加油~
作者的github资源:
逆向分析:https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:https://github.com/eastmountyxz/
NetworkSecuritySelf-study
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)
一.PE文件
什么是PE文件?
PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。
EXE文件格式:
DOS:MZ格式
WIndows 3.0:NE(New Executable)、16位Windows可执行文件格式
为什么要重点学习这种文件格式呢?
PE文件是可移植、可执行、跨Win32平台的文件格式
所有Win32执行体(exe、dll、kernel mode drivers)
知道PE文件本质后,能更好进行恶意样本分析、APT攻击分析、勒索病毒分析
了解软件加密和加壳的思想,能够PJ相关的PE文件
它是您熟悉Windows操作系统的第一步,包括EXE程序怎么映射到内存,DLL怎么导入等
软件逆向工程的基本思想与PE文件格式息息相关
如果您想成为一名黑客、系统安全工程师,那么精通PE文件是非常必要的
可执行程序是具有不同的形态的,比如用户眼中的QQ如下图所示。
本质上,QQ如下图所示。
PE文件格式总体结构
接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节表、节等。
上一篇文章我们对PE文件格式进行详细解析。比如,MZ头文件是定位PE文件头开始位置,用于PE文件合法性检测。DOS下运行该程序时,会提示用户“This Program cannot be run in DOS mode”。
PE文件格式与恶意软件的关系
何为文件感染或控制权获取?
使目标PE文件具备或启动病毒功能(或目标程序)
不破坏目标PE文件原有功能和外在形态(如图标)等
…病毒代码如何与目标PE文件融为一体呢?
代码植入
控制权获取
图标更改
Hook
…
PE文件解析常用工具包括:
PEView:可按照PE文件格式对目标文件的各字段进行详细解析。
Stud_PE:可按照PE文件格式对目标文件的各字段进行详细解析。
OD和IDA:可跟踪目标程序的执行过程,属于用户态调试工具。
UltraEdit \ 010Editor:可对目标文件进行16进制查看和修改。
二.PE病毒概念
什么是PE病毒?
PE病毒又称为Win32 PE病毒,或称为Win32病毒。它指所有感染Windows下PE文件格式文件的病毒。因为它通常采用Win32汇编编写,而且格式为PE文件,因此而得名。PE病毒是以Windows PE程序为载体,能寄生于PE文件或Windows系统的病毒程序。真正的病毒技术在PE病毒中才会得到真正的体现,所以对于一个黑客、骇客或者是热衷于病毒分析技术的程序员,是非常有必要进行学习PE病毒的编写的。
PE病毒数量非常之多,下面介绍三种经典的病毒。
CIH病毒
早期病毒,全球第一个可以破坏计算机硬件的病毒,它会破坏主板的BIOS,对其数据进行擦写修改。CIH病毒是一种能够破坏计算机系统硬件的恶性病毒。这个病毒是TW陈盈豪在念书期间制作,后通过网络传播到全世界各个角落。CIH的载体是一个名为“ICQ中文Chat模块”的工具,并以热门盗版光盘游戏如“古墓奇兵”或Windows95/98为媒介,经互联网各网站互相转载,使其迅速传播。传播的主要途径主要通过Internet和电子邮件,当然随着时间的推移,其传播主要仍将通过软盘或光盘途径。CIH病毒曾入榜全球十大计算机病毒之首,该病毒引起了许多重要部门的严密关注。
熊猫烧香
熊猫烧香(Worm.WhBoy)是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,它不但能感染系统中exe、com、pif、src、html、asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件。该文件是一系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。被感染的用户系统中所有.exe可执行文件全部被改成熊猫举着三根香的模样。2006年10月16日由25岁的湖北武汉李俊编写,2007年1月初肆虐网络,它主要通过下载的文件传染传播。
WannaCry蠕虫
2017年5月12日,WannaCry蠕虫通过永恒之蓝MS17-010漏洞在全球范围大爆发,感染大量的计算机。WannaCry勒索病毒全球大爆发,至少150个国家、30万名用户中招,造成损失达80亿美元,已影响金融、能源、医疗、教育等众多行业,造成严重的危害。
WannaCry是一种“蠕虫式”勒索病毒软件,由不法分子利用NSA泄露方程式工具包的危险漏洞“EternalBlue”(永恒之蓝)进行传播。该蠕虫感染计算机后会向计算机中植入敲诈者病毒,导致电脑大量文件被加密。WannaCry利用Windows系统的SMB漏洞获取系统的最高权限,该工具通过恶意代码扫描开放445端口的Windows系统。被扫描到的Windows系统,只要开机上线,不需要用户进行任何操作,即可通过共享漏洞上传WannaCry勒索病毒等恶意程序。
什么叫感染?
说到病毒,不得不提感染。感染是指在尽量不影响目标程序(系统)正常功能的前提下,而使其具有病毒自身的功能。什么叫病毒自身的功能呢?一个病毒通常包括如下模块:
感染模块: 被感人程序同样具备感染能力
触发模块: 在特定条件下实施相应的病毒功能,比如日期、键盘输入等
破坏模块: 网络攻击行为,推荐攻击链或ATT&CK
其他模块
如果我们要编写PE病毒,则需要掌握以下的关键:
病毒的重定位
获取API函数地址
文件搜索
内存映射文件
病毒如何感染其他文件
病毒如何返回到Host程序
三.PE病毒的分类
PE病毒分类方式很多,其中以感染目标进行分类,包括:
(1) 系统感染
将代码或程序寄生在Windows操作系统,该类病毒越来越多,它不感染具体文件,但是它会在操作系统中保存自己的实体。同时也可以通过系统启动的方法来获取控制权。传播途径包括:
即时通信软件,如QQ尾巴
U盘、光盘
电子邮件
网络共享
其他途径
(2) 文件感染
将代码寄生在PE文件,病毒本身只是PE文件的一部分,依赖于感染目标,通常也叫HOST文件,控制权获得也是以目标程序运行来获得的。分为:
传统感染型:以Win32汇编程序编写为主
捆绑释放型:编写难度较低,通过高级语言均可编写,将目标程序和病毒程序捆在一起,和捆绑器有相似之处
四.传统文件感染型
1.感染思路
作者前面详细分析了PE文件格式,参考:
当了解PE文件格式之后,要了解PE文件感染型病毒就非常容易了。如下图所示,左边是一个正常的PE文件,右边是PE病毒感染该程序时的修改,可以看到病毒代码在最后面,通常它是一种新节的形式。我们知道PE文件是由多个节组成的,病毒代码为了融入目标程序会以节的形式,同时修改PE文件头。
对感染来说,它一方面需要使得对方具备自己的功能,另一方面也不破坏对方程序的功能。所以病毒代码执行完毕之后,它必须要将控制权交给原始程序,从而防止病毒被发现。
优点: 被感染后的程序主题依然是目标程序,不影响目标程序图标,隐蔽性稍好
缺点: 对病毒代码的编写要求较高,通常是汇编语言编写,难以成功感染自校验程序
2.PE病毒典型案例
下面是演示案例,感染本目录下的test.exe文件,它没有破坏性,tset.exe被感染后,首先执行病毒代码,然后执行自身代码。如下图所示,存在四个文件。其中main.exe是PE病毒程序,它会感染当前目录下名为“test.exe”的文件。这里仅是测试PE病毒感染代码,没有破坏功能。
calc.exe:计算器
notepad.exe:记事本
test.exe:测试PE文件
main.exe:PE病毒程序
第一步,我们尝试打开test.exe文件。它是一个正常的PE文件,前面的文章也分析过,它包括两个弹窗,如下图所示。
第二步,使用OD打开test.exe如下图所示,发现起始地址为0x00401000,该exe程序大小为2.50KB。
第三步,运行main.exe程序,它是PE病毒。注意,它会弹出如下图所示对话框,这是为了方便演示,而真实的PE病毒不会提示你信息。程序是两位大佬所写,其中一位是Hume前辈,另一位 ^ _ ^
同时,如果360会查杀该病毒,添加信任即可。但当我们在真实恶意样本分析时,一定要在虚拟机等有保护环境下进行。
IDA分析mian.exe如下图所示:
第四步,此时test.exe文件大小已经增加为6.50KB,说明其已经被恶意感染。
双击test.exe显示如下图所示,它会先弹出一个感染测试对话框,然后才是接下来的正常程序对话框。
用OD动态分析,发现程序入口地址是0x004042DC。说明该程序先执行PE病毒,之后才执行正常的程序,而真实的PE病毒不会只简单的弹出提示窗口,而会隐蔽的进行一些破坏或收集信息。
第五步,将被感染的“test.exe”重命名为“test-ok.exe”,然后将记事本修改为“test.exe”,因为我们的代码只感染当前目录下“test”命名的文件。
接着运行“test-ok.exe”程序,发现打开记事本也会弹出如下图所示的对话框,接着才是记事本,说明该程序也被感染。
第六步,通过同样的方法感染计算器程序,重命名为“test.exe”文件,如下图所示。
写到这里,该案例就演示完毕,这是一个传统典型的PE病毒感染示例。
3.关键技术
(1) 重定位
重定位是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。由于DLL文件会加载到不同位置,为防止AV地址定位出错,该技术常见于DLL文件中。
病毒程序同理,它有相应的代码去感染目标程序,但如果目标程序众多,病毒程序究竟写入到目标程序的什么位置呢?因此,PE病毒也需要病毒代码去定位目标程序的位置,即利用重定位技术实现。
关键点:病毒代码目标寄生位置不固定
shellcode类似:通常需要注入远程系统,但这段代码在远程系统什么位置有时并不能确定,另外远程系统的环境有时也不能准确感知,故需要使用重定位技术
① 首先,为什么需要重定位呢?
下面是通过mas32编译生成的一段源代码(PE最小文件案例)。该源代码是通过invoke调用MessageBox函数(四个参数),接着invoke调用ExitProcess退出程序。该位置弹出的对话框涉及两个字符串szCap和szMsgOK。
invoke MessageBox, NULL, addr szMsgOK, addr szCap, 40h+1000h
invoke ExitProcess, NULL
当该程序编译后,反汇编结构显示如下图所示。
其中Start位置的MessageBox函数包括四个参数,采用PUSH压入堆栈,再通过CALL调用该函数。
push offset off_00401000
push offset off_00401014
上图中红色圆圈显示的是PE文件代码的二进制部分,它是一个VA的地址,即:RVA+ImageBase。程序编译后,某些VA地址(如变量Var 004010xxh)就已经以二进制代码的形式固定,这就是需要重定位的原因。
下图展示正常情况的ImageBase,其值为400000H。比如HEX数据为“00104000”,所以对应的地址是“00 40 10 00”(高位在后)。
如果ImageBase为600000H,则代码不做重定位,PUSH压入堆栈的值为401000和401014。而此时的值什么也不是,通过数据窗口定位地址发现不存在。左下角可以看到,00601000位置才是存放的数据。所以,重定位需要将这里的40修改为60。
总之,如果病毒代码插入位置不固定,也会遇到类似的问题。病毒代码必须通过重定位解决类似的问题。
② 病毒代码植入HOST文件后的位置差异。
在下图中,左边是病毒在感染前的VAR位置,其地址为004010xx;当该代码插入到另一个HOST文件后,如右图所示,变量的实际位置和预期位置出现了差异,而重定位的关键是知道这个差异是多少,后续遇到的各种变量或地址都可以通过这种差异方式校正。
重定位本质:修正实际地址与预期地址差异
但根据HOST特征逐一硬编码这种方式不太可取,其繁琐且未必准确,所以采用另一种方法,病毒代码运行过程中自我重定位。
下图展示了病毒代码自我重定位的过程。
第一步,计算差异值;
第二步,调用call delta将下一条语句开始位置压入堆栈,此时堆栈顶端存放的是pop ebp语句,它在内存中是真实的地址;
第三步,做sub减法操作,ebp减去offset delta;
第四步,当需要重定位时,比如使用varl变量,重定位通过ebp+offset来消除差异,此时eax中存放varl在内存中的真实地址。
(2) API函数自获取
首先介绍下PE文件函数节的功能。
当调用外部DLL中的API函数时,通过引入函数节将这种关系定义出来;系统加载时就能加载对应的DLL文件并找到相应的API函数,再将地址写入到PE文件的引入函数表中;程序运行时就直接从引入函数表中取地址进行调用,这是正常的PE文件运行过程。通常函数节是由目标程序作者编写。
然而,对于病毒程序来说,它是一段代码,当它感染另外一个程序时,它是否能修改目标程序的引入函数节,而使得其可以服务病毒代码呢?
从原理上来说,这是可以实现的,但是过程非常复杂,因为在引用函数节添加内容一定会导致其他结构的变化,需要做很多的修正工作,这可能会导致原有功能被破坏。所以,对于病毒来说,它需要自己去获取API函数地址,并且在没有引入函数节支撑的情况下,又必须要使用很多API函数来实现病毒的功能。
关键点:需要使用的API函数,但无引入函数节支撑
shellcode类似:需要使用API函数自获取技术来确定注入远程系统的位置
① 如何获取API函数地址呢?
DLL文件的引出函数节
Kernel32.dll:核心API函数为 GetProcAddress和LoadLibraryA
② 当获得GetProcAddress和LoadLibraryA地址后,想获取任何一个API函数地址都可以。那么,怎么获取这两个函数的地址呢?
首先,获得kernel32.dll的模块加载基地址。一种方法是采用硬编码(兼容性差),另一种方法通过Kernel模块中的相应结构和特征定位
其次,通过Kernel32.dll的引出目录表结构定位具体函数的函数地址
③ 接着,分享获取Kernel32模块基地址的典型方法。
定位Kernel32模块中任何一个地址,然后按照模块首地址特征(对齐于10000H,PE文件开始标识MZ)向低地址遍历定位PE文件头
Kernel32模块内的地址从何处获得?
- 程序入口代码执行时Stack顶端存储的地址
- SEH链末端
- PEB相关数据结构指向了各模块地址
- Stack特定高端地址的数据
注意:不同操作系统存在差别
(3) 目标程序遍历搜索
目标程序遍历搜索通常以PE文件格式的文件(如EXE、SCR、DLL等)作为感染目标。在对目标进行搜索时,通常调用两个API函数:
FindFirstFile
FindNextFile
其关键点为全盘查找或者部分盘符查找,遍历算法包括递归或非递归。搜索目标进行感染算法如下图所示:
(4) 文件感染
感染的关键是病毒代码能够得到运行,常用方法包括:
选择合适的位置放入病毒代码(已有节、新增节)
将控制权交给病毒代码,如修改程序入口点AddressofEntryPoint
在原目标代码执行过程中运行病毒代码(EPO技术,EntryPoint Obscuring)
同时,病毒代码执行时,程序的正常功能不能被破坏,即控制权的交换。
感染时,记录原始“程序控制点位置”
病毒代码执行完毕后,返回控制权
避免重复感染,感染标记
下面介绍感染文件的基本步骤,包括八个常见的步骤。
五.系统感染型
系统感染型本身不对PE文件做任何感染操作,但它感染的目标是操作系统,是一种寄生类的方式,只是寄生目标有所不同。这类病毒通常为独立个体,不感染系统内的其他文件。
两个关键问题:
如何再次获得控制权——自启动
由于该程序不感染PE文件,它没有HOST文件,所以如何再次获得控制权是一个关键性问题,也是目标很多病毒程序设计时不得不考虑的问题。此时和操作系统自启动相关,病毒必须依赖于该机制再次获得控制权。如何传播
可移动存储介质(U盘、硬盘刻录光盘等)
网络共享
电子邮件或其他应用
1.控制权再次获取
下面简单讲解控制权再次获取的自启动方式。首先看看操作系统启动流程:
BIOS --> 硬盘MBR --> 活动分区DBR --> 系统内部
整个启动流程也是控制权传递的过程,包括现在提出的可信计算,也是对控制权一步一步的校验,控制流程的数据完整性或行为的校验。对于操作系统本身,它的启动方式很多,系统内部包括(后续文章可能会复现不同的方式):
注册表中的键值
系统中的特定位置
配置文件
特定路径的特定文件,如Explorer.exe(显示桌面)
下图展示了Autoruns软件看到Windows操作系统进行自启动的选项。如果病毒本身能很好地结合这套机制,它可以做的事情非常多,并且具有很好的隐蔽性,比如前面分析的熊猫烧香病毒。
其他启动方式:
利用系统自动播放机制Autorun.inf
比如U盘病毒或光盘病毒就是利用U盘或光盘的自动播放功能。目前,也有一些U盘插入之后,不需要你去双击这个U盘,里面的程序就会自启动。在其他可执行文件嵌入少量触发代码
修改引入函数节启动DLL病毒文件(添加相应结构,初始化代码触发)
在特定PE文件代码段插入触发代码等(只需定位可执行程序并运行)DLL劫持:替换已有DLL文件
很多应用程序或操作系统执行时,都会去执行DLL文件,如果病毒将自身做成一个DLL文件,同时将系统DLL文件替换。可想而知,系统启动时,它是根据文件名启动的,此时病毒DLL文件就会拿到控制权,如果拿到控制权之后再进一步装载原始DLL文件,这样系统的本身机制也不会受到影响,隐蔽性更强。该方法非常常见,甚至有一些病毒程序将反病毒软件可依赖的DLL文件替换。
2.病毒的传播方式
一切可对外交互的渠道都可传播,包括:
各类存储设备(软盘、光盘、U盘、移动硬盘、智能设备)
各类网络通信方式(QQ、MSN、Email、淘宝旺旺、微信、微博等)
各类网络连接方式(有线、wifi、蓝牙等)
各类网络应用(迅雷、BT等)
邮件蠕虫越来越常见,其中以邮件附件的形式进行传播较多。附件中可能包含病毒包括exe文件、rar文件、pdf文件、doc文件、xls文件、jpg文件、chm文件等。下图是一个包含病毒的邮件附件,显示为一个word文档,后缀名doc,图标显示也是word。但它的真实后缀是scr(屏保),它其实是利用了一种技术,在文件名里插入翻转字符,然后将翻转字符之后的其他字符进行了翻转,它的完整文件名应该是“5月TW行lmcod.scr”。这也是一种欺骗性很强的攻击手法。
再补充一个通过可移动存储设备传播的非感染式病毒,即Autorun.inf。右图显示了Autorun.inf文件,如果文件存在U盘根目录,当我们双击这个U盘时,它就会触发对应的病毒,如果选择U盘盘符右键打开或打开资源管理器,这是进入的也是病毒程序。当然下面的演示是计算器程序。
[AutoRun]
open=mspaint.exe
shell\open=打开(&O)
shell\open\Command=calc.exe
shell\open\Default=1
shell\explore=资源管理器(&X)
shell\explore\Command=calc.exe
还有一类是伪装的文件夹,如下图所示photo.exe文件,当Windows操作系统默认不显示“.exe”时,它就能伪装成文件夹,当我们双击之后就会运行病毒,同时可以打开某个文件夹进行隐蔽。
最后补充“摆渡”知识点,这种攻击行为经常发生在一些具有特殊目的病毒程序身上。期望通过可移动的媒介来渗透一些平时不联网的电脑中,并从中获取数据,利用摆渡的方式植入病毒或木马到内网,比较典型的案例就是Stuxnet(震网事件)。
下图展示了Stuxnet震网事件的漏洞利用过程和启动方式,传统的Autorun方式很容易被禁止掉,而Stuxnet利用的是lnk漏洞(MS10-046),它会在目标U盘下放入lnk快捷方式及病毒程序(如DLL文件)。不管通过什么方式进入U盘,lnk文件会被解析从而触发漏洞,导致U盘中的病毒程序被执行。
六.捆绑释放型
捆绑释放型感染实现起来比较简单,目前很大一部分病毒程序都采用这种方法。捆绑释放型感染时将目标HOST程序作为数据存储在病毒体内,当执行病毒程序时,它先执行病毒程序,然后还原并执行HOST文件,从而保证被感染的程序本身能正常运行,不会引起一些异样。
熊猫烧香病毒
左边是一个正常程序(QQ),感染之后会将病毒放在前面,正常程序放在后面,程序运行之后,病毒会拿到控制权。但是程序图标会显示前面的病毒程序,显示熊猫烧香,这也是一个明显的被感染特征。优点: 编写简单、效率高,可感染自校验程序
缺点: 被感染后的程序主体是病毒程序,易被发现(程序叠加+释放执行),程序图标问题
七.总结
写到这里,这篇文章就介绍完毕,通过这些PE病毒原理、分类及感染方式的讲解,有利于大家去做一些拓展和思考,也体现出当下的网络形式,存在很多安全隐患,安全防御是非常必要的。
PE病毒概念
PE病毒的分类
传统文件感染型
捆绑释放型
系统感染型
后续将学习PE文件图标修改、对话框分析、EXE解析、加壳解密等。希望这系列文章对您有所帮助,同时真的感觉自己技术好菜,要学的知识好多。未知攻焉知防,人生漫漫其路远兮,作为初学者,自己真是爬着前行,感谢很多人的帮助,继续爬着,继续加油!
学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。
前文回顾(下面的超链接可以点击喔):
[系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。2021年继续加油!
(By:Eastmount 2021-02-01 周一夜11点)
参考文献:
[1] 武大《软件安全》课程
[2] 小伙伴们PPT及视频
[3] MOOC《软件安全之恶意代码机理与防护》
[4] PE文件学习系列一为什么是PE - Egojit