textbox

IT博客 联系 聚合 管理
  103 Posts :: 7 Stories :: 22 Comments :: 0 Trackbacks

1、Nanomites Processing
  Nanomites是Armadillo嵌入子进程的INT 3中断,虽然在GETRIGHT FINAL版本里没有使用nanomites 保护,但是却在CRUSADER写的教程里的beta版本里用了。 可能有 50, 100甚至 200个INT 3,它们被放入了子进程的第一个section ,以阻止子进程脱离父进程运行。INT 3中断替代了原始文件的条件跳转。所以每当父进程接收到INT 3中断,它就到存放跳转类型的report中去,看一下标志以决定是否跳转,然后测算出新的EIP,改变到子进程中去然后继续运行直到下一个 INT 3。
  问题是我们不知道每个跳转和INT 3的对应关系,所以我们将要在本篇教程中学习如何patch它。 首先我们要学如何手动patch它,然后(在第二篇教程中) 我们将要学习如何让计算机自动逐行patch它。
2、输入表乱序
  Import Table Elimination一般是把输入表放在壳申请的内存处并且乱序处理。
  对于输入表乱序,以前有两种解法:①、写代码重新排序;②、直接用ImportRec“创建新的IAT”功能来构造新的输入表。
3、代码拼接
  Armadillo会把程序中的部分代码挪移到壳申请的内存段运行,普通dump会导致此部分代码丢失,可以使用ArmInline工具来修复这部分代码
4、内存校验
  内存补丁保护可以防止攻击者使用Loader改变更程序的代码。付费版本的内存保护将会比Demo版更强大。如果您使用此选项,您必须使用CopyMem-II或Debug-Block,否则本项保护将无法启用。
  使用内存保护时应注意,不要在程序里添加自修改代码,否则程序将会自动退出。
5.CopyMemII保护

6.SEH
(windows 结构化异常处理) 操作系统处理异常的方案
 
异常处理程序的返回值
 
EXCEPTION_EXECUTE_HANDLER    equ 1   表示我已经处理了异常,可以优雅地结束了
  EXCEPTION_CONTINUE_SEARCH    equ 0   表示我不处理,其他人来吧,于是windows调用默认的处理程序显示一个错误框,并结束
  EXCEPTION_CONTINUE_EXECUTION equ -1  表示错误已经被修复,请从异常发生处继续执行

7.PE结构
(Portable Executable File Format)可移植的执行体 即 Windows的可执行文件格式

8.OEP
(Original Entry Point) 即程序加壳前的真正的入口点

9.PELoader
(把PE格式的文件加载到内存并跳到OEP执行)

10.Blowfish、Twofish、TEA 
加密算法

11.
KPCR
   (Kernel's Processor Control Region,内核进程控制区域)是一个不会随WINDOWS版本变动而改变的固定结构体,在它的末尾(偏移0x120)指向
      KPRCB结构。KPRCB同样是一个不会随WINDOWS版本变动而改变的固定结构体。它包含有指向当前KTHREAD的指针(偏移值0x004)。
      ETHREAD的第一项是KTHREAD,也就知道了当前的ETHREAD基地址。KTHREAD中的_KAPC_STATE结构包含当前KPROCESS的地址每个进程
   都有一个EPROCESS结构,里面保存着进程的各种信息,和相关结构的指针。EPROCESS结构位于系统地址空间,所以访问这个结构需要有ring0
   的权限。EPROCESS的第一项是KPROCESS
12.CreateProcess
     CreateProcess创建进程的大致步骤:
     1.打开可执行文件[.exe],以FILE_EXECUTE存取方式打开。
     2.把可执行映像装载进RAM。
     2.创建进程内核对象(EPROCESS,KPROCESS和PEB结构)。
     4.为该新建进程分配地址空间。
     3.在该进程中创建主线程的线程执行对象(ETHREAD,KTHREAD和TEB结构),为主线程分配堆栈,建立该进程主线程的执行上下文。
     4.Kernel32.dll通知Win32子系统已经创建了一个新进程。
     5.如果标志不是CREATE_ SUSPENDED,那么就开始执行进程中的线程    
     6.在进程和线程的context里,完成地址空间的初始化(比如,加载需要的DLL),开始执行程序
13.PE 格式中的 SectionAlignment 与 FileAlignment
    
这两个值可以在PE文件IMAGE_NT_HEADER结构体所包含的iamge_optional_header结构体中找到。 FileAlignment指的是二进制文件中,
     数据对齐时采用的大小。一般是一个扇区的倍数(扇区大小一般为200h也就是512bytes),这样便 于更快的从硬盘中读取数据。而
     SectionAlignment主要指的是PE文件被映射到内存后,其section被映射到进程空间时所采用的数据对齐 的大小。一般就是一个页大小的倍
     数(通常为1000h)。这个也是为了更快的进行数据交换,便于内存管理。FileAlignment和硬盘的扇区相 关,SectionAlignment和内存的页
     相关,一个是存放在硬盘列文件数据对齐,一个是存放在内存里的数据对齐.
14.PEBProcess Environment Block , 进程环境块    
      FS段寄存器指向当前的TEB结构,在TEB偏移0x30处是PEB指针,通过这个指针即可取得PEB的地址
      具体用法结构参考: http://www.anqn.com/jiamijiemi/jichuzhishi/2009-01-12/a09105367.shtml
15.Opcode
16.VM 虚拟机保护壳. 原理:模仿opcode的运行机制并参合代码加密,代码乱序,代码变形,各种Anti. 如 themida ,vmp 等
17.TLS:Thread Local Storage 线程局部存储TLS. 堆栈中定义的局部变量,对多线程是安全的,因为不同的线程有自己的堆栈
18.CRC 校验值 类似求商的余数原理那样,CRC是求XOR的余数就是CRC值
         11110         --> 30
         1001  xor    --> 9
         ---------
          1100          --> 12   
          1001  xor   --> 9
          --------
           101           --> 3,余数 --> the CRC!19. int 2E 指令是未公开指令,eax 中存放函数号,EDX中存放函数地址
      作用:1.可以用来 进入 ntoskrnl.exe调用naked API
               2.他是从用户模式进入内核模式的main gate。
      eax 中存放函数号作为查找表中的索引,去找到最终的目标函数。这个表就是系统服务表SST
      详细参考 http://bbs.pediy.com/showthread.php?threadid=24555
20. SST 系统服务表


posted on 2010-04-06 09:43 零度 阅读(407) 评论(0)  编辑 收藏 引用 所属分类: 概念
只有注册用户登录后才能发表评论。