lyl610abc 发表于 2021-4-10 22:21

从零开始构造加密壳系列 一 加壳原理

本帖最后由 lyl610abc 于 2021-4-10 22:24 编辑

# 前言

论坛里有不少优秀前辈们的脱壳破解教程,但是关于加壳的内容比较少,于是就打算出一个加壳系列

加壳系列将一步步**构建一个简单的加密壳**,进一步巩固PE文件的知识

正所谓知己知彼,百战不殆。只有在了解壳是怎么来的这个前提下,才能更好地脱壳

加壳离不开PE文件的相关知识,有关PE的相关知识可以查看先前的系列:(https://www.52pojie.cn/thread-1391994-1-1.html)

该篇为:加壳系列一;主要介绍一下加壳的原理,为后续作铺垫

------

# 加壳原理

## 什么是壳

所谓的壳,其实就是给程序套上一层外壳;

- 通过加壳,可以**增加逆向分析代码的难度**,在一定程度上**保护软件代码的安全**
- 通过加壳,可以**压缩程序的大小**,使程序占用的空间更小

也可以将壳称为一种**补丁**

## 壳的种类

壳大致可以分为两种:压缩壳和加密壳

- 压缩壳:压缩程序的大小,减小空间占用
- 加密壳:反调试、反跟踪,保护程序

常见的压缩壳:ASPack、UPX

常见的加密壳:ASProtect、Armadillo、 EXECryptor、Themida、VMProtect

------

## 加壳的基本思路

### 极简版基本思路

1. 保存相关信息到补丁并加密程序
2. 修改程序入口为补丁地址
3. 补丁根据先前保存的信息还原和解密程序
4. 补丁最后返回原本的程序入口

------

### 简略版基本思路

1. 将原本程序的PE相关代码复制到补丁中
2. 加密程序
3. 修改程序入口点,使得程序启动后会先运行补丁程序
4. 补丁程序会根据先前复制的相关代码对程序进行解密和还原,使得程序能够正常运行
5. 还原后再返回执行原本的入口点

------

### 详细版基本思路

1. 在PE文件中**开辟空间**用于存储补丁代码
2. 复制扩展PE头中的数据目录表(DataDirectory)的内容到存储补丁的空间中,复制完后**清空**原本的数据目录表
3. **修正**复制过去的数据目录表的内容
4. 对修正完的数据目录表**之后的数据**(不包括补丁部分)进行**加密**
5. 修改PE文件的**程序入口**为补丁代码
6. 补丁代码**还原**前面被清空的**数据目录表**
7. 补丁代码**解密**先前加密的数据
8. 补丁代码加载导入表中需要**导入的DLL**
9. 补丁代码**修正IAT**
10. 补丁代码执行完后**返回原本的程序入口**

------

## 加壳后的程序结构

!(https://610-pic-bed.oss-cn-shenzhen.aliyuncs.com/image-20210410201300294.png)

------

# 总结

- 前面所给出的只是加壳的基本思路,实际中的壳千变万化,**不一定完全按照基本思路来**,但基本套路如是
- 加壳的**难点**在于将数据目录项**复制**到补丁代码部分,并**修正**复制后的数据目录项
- 加壳中加密的核心是**加密算法**

------

涛之雨 发表于 2021-4-11 10:30

本帖最后由 涛之雨 于 2021-4-11 10:34 编辑

{:301_1001:}vmp用不好,就变成了第三类壳:增积壳{:301_1001:}
作用:虽然没有虚拟化保护软件关键函数,但是可以增加软件体积,吓唬破解者,顺便增加检测虚拟机或是调试器附加的功能

lyl610abc 发表于 2021-4-14 16:25

Hmily 发表于 2021-4-14 16:17
我建议你同步进行,也许论坛这个平台你可以找到更好的选择。

主要我自己不是特别着急,打算将自己学过的内容复习巩固后再去投简历面试
目前大四,还没有投过简历,想趁还在学校的期间多学习学习
工作后学习的时间可能就没现在这么充裕了,也没那么多精力分享这些知识到论坛上
所以我还没到那个阶段,暂时还是以学习为主,但学习的侧重点在于找工作{:301_978:}

gdf87521 发表于 2021-4-10 22:22

坐等更新哦

Ps出来的小赵 发表于 2021-4-10 22:27

膜拜大佬,现在我出4块5了

Niay 发表于 2021-4-10 22:33

这是新篇章?

DevilNuts 发表于 2021-4-10 22:39

厉害厉害,等个更新

lyl610abc 发表于 2021-4-10 22:52

931303497 发表于 2021-4-10 22:33
这是新篇章?

算是吧,打算同时开几个新坑{:301_1004:}

-白衬衫- 发表于 2021-4-10 23:10

厉害了,能学习到一些的PE基础

daxiang789 发表于 2021-4-10 23:28

mark 学习

沉心云 发表于 2021-4-10 23:38

前来学习啦{:301_1003:}

天山雪 发表于 2021-4-11 00:03

收藏了。
页: [1] 2 3 4 5 6
查看完整版本: 从零开始构造加密壳系列 一 加壳原理