加壳与脱壳1. 什么是壳? 2. 加壳与脱壳 3. 加壳的加载过程 4. 脱壳的实现过程壳什么是壳? 在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“ 壳” 了。什么是壳?壳的加载过程 1. 获取壳自己所需要使用的API 地址 如果用PE 编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL 和API 函数很少,甚至只有Kernel32.dll 以及GetProcAddress这个API 函数。 壳实际上还需要其他的API 函数来完成它的工作,为了隐藏这些API ,它一般只在壳的代码中用显式链接方式动态加载这些API 函数壳的加载过程2. 解密原程序的各个区块(Section) 的数据 壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。 壳一般按区块加密的,那么在解密时也按区块解密,并