恶意代码分析-第十八章-加壳与脱壳
目录
笔记:
实验:
Lab18-1
Lab18-2
Lab18-3
笔记:
壳的功能:缩减程序的大小,阻碍对加壳程序的探测和分析
解析函数导入表:1.仅导入LoadLibrary和GetProcessAddress两个函数。先脱出原始文件,再读取原始可执行文件的导入函数信息。
2.保持原始导入函数表的完整,让Windows加载器加载所有的DLL及导入函数---->缺乏隐蔽性
3.为原始导入表中的每个DLL保留一个导入函数,解析时只用查看每个导入库中的一个函数---->比第二个隐蔽性高
4.不导入任何函数,脱壳存根从库中查找所有需要的函数。
尾部跳转:ret call NtContinue ZwContinue 隐藏跳转
识别加壳程序:加壳标识----->导入函数仅有LoadLibrary和GetProcessAddress
只有少量代码被识别
加壳警告
节名中包含加壳的警告
.text原始数据大小为0,但虚拟大小不为0
阕值计算------>压缩或者加密数据更接近于随机数据,因此有一个较高的阕值(Mandiant Red Curtain/Red Curtain)
脱壳:自动脱壳--->PE Explorer
手动脱壳--->1.找到加壳算法,编写一个程序逆向运行它
2.运行脱壳程序,让脱壳存根帮你工作,让它从内存中转储处进程,然后修正PE头部
查找OEP:自动工具----->OllyDump,通过Section Hop调用Find OEP(如果一个call函数没有返回,节与节之间的大跳转)
手动查找----->查找尾部跳转指令(jmp,ret)
在栈上设置读断点
在代码每个循环后面设置断点
在GetProcAddress函数设置断点,多数脱壳器会使用GetProcAddress函数来解析原始函数的导出表
不要让代码执行向上跳
不同程序:1.命令行程序--->Getversion与GetCommandlineA
2.GUI程序------->GetModuleHandleA与Getversion
OllyDbg的Run Trace选项
手动修复导入表:利用OD标注导入函数
常见壳:UPX:压缩壳
PECompact:包含反调试异常和混淆代码
ASPack:自我修改代码-----设置硬件断点
Petite:单步异常---------硬件断点---------每个库至少导出一个函数
WinUpack:有GUI终端的壳优化压缩--------GetModuleHandleA/GetCommandlineA
Themida:复杂,具有反调试与反逆向分析。会在原始程序运行后继续运行。---------ProcDump转储Windows进程的内容
不完全脱壳的情况下分析:并不需要让其完全脱壳再去分析这个程序。进行转储,IDApro分析特定的节,找到一个地址,标记为代码,拿strings分析。
加壳的dll:在OD中加载dll时,DllMain函数会在od中断之前就运行。
解决:定位IMAGE_FILE_HEADER,在0x2000处的值为1,表示是一个DLL文件,但如果为0,表示一个EXE文件。
ProcDump
实验:
Lab18-1
加了壳的软件
明显的尾部跳转
Lab18-2
加壳
使用od插件寻找OEP,然后转化为code
Lab18-3
可以看出来加壳了,但用od插件并不能定位到OEP
查看代码尾部跳转
然而这里也并不能找到OEP
程序的开始位置,有pushfd和pushad的操作把寄存器的值压入栈,当脱壳完成后。这些寄存器的值还会pop出来
所以执行到如图位置后,在esp中下硬件访问断点。
再次运行,停在OEP位置,然后转化为代码
Lab18-4
同样利用上面的那个esp堆栈平衡
Lab18-5
这个壳隐藏了导入信息,同样利用上面的那个esp堆栈平衡
恶意代码分析-第十八章-加壳与脱壳相关推荐
- 学习笔记-第十四章 恶意代码分析实战
第十四章 恶意代码的网络特征 1.网络应对措施. 网络行为的基本属性包括IP地址,TCP端口,以及流量内容等,网络和安全 设备可以利用它们,来提供网络应对措施.根据IP地址和端口,防火墙和路由器可以限 ...
- 20145236《网络攻防》Exp4 恶意代码分析
20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...
- 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
2018-2019-2 网络对抗技术 20165324 网络对抗技术 Exp4:恶意代码分析 课下实验: 实践目标 是监控你自己系统的运行状态,看有没有可疑的程序在运行. 是分析一个恶意软件,就分析E ...
- 2018-2019-2 网络对抗技术 20165320 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165320 Exp4 恶意代码分析 一.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行 分析一个恶意软件,就分析Exp2或Exp3中生成后门软 ...
- Exp4 恶意代码分析 20164303 景圣
Exp4 恶意代码分析 实验内容 实验点一:系统运行监控 (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分析该文件,综述一下分析结果.目标就是找出 ...
- 20155317《网络对抗》Exp4 恶意代码分析
20155317<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用 ...
- 2018-2019-2 20165114《网络对抗技术》Exp4 恶意代码分析
Exp4 恶意代码分析 目录 一.实验目标 (1)监控你自己系统的运行状态,看有没有可疑的程序在运行. (2)分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sys ...
- 20145217《网络对抗》 恶意代码分析
20145217<网络对抗> 免杀原理与实践 知识点学习总结 进行恶意代码分析之前必须具备以下知识:编程.汇编/反汇编.网络基本知识.PE文件结构以及一些常用行为分析软件. 一.在一个已经 ...
- 20155301 Exp4 恶意代码分析
20155301 Exp4 恶意代码分析 实践目标 (1) 是监控你自己系统的运行状态,看有没有可疑的程序在运行. (2) 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用 ...
最新文章
- 我们用了两年的敏捷开发工具
- Service Mesh — APIGW vs ServiceMesh
- python批量清除一个列表中的某个内容,filter和lambda结合使用的方法
- LVS(13)——DR模型准备工作及ip地址冲突问题
- hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?
- mysql8允许外网访问(转载+整理)
- 想申请AI方向硕、博,这个内容一定要提前准备!!
- mysql text类型 使用方法_MySQL使用TEXT/BLOB类型的知识点详解
- Oralce 时间TIMESTAMP的比较
- EasyUI Combobox 设置默认值
- Spring4-使用组件过滤器
- 进销存管理系统源码VS2015
- python根据excel数据生成柱状图并导出成图片格式
- 2020电脑服务器cpu性能天梯图,CPU性能天梯图[202002版]
- Word论文排版技能积累
- chimera添加氨基序列
- 用html代码在word中插入分页符,Word分页符怎么用?Word插入分页符的方法
- IDEA 配置文件位置
- web标准是html5推出的标准,HTML5 标准规范完成了
- windows桌面ui开发
热门文章
- 分享几张golang桌面图片
- 台灣小葉種烏龍茶茶餅不同產區與不同年份的後發酵多酚類成分變化分析
- DELL戴尔外星人笔记本电脑Alienware m18 R1原装出厂Win11系统恢复原厂OEM系统
- Linux使用和管理——从零到系统管理员
- 联通“宽带我世界”356版本破解+破解工具下载
- ncnn填坑记录五:在安卓端运行ncnn
- ubuntu安装kali linux工具,Ubuntu安装Kali工具集:Katoolin
- 英语作文 计算机能否取代老师,雅思写作思路:电脑是否会取代老师
- 正则表达式中小括号、中括号、大括号的作用
- 抖查查参数解析 【2023/03/29】