美文网首页
手工加壳脱壳

手工加壳脱壳

作者: MagicalGuy | 来源:发表于2018-10-10 00:49 被阅读0次
    1. PE文件的Magic code(魔数、幻数)是什么?

    MZ头、PE头

    1. PE文件中文件头的信息有哪些?

    运行平台、时间戳、PE文件属性、区段数量、扩展头的大小

    1. PE文件中扩展头的信息有哪些?

    OEP的RVA、ImageBase(400000)、代码段起始地址、数据段起始地址

    数据目录表、数据目录表项数量、文件对齐、内存对齐、映像总大小

    1. PE文件中区段信息有哪些?

    区段名称、虚拟地址、虚拟大小、文件偏移、文件大小、区段属性(C0000020、60000020)

    1. PE文件中数据目录表有哪些表?

    导出表、导入表、异常表、tls表、资源表、IAT重定位表

    1. 一个进程,三环下有哪些数据结构?

    进程环境块(PEB)、线程环境块(TEB)、tls结构

    手工加壳

    image.png

    目标:将代码段加密,以防止IDA等静态工具分析。

    步骤:

    1. 添加一个区段(文件大小、区段数量)

    2. 将原OEP修改为新区段中的地址

    3. 将代码段异或加密

    4. 在新区段新OEP处,添加异或解密代码

    注意:

    ① 代码段默认没有可写属性,需要修改

    60000020h,改为80000020h

    ② 有随机基址属性的程序会重定位代码,一般我们会去掉这个属性

    如果没有去掉,就需要在壳代码中进行重定位

    具体:

    1. 添加区段


      image.png

    只使用LordPE,添加完区段,程序是无法运行的,因为虚拟大小、文件大小都是空的

    image.png

    使用LordPE编辑区段信息

    image.png

    再使用010Editor添加文件数据

    image.png
    1. 修改OEP,增加OEP代码
      原OEP:000011D2
      新OEP:17000
      修改OEP
    image.png

    添加代码

    image.png
    1. 加密代码段

    代码段信息

    image.png

    在010Editor中操作代码段
    ③ 选中代码段

    image.png

    ④ 异或代码段

    image.png image.png
    1. 增加解密代码

    由于代码段本身有重定位信息,那么如果加密之后,重定位会出现问题,所以应该去掉随机基址

    40 81 -> 00 81

    脱壳

    脱壳的目的:

    1. Cracker(破解者) 脱壳、解密、破解

    2. 杀毒引擎(脱壳引擎、反病毒虚拟机) 解密、查杀病毒、扫描特征

    脱壳的步骤:

    1. 找到原始OEP

    2. Dump内存到文件

    3. 修复文件(常见于修复IAT)

    导入表和IAT

    image.png

    IAT表在文件中保存的是一个RVA数组,每一项指向指向了函数字符串结构

    image.png

    在内存中,这个RVA数组,被修改为函数地址,每一个函数地址就是之前对应的函数字符串的函数

    image.png

    所以从内存中dump出的文件,必须进行IAT修复或者修复导入表。

    脱自己加的壳

    1. 找到原始OEP

    单步跟踪,很容易找到原始OEP

    1. Dump内存到文件

    在原始OEP处进行DUMP内存,原因就是这个时候内存没有做太多的初始化

    1. 修复IAT或者修复导入表

    使用ImportREC修复。

    image.png

    相关文章

      网友评论

          本文标题:手工加壳脱壳

          本文链接:https://www.haomeiwen.com/subject/gqxdaftx.html