运行软件之前我们先要知道什么是壳
“壳”是专门的压缩工具.软件加壳是在程序中加入一程保护作用的代码, 它改变代码本来的面目, 如将原来的代码和数据加密, 以保护程序不被轻易修改, 窃取和反编译, 延长破解时间, 消耗破解者经历. 当加了壳的软件运行时, 壳首先在内存中获取执行权, 对软件解压或解密, 还原软件的原本面目, 然后把执行全交给软件, 软件正常执行
没有加壳的程序,里面用的一些字符串常量,比如文件路径,写死的密钥都可以通过查看可执行文件得到. 自己可以试一下,用vim编辑程序,搜索代码中的字符串. 加壳软件并不能防止内存dump, 软件运行起来的时候, 就已经脱壳了, 代码中的所有字符串常量都可以通过查看dump文件得到
软件界面
祯壳
我们找一个测试软件拖入该祯壳软件,会得到一些数据,来判定软件是否加壳
然后我们得到了.text
这个代码一般情况下都是没有加壳,也不否定一些壳的伪装词条
下面就来看一下加壳的软件的词条,就以软件内容修改工具
为例
看这一段直接空,说明我加壳的时候没有设置这段的伪装
EP区段有时候会显示vmp或者UPX 这两个是市面上最常见的加壳软件
常见的加壳软件介绍
UPX
, 开源免费, 是一个压缩型加壳工具.支持多种文件类型加壳, 压缩算法先进, 但没有反调试和保护策略, 能被一些防病毒软件扫描程序检测并解压缩. UPX有一个解压缩开关, 不过有UPX有些保护工具UPXPR,UPX-Scarambler
能修改UPX加壳标识, 使UPX自动解压缩功能失效. (经过测试,压缩后之前的明文信息都找不到)Virbox
. 国内的虚拟机加壳公司. 技术支持比较方便. 功能和VMProtect一样.VMProtect
, 国外比较有名软件保护公司.VMProtect
不是一个壳, 他是将代码变形和虚拟化, 处理后能很好的隐藏代码算法, 防止被逆向. 操作界面友好, (测试加壳功能,正常,但是编译选项加上-static
的时候,不能加壳.)Themida
. 旗下WinLicense,Code Virtualizer 比较有名.Code Virtualizer 是一个用虚拟机混淆代码的加壳工具.支持linux, 但是网上已有针对 CV的脱壳. (经过测试,读取不了程序)
关于软件保护加密解密相关的东西
- 加密壳都能被解开或者脱壳. 保护强度和流行性成正比, 越是流行的工具越可能被广泛深入的研究过, 可能有了通用的脱壳解密方法
- 增加软件对自身的完整性检查, 包括对磁盘文件和内存映像的检查, 以防止有人通过修改程序达到破解目的. (目前市场上的软件保护工具自带完整性检查.)
- 不要采用一目了然的名字来命名函数和文件. (不大可行,为难开发者)
- 尽可能少的给用户提示信息. 提示的信息相当于给破解者提供破解线索.
- 软件保护加入一定的随机性,不要启动时就进行检查,比如程序启动一个小时后再进行对
keyfile
进行检查, 检查失败后再延迟一段时间进行提示. 迷惑破解者.
暂无评论内容