逆向分析——壳
你脑海中的壳是什么
壳在自然界是动物的保护壳,软件同样有保护壳,为了防止破解
也许大海给贝壳下的定义是珍珠,也许时间给煤炭下的定义是钻石
——沙与沫
壳的由来
在DOS时代,壳一般指的是磁盘加密软件中的一段加密程序
后来发展为LZEXE之类的压缩壳,加EXE文件压缩之后,在文件上加一层在软件执行时自动将文件解压缩的壳,以达到压缩EXE文件的目的
随着软件保护需求的日益旺盛,出现了加密壳,使用各种反跟踪技术保护程序不被调试,脱壳等
有商业壳,也有个人开发的壳
很多木马和病毒是用壳来保护自己的
对于私人壳,很多杀毒引擎会直接把壳当成木马和病毒处理
更多商家依赖于加密算法
公开的壳会有人去研究,就会有脱壳软件,但是没有脱壳软件的就需要我们自己手动脱壳
压缩壳
侧重于压缩的壳,压缩壳可以减少软件的体积,加密保护不是重点
UPX
有DOS,Linux和Windows版本
ASPack
是一款Win32可执行文件压缩软件,可压缩Win32可执行文件EXE,DLL,OCX
加密壳
ASProtect
是一款功能强大的Win32保护工具
有压缩,加密,反跟踪代码,CRC校验和花指令等保护措施
Armadillo
Armadillo是穿山甲的意思
正在上传…重新上传取消
有Public和Custom两个版本
可以为软件加上多种限制,包括时间,次数,启动画面等
有“CC保护”,扫描程序,处理标签里的跳转指令,将所有跳转指令换成INT3指令,机器码是CC,Armadillo是双进程运行的,子进程遇到CC异常,父进程会截获这个INT3异常,计算出跳转指令的目标地址并将其反馈给子进程,使子进程继续运行
EXECryptor
为目标软件添加注册机制,时间限制,使用次数等附加功能
Themida
是一款商业保护软件
用了虚拟机保护技术,在程序中善用SDK
缺点:生成的软件体积有点大
虚拟机保护的软件
虚拟机介绍
是一个由编译器,解释器和虚拟CPU环境组成的
会严重影响代码的性能,用效率换安全
脱壳
加载过程
比原代码更早地获取控制权,壳修改了原程序执行文件的组织结构
壳一般会加密原程序文件的各个区块,解密时按区块解密,把解密的区块数据按照区块的定义放在内存中合适的位置
IAT的初始化
IAT的填写本来应该由PE装载器实现,但由于在加壳时构造了一个自建输入表
程序的原始输入表被外壳变形后存储,IAT的填写会由外壳程序实现
手动脱壳
分为三步:
1.查找真正的程序入口点
2.抓取内存映像文件
3.重建PE文件
寻找OEP
根据跨段转移指令就可以找到程序真正的入口点了
- 点赞
- 收藏
- 关注作者
评论(0)