恶意代码分析-第十八章-加壳与脱壳
目录
笔记:
实验:
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中生成后门软件:分析工具尽量使用 ...
最新文章
- AutoCAD2012打开后一闪的解决方法
- Kubernetes Pod的生命周期(Lifecycle)
- 处理一键安装LNMP环境之后,phpinfo.php打开不显示内容的问题
- 【机器视觉】 dev_set_preferences算子
- opencv android 羽化,学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
- 计算机网络从入门到放弃,自由讨论 | KBQA从入门到放弃—入门篇
- 201712-2-游戏
- sql left join on 多条件_SQL深入理解|关系代数、简单查询、连接
- cryptojs vue 使用_vue 中引入cryptoJS
- 有限元法(Finite Element Method,FEM)原理详解
- 借助 Material You 动态配色丰富您的应用
- 中国电信天翼物联网平台CTWing学习笔记(1)——设备接入(TCP协议)
- android 仿写开发者头条,android高仿今日头条富文本编辑(发布文章)
- linux休眠唤醒后qt无法启动,Ubuntu 18.04 休眠后无法唤醒的解决办法
- python操作sqlite数据库
- python 学习过程中所收藏博客原文链接666666
- composite java_组合模式(Composite)——Java
- 无线打印服务器华硕,华硕远程打印服务器
- 工科数学分析 MA_12 Vectors and the Geometry of Space (上篇)
- 仿新浪微博照片选择器