源彩趴究壳的定义“壳”的具象理解就类似花生壳用来保护里面的花生仁。人想吃到里面果实就需要将其剥掉。软件也存在这样类似的东西这种东西我们也称之为“壳”两者的目标都是一样的都是用来保护而“壳”用来保护可执行程序资源避免被其他人窥探和篡改但是壳又不会改变或影响原程序的功能。壳根据加密和非加密的技术手段来作分类一般分为两类压缩壳非加密加密壳无论哪种技术手段加壳的流程都是大致是相同的。我们给自身软件加壳后就会产生出一个新程序新程序是由壳和原程序两部分组成。系统在执行这个新程序的时候先去执行壳程序由壳对原程序进行解压或解密并还原到内存中去系统将正常执行原来的程序。由此了解的壳的定义新程序已加壳 壳程序 加壳流程 原程序加壳原理开发人员对原程序加壳的工作流程加壳原理压缩/加密对原始程序的代码段、数据段等关键部分进行压缩或加密使其变成一堆“乱码”。植入外壳生成一个外壳程序并将加密/压缩后的原始程序数据作为一部分附加在这个外壳程序后面。修改入口点修改生成的可执行文件的“程序入口点”OEP, Original Entry Point使其指向外壳程序的代码而不是原始程序的代码。image加壳后的程序在系统里的执行流程用户双击启动加壳后的程序。操作系统加载器将程序读入内存。此时内存中的代码是外壳的代码原始程序部分仍是加密/压缩状态。CPU 开始执行外壳代码。外壳程序开始工作检查自身是否被调试。解密 或 解压缩 内存中的原始程序数据。进行必要的环境修复如重建导入表。外壳程序将 CPU 的执行流跳转到原始程序的真正入口点OEP。至此原始程序开始正常运行和执行原程序一样效果。脱壳原理理解了加壳后脱壳就很好理解了就是逆回来操作一次。什么是脱壳摘掉壳程序将加密/压缩后可执行文件还原出来。脱壳的基本原理脱壳的核心思想是 “内存转储”。因为无论外壳多么复杂加密多完好它最终都必须在内存中将原始程序完整地、可执行地还原出来。 脱壳就是要抓住这个瞬间。脱壳的方法image对抗与演进加壳与脱壳就像是一场永无休止的“军备竞赛”。壳的进化出现了 VMProtect、Themida 等“强壳”。它们使用虚拟机保护技术将原始代码翻译成自定义的指令集极大地增加了分析和脱壳的难度。脱壳技术的进化出现了自动脱壳机、脚本、以及更高级的动态和静态分析技术专门研究反虚拟机保护技术的人员。