0040DD86 Main rol ax,cl
0040DD89 Main mov eax,dword ptr ss:[ebp] ; EAX=35881B1A
0040DD8C Main cmp dx,ax
0040DD8F Main add dword ptr ss:[ebp+4],eax
0040DD92 Main jmp dumped.0040B070
0040B070 Main call dumped.0040C730
0040C730 Main pushad
0040C731 Main pushfd
0040C732 Main pop dword ptr ss:[esp+20]
0040C736 Main pushfd
0040C737 Main jmp dumped.0040DCBA
0040DCBA Main jmp dumped.0040C71C
0040C71C Main push dword ptr ss:[esp+24]
0040C720 Main pop dword ptr ss:[ebp]
0040C723 Main mov byte ptr ss:[esp+4],bl
0040C727 Main lea esp,dword ptr ss:[esp+28]
0040C72B Main jmp dumped.0040CD43
0040CD43 Main setge dh ; EDX=00400186
0040CD46 Main jmp dumped.0040DC1E
0040DC1E Main pushad
VM_SetEip:
0040BC90 Main movsx si,cl ; ESI=00410004
0040BC94 Main jmp dumped.0040DA71
0040DA71 Main mov esi,dword ptr ss:[ebp] ; ESI=0040E5DE
0040DA74 Main call dumped.0040DC69
0040DC69 Main test bl,0AE
0040DC6C Main bt sp,9
0040DC71 Main mov byte ptr ss:[esp],ch
0040DC74 Main add ebp,4 ; EBP=0012FA38
0040DC77 Main pushad
0040DC78 Main pushfd
0040DC79 Main push 8116F71
0040DC7E Main pushfd
0040DC7F Main lea esp,dword ptr ss:[esp+30]
0040DC83 Main jmp dumped.0040CD27
0040CD27 Main bsr dx,ax ; EDX=00400000
0040CD2B Main rcr bl,4 ; EBX=8D43C6EB
0040CD2E Main inc bl ; EBX=8D43C6EC
0040CD30 Main sal bl,4 ; EBX=8D43C6C0
0040CD33 Main mov ebx,esi ; EBX=0040E5DE
0040CD35 Main push edx
0040CD36 Main rcl dx,cl
0040CD39 Main cmp cl,3D
0040CD3C Main add esi,dword ptr ss:[ebp]
0040CD3F Main lea esp,dword ptr ss:[esp+4]
0040CD43 Main setge dh ; EDX=00400100
0040CD46 Main jmp dumped.0040DC1E
0040DC1E Main pushad
......后半段了,省略
0040DC1F Main mov al,byte ptr ds:[esi-1] ; EAX=00000016
然后,在2句关键的代码处下好断点:
1.0040DD8F Main add dword ptr ss:[ebp+4],eax
2.0040DA71 Main mov esi,dword ptr ss:[ebp] ; ESI=0040E5DE
下好断点后,跑下面的脚本,主要是为了记录eax和esi的值:
var teax
var tesi
var logfile
var info
mov logfile,"log.txt"
loop:
run
cmp eip,0040da71
je Exit
mov teax,eax
mov tesi,esi
eval "eax:{teax} esi:{tesi}"
mov info,$RESULT
wrta logfile,info
jmp loop
Exit:
ret