动态跟踪得到的代码如下
VPC 虚拟机 OS XP+SP2 英文版 CPU 单核
指列出不同的部分
804de764 0f8546feffff jne nt!Dr_FastCallDrSave (804de5b0) [br=0]//804de76a 8b5d60 mov ebx,dword ptr [ebp+60h] //ebx=ktrap_frame.ebp804de76d 8b7d68 mov edi,dword ptr [ebp+68h] //edi=ktrap_frame.eip804de770 89550c mov dword ptr [ebp+0Ch],edx //krap_frame.DbgArgPointer=804de773 e91545d101 jmp 821f2c8d.....//设置ktrap_frame中前4个和调试有关的字段821f2c8d c74508000ddbba mov dword ptr [ebp+8],0BADB0D00h //krap_frame.DbgArgMark=821f2c94 895d00 mov dword ptr [ebp],ebx 821f2c97 897d04 mov dword ptr [ebp+4],edi821f2c9a e928a4f8ff jmp 8217d0c7
.....8217d0c7 9c pushfd8217d0c8 50 push eax8217d0c9 a11494f1f5 mov eax,dword ptr ds:[F5F19414h] ds:0023:f5f19414=????????8217d0ce 800802 or byte ptr [eax],28217d0d1 804c240502 or byte ptr [esp+5],28217d0d6 58 pop eax8217d0d7 9d popfd
而真实机器是: xp+sp2 中文 双核
804dee8e 8b7d68 mov edi,dword ptr [ebp+68h]804dee91 89550c mov dword ptr [ebp+0Ch],edx804dee94 c74508000ddbba mov dword ptr [ebp+8],0BADB0D00h804dee9b 895d00 mov dword ptr [ebp],ebx804dee9e 897d04 mov dword ptr [ebp+4],edi //设置完krap_frame中的前4个和调试有关的寄存器 就是sti了。804deea1 fb sti804deea2 8bf8 mov edi,eax804deea4 c1ef08 shr edi,8804deea7 83e730 and edi,30h804deeaa 8bcf mov ecx,edi804deeac 03bee0000000 add edi,dword ptr [esi+0E0h]804deeb2 8bd8 mov ebx,eax