- UID
- 6621
注册时间2006-1-8
阅读权限50
最后登录1970-1-1
感悟天道
TA的每日心情 | 奋斗 3 天前 |
---|
签到天数: 1692 天 [LV.Master]伴坛终老
|
本帖最后由 speedboy 于 2015-2-4 12:54 编辑
具体分析过程
1、OD加载程序后,查找字符窜“注册码不正确,请检查注册码是否输错!”,找到后双击来到反汇编程序(如图),上面的jnz判断判断是否注册,其上的Call就是调用计算注册码过程,在此Call处F2下断点,然后F9运行到此Call处,F7跟进分析。
2、F8跟进,直到下图Call调用处(如图)F7跟进
3、算法Call分析
00574D88 /$ 55 push ebp
00574D89 |. 8BEC mov ebp,esp
00574D8B |. B9 05000000 mov ecx,0x5
00574D90 |> 6A 00 /push 0x0
00574D92 |. 6A 00 |push 0x0
00574D94 |. 49 |dec ecx
00574D95 |.^ 75 F9 \jnz XScreenCa.00574D90
00574D97 |. 51 push ecx
00574D98 |. 53 push ebx
00574D99 |. 56 push esi
00574D9A |. 57 push edi
00574D9B |. 8955 FC mov [local.1],edx
00574D9E |. 8BF8 mov edi,eax
00574DA0 |. 33C0 xor eax,eax
00574DA2 |. 55 push ebp
00574DA3 |. 68 464F5700 push ScreenCa.00574F46
00574DA8 |. 64:FF30 push dword ptr fs:[eax]
00574DAB |. 64:8920 mov dword ptr fs:[eax],esp
00574DAE |. 8B45 FC mov eax,[local.1]
00574DB1 |. E8 E2F5E8FF call ScreenCa.00404398
00574DB6 |. 8D55 F0 lea edx,[local.4]
00574DB9 |. 8BC7 mov eax,edi
00574DBB |. E8 60FFFFFF call ScreenCa.00574D20
00574DC0 |. 8B45 F0 mov eax,[local.4]
00574DC3 |. E8 90F8E8FF call ScreenCa.00404658
00574DC8 |. 8BF0 mov esi,eax
00574DCA |. 85F6 test esi,esi
00574DCC |. 7E 30 jle XScreenCa.00574DFE
00574DCE |. BB 01000000 mov ebx,0x1
00574DD3 |> 8D55 E8 /lea edx,[local.6]
00574DD6 |. 8BC7 |mov eax,edi
00574DD8 |. E8 43FFFFFF |call ScreenCa.00574D20
00574DDD |. 8B45 E8 |mov eax,[local.6]
00574DE0 |. 0FB64418 FF |movzx eax,byte ptr ds:[eax+ebx-0x1] ; 》按字符循环读取用户名并转换成16进制数据
00574DE5 |. 8D4D EC |lea ecx,[local.5]
00574DE8 |. 33D2 |xor edx,edx
00574DEA |. E8 3145E9FF |call ScreenCa.00409320
00574DEF |. 8B55 EC |mov edx,[local.5]
00574DF2 |. 8D45 F8 |lea eax,[local.2]
00574DF5 |. E8 66F8E8FF |call ScreenCa.00404660
00574DFA |. 43 |inc ebx
00574DFB |. 4E |dec esi
00574DFC |.^ 75 D5 \jnz XScreenCa.00574DD3
00574DFE |> 8B45 F8 mov eax,[local.2] ; 》把转换后的用户名(16进制)赋给EAX
00574E01 |. E8 52F8E8FF call ScreenCa.00404658
00574E06 |. 8BF0 mov esi,eax
00574E08 |. 85F6 test esi,esi
00574E0A |. 7E 2C jle XScreenCa.00574E38
00574E0C |. BB 01000000 mov ebx,0x1
00574E11 |> 8B45 F8 /mov eax,[local.2]
00574E14 |. E8 3FF8E8FF |call ScreenCa.00404658
00574E19 |. 2BC3 |sub eax,ebx
00574E1B |. 8B55 F8 |mov edx,[local.2]
00574E1E |. 8A1402 |mov dl,byte ptr ds:[edx+eax]
00574E21 |. 8D45 E4 |lea eax,[local.7]
00574E24 |. E8 57F7E8FF |call ScreenCa.00404580
00574E29 |. 8B55 E4 |mov edx,[local.7]
00574E2C |. 8D45 F4 |lea eax,[local.3]
00574E2F |. E8 2CF8E8FF |call ScreenCa.00404660
00574E34 |. 43 |inc ebx
00574E35 |. 4E |dec esi
00574E36 |.^ 75 D9 \jnz XScreenCa.00574E11
00574E38 |> 8D45 F8 lea eax,[local.2]
00574E3B |. 50 push eax
00574E3C |. B9 04000000 mov ecx,0x4
00574E41 |. BA 01000000 mov edx,0x1
00574E46 |. 8B45 F4 mov eax,[local.3] ; 》把用户名数据(16进制)逆序输出到EAX(上面的循环是逆序实现过程)
00574E49 |. E8 6AFAE8FF call ScreenCa.004048B8
00574E4E |. 8D45 F4 lea eax,[local.3]
00574E51 |. 50 push eax
00574E52 |. B9 04000000 mov ecx,0x4
00574E57 |. BA 05000000 mov edx,0x5
00574E5C |. 8B45 F4 mov eax,[local.3]
00574E5F |. E8 54FAE8FF call ScreenCa.004048B8 ; 》截取逆序字符窜的前四位
00574E64 |. 8B45 F8 mov eax,[local.2]
00574E67 |. E8 ECF7E8FF call ScreenCa.00404658 ; 》截取逆序字符窜的5-8位
00574E6C |. 83F8 04 cmp eax,0x4
00574E6F |. 7D 2F jge XScreenCa.00574EA0
00574E71 |. 8B45 F8 mov eax,[local.2]
00574E74 |. E8 DFF7E8FF call ScreenCa.00404658
00574E79 |. 8BD8 mov ebx,eax
00574E7B |. 83FB 03 cmp ebx,0x3
00574E7E |. 7F 20 jg XScreenCa.00574EA0
00574E80 |> 8D4D E0 /lea ecx,[local.8]
00574E83 |. 8BC3 |mov eax,ebx
00574E85 |. C1E0 02 |shl eax,0x2
00574E88 |. 33D2 |xor edx,edx
00574E8A |. E8 9144E9FF |call ScreenCa.00409320
00574E8F |. 8B55 E0 |mov edx,[local.8]
00574E92 |. 8D45 F8 |lea eax,[local.2]
00574E95 |. E8 C6F7E8FF |call ScreenCa.00404660
00574E9A |. 43 |inc ebx
00574E9B |. 83FB 04 |cmp ebx,0x4
00574E9E |.^ 75 E0 \jnz XScreenCa.00574E80
00574EA0 |> 8B45 F4 mov eax,[local.3] ; 》把第5-8位字符窜赋给EAX
00574EA3 |. E8 B0F7E8FF call ScreenCa.00404658
00574EA8 |. 83F8 04 cmp eax,0x4
00574EAB |. 7D 2F jge XScreenCa.00574EDC
00574EAD |. 8B45 F4 mov eax,[local.3]
00574EB0 |. E8 A3F7E8FF call ScreenCa.00404658
00574EB5 |. 8BD8 mov ebx,eax
00574EB7 |. 83FB 03 cmp ebx,0x3
00574EBA |. 7F 20 jg XScreenCa.00574EDC
00574EBC |> 8D4D DC /lea ecx,[local.9]
00574EBF |. 8BC3 |mov eax,ebx
00574EC1 |. C1E0 02 |shl eax,0x2
00574EC4 |. 33D2 |xor edx,edx
00574EC6 |. E8 5544E9FF |call ScreenCa.00409320
00574ECB |. 8B55 DC |mov edx,[local.9]
00574ECE |. 8D45 F4 |lea eax,[local.3]
00574ED1 |. E8 8AF7E8FF |call ScreenCa.00404660
00574ED6 |. 43 |inc ebx
00574ED7 |. 83FB 04 |cmp ebx,0x4
00574EDA |.^ 75 E0 \jnz XScreenCa.00574EBC
00574EDC |> 8D45 D8 lea eax,[local.10]
00574EDF |. 50 push eax
00574EE0 |. 8B47 04 mov eax,dword ptr ds:[edi+0x4] ; 》把程序设定的固定字符窜赋给EAX
00574EE3 |. B9 04000000 mov ecx,0x4
00574EE8 |. BA 01000000 mov edx,0x1
00574EED |. E8 C6F9E8FF call ScreenCa.004048B8 ; 》取固定字符窜的前四位
00574EF2 |. FF75 D8 push [local.10]
00574EF5 |. 68 5C4F5700 push ScreenCa.00574F5C ; -
00574EFA |. FF75 F8 push [local.2]
00574EFD |. 8D45 D4 lea eax,[local.11]
00574F00 |. 50 push eax
00574F01 |. 8B47 04 mov eax,dword ptr ds:[edi+0x4]
00574F04 |. B9 05000000 mov ecx,0x5
00574F09 |. BA 05000000 mov edx,0x5
00574F0E |. E8 A5F9E8FF call ScreenCa.004048B8 ; 》取固定字符窜的5-9位
00574F13 |. FF75 D4 push [local.11]
00574F16 |. 68 5C4F5700 push ScreenCa.00574F5C ; -
00574F1B |. FF75 F4 push [local.3]
00574F1E |. 8B45 FC mov eax,[local.1]
00574F21 |. BA 06000000 mov edx,0x6
00574F26 |. E8 EDF7E8FF call ScreenCa.00404718
00574F2B |. 33C0 xor eax,eax
00574F2D |. 5A pop edx
00574F2E |. 59 pop ecx
00574F2F |. 59 pop ecx
00574F30 |. 64:8910 mov dword ptr fs:[eax],edx
00574F33 |. 68 4D4F5700 push ScreenCa.00574F4D
00574F38 |> 8D45 D4 lea eax,[local.11]
00574F3B |. BA 0A000000 mov edx,0xA
00574F40 |. E8 77F4E8FF call ScreenCa.004043BC
00574F45 \. C3 retn
00574F46 .^ E9 91EDE8FF jmp ScreenCa.00403CDC
00574F4B .^ EB EB jmp XScreenCa.00574F38
00574F4D . 5F pop edi
00574F4E . 5E pop esi
00574F4F . 5B pop ebx
00574F50 . 8BE5 mov esp,ebp
00574F52 . 5D pop ebp
00574F53 . C3 retn
4、合成注册码
“固定字符窜前4位”-“用户名得到的逆序字符窜前四位+固定字符窜的5-9位”-“用户名得到的逆序字符窜的5-8位”
|
评分
-
查看全部评分
|