【2】VMP是堆栈机:
它有自己的"寄存器",有自己的伪指令,它对数据的操作都是通过堆栈进行的,从它的伪指令可以看出,伪指令太多了,我只看了几十条,其他的就看不下去了。
如【1】所述,指令的结果只是改变数据.
pop dx
pop ax
pop cx
div cx
push ax
push dx
JMP vm_execute //字除法,并把商和余数压入堆栈 v_divw
pop ecx
add dword ptr [esp], ecx
jmp vm_execute //可以看做是V_ADD
lods byte ptr [esi]
add al, bl
sub al, 0C6
ror al, 1
not al
ror al, 3
add bl, al
cbw
cwde
push eax
jmp vm_execute //可以看做是V_PUSH
pop eax
pop dword ptr [eax]
jmp vm_execute //可以看做是和MOV [XXXXXXXX],reg 等价的伪指令