<span class="pediy"><span class="pediy">
给大家再补充一点:
00545856 |> /0FB7CA /movzx ecx,dx esp=12fc40
00545859 |. |8BC1 |mov eax,ecx
0054585B |. |D1E8 |shr eax,1
0054585D |. |8A0428 |mov al,byte ptr ds:[eax+ebp] 这里依次取你的注册码前8位
00545860 |. |3C 61 |cmp al,61
00545862 |. |72 0C |jb short SnagIt32.00545870
00545864 |. |3C 7A |cmp al,7A
00545866 |. |77 08 |ja short SnagIt32.00545870
00545868 |. |0FB6C0 |movzx eax,al
0054586B |. |83E8 20 |sub eax,20
0054586E |. |EB 03 |jmp short SnagIt32.00545873
00545870 |> |0FB6C0 |movzx eax,al
00545873 |> |0FB64C0C 1C |movzx ecx,byte ptr ss:[esp+ecx+1C] ; ss[12fc5c]=CA
ss[12fc5e]=7d
ss[12fc60]=e2
ss[12fc62]=78
ss[12fc64]=7d
ss[12fc66]=9c
ss[12fc68]=20
ss[12fc6a]=81
00545878 |. |83E1 0F |and ecx,0F
ecx=a
ecx=d
ecx=2
ecx=8
ecx=d
ecx=c
ecx=0
ecx=1
0054587B |. |0FBE4C0C 0C |movsx ecx,byte ptr ss:[esp+ecx+C] ; 这里是 跟密码表对比
ss[12fc40+C+a]=41(A)
ss[12fc40+C+d]=44(D)
ss[12fc40+C+2]=32(2)
ss[12fc40+C+8]=38(8)
ss[12fc40+C+d]=44(D)
ss[12fc40+C+c]=43(C)
ss[12fc40+C+0]=30(0)
ss[12fc40+C+1]=31(1) ---->这些是由密码表而来的前8位注册码了,后十位应该是计算出密码表的吧
00545880 |. |0FB6C0 |movzx eax,al al=41
00545883 |. |3BC8 |cmp ecx,eax
00545885 |. |75 14 |jnz short SnagIt32.0054589B ; 这里是不能跳的,跳则失败了
00545887 |. |83C2 02 |add edx,2
0054588A |. |66:83FA 10 |cmp dx,10 这里是比较前8位注册码是否取完
0054588E |.^\72 C6 \jb short SnagIt32.00545856
