首页
社区
课程
招聘
关于加密解密第三版里面虚拟机的一个问题,往能有大大进来帮我解决一下!
发表于: 2010-9-24 01:29 4137

关于加密解密第三版里面虚拟机的一个问题,往能有大大进来帮我解决一下!

2010-9-24 01:29
4137
首先这里要明白一下VMContext的结构.

struct VMContext
{
DWORD v_eax;
DWORD v_ebx;
DWORD v_ecx;
DWORD v_edx;
DWORD v_esi;
DWORD v_edi;
DWORD v_ebp;
DWORD v_efl; //符号寄存器
}

书上的原话是这样的:为什么这个环境唯独缺少ESP寄存器呢?因为ESP寄存器已经被放在真是的EBP环境中了,VStartVM将所有的寄存器都压入堆栈。所以,首先应该使堆栈平衡才能开始执行真正的代码,为此设计一个Handler VBegin来做这项工作。
这里的EDI是指向VMContext的指针.
下面是代码:
vBegin:

mov eax,dword ptr [ebp]
mov [edi+0x1C],eax ;v_efl
add esp,4
mov eax,dword ptr [ebp]
mov [edi+0x18],eax ;v_ebp
add esp,4
mov eax,dword ptr [ebp]
mov [edi+0x14],eax ;v_edi
add esp,4
mov eax,dword ptr [ebp]
mov [edi+0x10],eax ;v_esi
add esp,4
mov eax,dword ptr [ebp]
mov [edi+0x0C],eax ;v_edx
add esp,4
mov eax,dword ptr [ebp]
mov [edi+0x08],eax ;v_ecx
add esp,4
mov eax,dword ptr [ebp]
mov [edi+0x04],eax ;v_ebx
add esp,4
mov eax,dword ptr [ebp]
mov [edi],eax ;v_eax
add esp,4
add esp,4 ;释放参数

jmp VMDispather


以上我不明白的是EBP部分,EBP更本没有改变嘛,怎么可以依次的把寄存器和那些标志位的值传到VMContext里面呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
看来今天是无望了,睡觉睡觉.!
2010-9-24 04:15
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我书上的例子,都是add ebp,4;
为什么你的都是add esp,4;
好奇怪啊!!!
你看错了,还是这本书有两个版本的?
2010-9-24 11:56
0
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
大大们,你们不要这样啊.帮帮我嘛
2010-9-24 17:17
0
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
- -.刚才没看到2楼的留言,难道真的是我看错了?- ...一开始我也这么觉得滴...
2010-9-24 17:26
0
游客
登录 | 注册 方可回帖
返回