虚拟机分析笔记

vmp虚拟机测信道分析学习笔记;
在虚拟机入口或出口处,代码的界面状态是真实的,会暴露函数调用接口,及返回值。
1.获得虚拟机进入函数(界面);

  • 虚拟机在调用一些系统函数或未加密的函数时会退出虚拟机,直到函数返回后,再重新进入虚拟机。
  • 在被加密的函数代码内会出现push call,push jump等跨节跳转指令进入到vmp节。
    -(获得虚拟机退出时界面)在调用未加密函数返回进入到虚拟机时,ebp在当前代码中始终不变,所以当ebp再次恢复时监测ret,call等跳转指令可能就是虚拟机退出代码;
    所以找到虚拟机入口特征后,再模拟执行或追踪,去遍历所有要分析代码块的虚拟机入口。
    2.局部变量在栈中的位置不变;
    进入虚拟机后直到函数执行结束退出虚拟机。栈中相应位置的变量的变化顺序与原始程序相同,
    可以根据传入值,与变量变化顺序猜测函数功能,
    有时虚拟机在call另一个虚拟化过的函数2时会不退出虚拟机直接调用,这时可以在函数2的退出时,再进入虚拟机前获得真实栈信息,通过设置条件断点,可以获得虚拟机内的函数2的“起始地址“,再进行局部变量的监测。
    3.eflag黑箱测试
//jz等价指令
__asm
{
pushfd
pop eax
and eax,0x40;    //提取z标志位
shr eax,6
mov ecx,1
sub ecx,eax;
neg eax;
neg ecx;
}

模拟执行——截获所有eflag的获取操作,如pushfd,修改eflag标志位,判断是否影响 真实代码的jcc标志位,
如果指令数量多,增加and 指令,shr指令辅助查找。
*干预标志位后会影响代码执行路径,需要继续监测-干预;
(通过干预标志位可以实现功能的破解。)
4.指令执行数量

  • 通过输入,监测指令执行数量,(在密码对比等代码中)如果指令执行数量增加可能就代表密码命中,继续测试可能会分析出密码;
  • 判断代码或真正关键跳转的代码相对无用指令可能执行次数极少,通过监测各个指令执行次数,排除无用指令,再测试分析关键跳转。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值