textbox

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

VM:伪代码执行引擎.简称虚拟机
handler:伪代码,opcode(x86汇编指令)经过vm之后产生了的伪代码.网络上简称为handler,
DispatchiTable:伪代码表.里面保存了各种各样的(vmcode)handler
Dispatcher:负责DispatchiTable里面定位到不同的(vmcode)handler并执行该(vmcode)handler.然后再定位到下一个(vmcode)handler并执行.可以这么说:Dispatcher就是vmp的发动机.

VM寄存器:各个寄存器的基本用途是:
  EBP和EDI是VM堆栈指针(不是常规的堆栈);
  ESI是伪指令指针(相当于常规的EIP);

  EAX是VM解密数据的主运算寄 存器;
  EBX是VM解密数据的辅运算寄存器;
  ECX是常规的循环计数器;
  ESP是常规的堆栈栈顶指针。
  EDX是读取伪指令表数据;
VMP是基于堆栈式的代码虚拟引擎.因此理解好vm堆栈将是攻破vmp的基础

VM堆栈:vm栈分为两种:
  一种是EBPSTACK栈(EBP指向栈尾,存取都是采取递减方式);
  一种是EDI_STACK(EDI指向栈首,存取数据采用递增方式.如:[edi+eax]).

伪代码命名:每个人对伪代码都可以有自己的命名规则.只要自己能看懂就可以了.其实跟x86汇编代码类似,(我感觉伪代码更高一层.一个伪代码经常代替了一组汇编代码功能).
 我的命名方式是.前缀_操作符(类型)_参数1(类型).... 如:VM_MOVdw_EDISTACKdw_EBPSTACKdw 这个handler的功能是:移动epbstack栈顶dword类型的数据到edistack

vmp启点: TLS_CallBack. OD选择“选项”->“调试选项”->“事件”在“设置第一次暂停于”的单选项中选择“系统断点”就能中断在TLS_CallBack之前

寄存器加密:
posted on 2012-10-20 07:18 零度 阅读(345) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。