首页
社区
课程
招聘
[旧帖] [分享]脱壳学习笔记1 0.00雪花
发表于: 2013-10-20 18:46 1734

[旧帖] [分享]脱壳学习笔记1 0.00雪花

2013-10-20 18:46
1734
一.PE(Portable Executable)
  PE格式,是微软WIN32环境可执行文件的标准格式(除.EXE外,还包括.DLL/.VXD/.SYS/.VDM等)。PE文件使用的是一个平面地址空间,所有代码和数据都合并在一起,组成一个很大的结构。
  1.PE文件的主要结构:
    .text 编译或汇编结束是产生的一种块,内容全是指令代码(*.code);
    .rdata 运行期只读数据;
    .data 初始化的数据块;
    .idata 包含其他外来DLL的函数及数据信息,即输入表;
    .rsrc 包含模块的全部资源:如图标、菜单、位图等。
  2.PE文件结构(简化):
    -------------------------------------------------------------------------
    |1,DOS MZ header           |DOS MZ文件头
    -------------------------------------------------------------------------
    |2,DOS stub                         |DOS块
    -------------------------------------------------------------------------
    |3,PE,0,0                             |PE文件头标志
    --------------------------------------------------------------------------
    |4,IMAGE_FILE_HEADER结构         |PE文件表头
    --------------------------------------------------------------------------
    |5,IMAGE_OPTIONAL_HEADER32结构 |
    ---------------------------------------------------------------------------
    |6,16*IMAGE_DATA_DIRECTORY结构  |数据目录列表
    ---------------------------------------------------------------------------
    |7,Section table                        |区段表(节表)
    ---------------------------------------------------------------------------
    |8,Section 1                           |
    ---------------------------------------------------------------------------
    |9,Section 2                           |
    ---------------------------------------------------------------------------
    |  Section ...                          |
    ----------------------------------------------------------------------------
    |n,Section n                           |
    ---------------------------------------------------------------------------
二.壳
  壳,指的是一种可以利用特殊的算法将EXE、DLL等文件重新压缩、加密的程序。当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。
    1.壳可实现功能:
        1.减小被压缩文件的体积;
        2.加密可被加密文件中的信息;
        3.其他(如:免杀)。
    2.壳的分类:
      按照加壳类型,壳程序大体上分为两类。第一类是压缩壳,可以将被处理文件的体积减小,如:UPX、ASPACK、NSPACK等。第二类是加密壳,可以对被处理文件进行加密处理,通常会使被处理文件的体积增大,常见的有ASPRM、EXEStealth等。
      一般来说,加密壳也有一定的压缩功能(不过有的也没有),所以有人把壳程序分为三类:压缩壳、加密壳、压缩加密壳。
      除了压缩壳和加密壳,还有一种捆绑壳,这类壳有些属于压缩壳,有些属于加密壳。

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
一、CPU&内存
CPU:
  一个典型的CPU有以下部分组成:
①运算器:进行信息处理;
②寄存器:进行信息存储;
③控制器:控制各器件进行工作;
④内部总线:连接各器件,在他们之间进行数据的传送。
  寄存器是CPU中程序员可以用指令读写的部件。80386的CPU的每个寄存器是4个字节(32bit),有8个通用寄存器:eax、ecx、edx、ebx、esp、ebp、esi、edi。这些寄存器的低16位可以独立访问,命名为ax、cx、dx、bx、sp、bp、si、di。
内存:
一个内存单元存储一个字节(8bit)的信息。80386构架的系统,内存地址是线性地址,不一定是物理地址。32位windows下内存地址是4字节(32bit),由于用32个数字表示太过麻烦,实际上用16进制表示(0x xxxx xxxx)。
16位CPU只有16根数据总线,所以内存寻址由两个寄存器完成。段寄存器记录段地址,另一个记录相对于段地址的偏移量。内存地址 = 段地址 × 0x10 + 偏移地址,段地址×0x10成为基地址。
Win32下 ,80386处理器可使用全部32根地址总线,访问4GB大内存。因为80386所有的通用寄存器都是32位的,所以用任何一个通用寄存器来间接寻址,不必分段就可以访问到所有内存地址。(16bit的段寄存器变为段选择器)。
二、环境保存
环境保存:
  在调用子程序时,将ESP的值保存起来,在跳出子程序时,将保存的原始ESP寄存器恢复,这样程序就不会因为错误的ESP寄存器的值导致执行出错。
ESP寄存器:始终指向栈顶。
堆栈平衡。
重要指令:
  pushad:将8个通用寄存器压入堆栈;
  Popad:与pushad相反。
  有时也用到pushfd/popfd来保存环境,这对指令用于保存和恢复标志位寄存器的值。
2013-10-20 18:47
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
后面还会有么?
2013-10-28 18:43
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
真不错!!!
2013-10-29 14:18
0
游客
登录 | 注册 方可回帖
返回