Linux下的加壳软件介绍

加壳保护

"壳"是专门的压缩工具.软件加壳是在程序中加入一程保护作用的代码, 它改变代码本来的面目, 如将原来的代码和数据加密, 以保护程序不被轻易修改, 窃取和反编译, 延长破解时间, 消耗破解者经历. 当加了壳的软件运行时, 壳首先在内存中获取执行权, 对软件解压或解密, 还原软件的原本面目, 然后把执行全交给软件, 软件正常执行.

没有加壳的程序,里面用的一些字符串常量,比如文件路径,写死的密钥都可以通过查看可执行文件得到. 自己可以试一下,用vim编辑程序,搜索代码中的字符串. 加壳软件并不能防止内存dump, 软件运行起来的时候, 就已经脱壳了, 代码中的所有字符串常量都可以通过查看dump文件得到

虚拟机保护

这里的虚拟机和VMWare不同, 它将一系列的指令解释成字节码, 放在一个解释引擎中执行, 以对软件进行保护. 虚拟机保护和加壳保护是不同的, 调试者跟踪代码进入到虚拟机后, 是非常难理解原指令的. 如果跟踪分析虚拟机内的代码执行, 这将是一件非常繁重的工作, 必须对虚拟机引擎进行深入分析. 极大的提高解密者的分析成本. 正是由于这个原因, 目前, 虚拟机保护是一个非常流行的保护方案.
但是虚拟机技术是以效率换安全的, 一条原始汇编指令经过VM处理后会膨胀几十倍甚至几百倍. 执行速度会降低. 所以一般只用来保护比较重要的代码, 这样在一定的程度上确保程序的执行效率.

市场上加壳程序大部分都是windows下的加壳程序.针对linux下的加壳程序比较少

  1. UPX, 开源免费, 是一个压缩型加壳工具.支持多种文件类型加壳, 压缩算法先进, 但没有反调试和保护策略, 能被一些防病毒软件扫描程序检测并解压缩. UPX有一个解压缩开关, 不过有UPX有些保护工具UPXPR, UPX-Scarambler能修改UPX加壳标识, 使UPX自动解压缩功能失效. (经过测试,压缩后之前的明文信息都找不到)

  2. Virbox. 国内的虚拟机加壳公司. 技术支持比较方便. 功能和VMProtect一样.

  3. VMProtect, 国外比较有名软件保护公司. VMProtect 不是一个壳, 他是将代码变形和虚拟化, 处理后能很好的隐藏代码算法, 防止被逆向. 操作界面友好, (测试加壳功能,正常,但是编译选项加上-static的时候,不能加壳.)

  4. Themida. 旗下WinLicense,Code Virtualizer比较有名. Code Virtualizer是一个用虚拟机混淆代码的加壳工具.支持linux, 但是网上已有针对 CV的脱壳. (经过测试,读取不了程序)

总结

  1. VMProtect是国外加壳软件的代表,逆向难度比较大, 不过有两点问题.
    1. 无法对-static编译的程序进行加壳. 虚拟机加壳软件都无法对static编译的程序进行加壳
    2. 由于采用的是虚拟机技术,会对程序运行速度有一定的影响. 经过测试影响不大
  2. UPX. 用起来很好用, 但是没有反调试和保护策略,而且代码开源,研究者比较多. 但是支持static编译

static编译指gcc的-static选项,它会优先选择静态库.这样生成的程序没有人任何依赖,可以跨平台使用.

其他

关于软件保护加密解密相关的东西

  1. 加密壳都能被解开或者脱壳. 保护强度和流行性成正比, 越是流行的工具越可能被广泛深入的研究过, 可能有了通用的脱壳解密方法
  2. 增加软件对自身的完整性检查, 包括对磁盘文件和内存映像的检查, 以防止有人通过修改程序达到破解目的. (目前市场上的软件保护工具自带完整性检查.)
  3. 不要采用一目了然的名字来命名函数和文件. (不大可行,为难开发者)
  4. 尽可能少的给用户提示信息. 提示的信息相当于给破解者提供破解线索.
  5. 软件保护加入一定的随机性,不要启动时就进行检查,比如程序启动一个小时后再进行对keyfile进行检查, 检查失败后再延迟一段时间进行提示. 迷惑破解者.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 壳是一段执行于原始代码前的代码。原始程序的代码在家可的过程中可能被压缩、加密等,当加壳后的文件执行时,壳这段代码先...
    plutoG7阅读 1,847评论 0 6
  • 完美的免杀方法到目前为止,要实现恶意软件的“FUD”,加密恶意代码被认为是个不错的选择,不过有几点要注意:1.恶意...
    极客圈阅读 1,130评论 0 2
  • 转载于 http://www.uml.org.cn/mobiledev/201211063.asp#2 紧接连载三...
    ghroost阅读 1,486评论 2 17
  • 1. 引言 功利性的读是为了消化一本书,进而用知识改变生活。 什么样的程度算是消化了一本书呢? 理解达的核心概念或...
    马骋阅读 1,036评论 0 3
  • “村里有个姑娘叫小芳, 长得好看又善良。 一双美丽的大眼睛, 辫子粗又长···”一首《小芳》,记忆悠长。 在那个初...
    夜半鸣阅读 360评论 2 1