学习笔记-第十八章 恶意代码分析实战

本文档详细记录了第十八章关于恶意代码分析中的加壳和脱壳实验过程。通过分析五个不同程序,分别揭示了脱壳后的原始程序对应,如18-01对应14-01,18-02对应7-02等。在实验中,使用了IDA进行静态分析,OLLYdbg进行动态调试,包括恢复导入表、查找程序入口点和ESP突变等技术,以确定并修正OEP。
摘要由CSDN通过智能技术生成

第十八章 加壳和脱壳

加壳可执行文件的俩个主要目的是缩减程序的大小,阻碍对加壳程序的探测和分析。
1.剖析加壳 
	恶意代码加壳后,分析人员通常只能获得加壳文件,而不能检测原始程序及加壳器。
	要脱壳一个可执行文件,我们必须解开加壳所执行的操作,首先,我们需要理解加壳
	器的工作原理。
	
	所有加壳器都是将一个可执行文件作为输入,输出一个新的可执行文件。被加壳的可
	执行文件经过压缩,加密或者其他转换,目的是使它们难以被识别,难以被逆向工程分析。
	
	多数加壳器用压缩算法压缩原始文件。设计加壳器的目的是让程序难以分析,加壳器通过加
	密原始可执行文件并且实施一些反逆向技术实现,如对抗反汇编,反汇编和反虚拟机等等。
	
	要保持原程序功能,加壳程序需要存储程序中的导入函数表信息。这些信息可以用任何格式
	存储,它们之间有几个共同的策略,重构程序的导入函数表是以恶具有挑战性且费时的操作,
	但这对分析程序功能十分必要。
	
	<1> 脱壳存根。 执行了以下三个步骤:
		[1].将原始程序脱壳到内存中
		[2].解析原始可执行文件的所有导入函数。
		[3].将可执行程序转移到原始的程序入口点(OEP)Original Entry Point
	<2> 加载可执行文件 当加载一个标准的可执行文件时,加载器会首先读取硬盘上可执行文件的
	PE头部信息,然后根据PE头部信息为可执行文件的各个节分配内存。然后,加载器将这些节复
	制到分配的内存空间中。
	
	<3> 解析导入函数表
	<4> 尾部跳转 一旦脱壳存根完成脱壳,他就必须转到OEP运行。转到OEP的指令通常被叫做尾部
	跳转指令。jump指令是最简单且最流行的转移指令。多数恶意的加壳程序试图使用ret或者call指令
	来隐藏这种行为。有时,恶意代码会使用操作系统转移控制的函数来掩盖尾部
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值