什么是壳 ? 壳的作用是什么?
简单举个例子:鸡蛋
“ 鸡蛋壳 ” 也是壳,其作用就是保护里面的蛋白和蛋黄。
“ 软件上的壳 ” 本质上就是代码,但是我们形象的称之为壳。其作用就是保护程序,确切的说是隐藏OEP( 原始入口点 )
在吃鸡蛋的时候,我们要做的第一件事,就是“ 脱壳 ”。
同样的,“ 软件上的壳 ”也是类似的,程序在运行的时候,首先就是运行壳的代码(程序自己给自己脱壳),当执行完壳代码后,再跳转到OEP(原始入口点)去执行程序本身的代码。
那么怎么辨别软件是否被加了壳?
上面我们简单明了的知道了什么是壳 (本质上就是代码 ),以及壳的作用是什么( 保护程序,隐藏OEP )。那么,如何区分程序有没有被加壳呢?
以VS2017编写的一个控制台程序为例,简单输出一句话。
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("这是VS2017编写的程序,Debug版本\n");
system("pause");
return 0;
}