好友
阅读权限20
听众
最后登录1970-1-1
|
ttbbs
发表于 2021-12-7 10:39
本帖最后由 ttbbs 于 2021-12-7 11:29 编辑
看了一些资料,本人心血来潮,构思了一个虚拟机。
准备工作
定义ip
栈
int *ip;
string stack[1024];
string mem[100];
bool running=1;
//初始化函数加于此
while(running){
switch(ip){
//handler
}
ip+=4;
}
下面举例实现初始化:
push edi
lea edi,mem
mov [edi],eax
mov [edi+4],eax
......
lea ebp,stack
下面举例handler
Vpushm32:
ip+=4;
mov ecx,*ip
mov eax,[edi+ecx]
add ebp,4
mov [ebp],ecx
break;
Vmovm32:
ip+=4;
mov ecx,*ip
mov eax,[edi+ecx]
ip+=4;
mov ecx,*ip
mov ebx,[edi+ecx]
sub ecx,4
mov ebx,eax
mov [edi+ecx],eax
break;
周末回去补充。 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|