新CrackMe160之007 - Reg

delphi的程序,使用dede查看源码,可知道有个隐藏按钮,left=536当前窗体width=352说明这个按钮在右侧外面去了,所以我们用UE将窗体的宽度改为652(0x28c)
在文件的006D17Fh处,将60 01改为8C 02保存重开程序可以看见隐藏的控件了,到此程序也破解成功了,因为隐藏的控件就是生成系列号的功能
时间格式是6位的yyMMdd,如:240101 => 2024-01-01

上面是取巧的,接下来,就正常来,

DeDe查看源码可知有个FormCreate事件, 源码比较简单, 可以知道,程序从reg.dll文件中读取用户名和系列号, 然后调用 call 0045D0F4关键算法验证
双击进入这个方法, 0045D13F处可知系列号得0x10位(16位), 0045D14D ~ 004516C作者不做了一次不知道干嘛的循环骚操作,我觉得应该是一处假算法,
用于迷惑我们的, 循环17次后发现啥也不是, 继续前进到0045D17F call 0045CC34处, 从系列号中解析出时间串(这也是个关键算法处,需要进入分析), 得到时间串后,
马上进入最关键的算法, 0045D1A1 call 0045C5E0这个方法, 入参是用户名和时间串(根据上面取巧破解的过程可知, 作者隐藏的按键生成系列号的方法
就是调用这个关键call),

接下来我们分别进入下面这两个关键方法进行分析:
0045D17F call 0045CC34
0045D1A1 call 0045C5E0
如下分析使用示例: UserName=Reg, UN=0217C3C4A1B75C26
第一个:
0045CC62 ~ 0045CC94: 从系列号中第5位开始取出2位, 得到: C3, 前面加上$ 转为 数字0xC3, 再转成2进制串 11000011
0045CC9C ~ 0045CCCE: 同理从系列号中第3位开始取出2位得到17, 前面加上$ 转为 数字0x17, 再转成2进制串 00010111
0045CCD5: 将上面两串连接在一起得 0001011111000011 (0x17C3)
标个号对齐下标:
0001011111000011
0123456789abcdef
0045CCE0 ~ 0045 : 将上面的串按位取出再重组:
s[0]+s[1]+s[8]+s[9]+s[a]+s[2]+s[3]+s[4]+s[b]+s[c]+s[5]+s[6]+s[d]+s[e]+s[f]+s[7]
= 0011001000110111
0045CF8B ~ 0045CFBE: 从上面的串第1位开始取7位转数字得到25
0045CFC7 ~ 0045CFFA: 从上面的串第8位开始取4位转数字得到01
0045D003 ~ 0045D036: 从上面的串第c位开始取5位转数字得到23
0045D036: 年25+2000 = 2025
到此就得到时间串了

第二个: 代码有点长, 直接看注释吧_

0045C5E0  /$  55            push ebp
0045C5E1  |.  8BEC          mov ebp,esp
0045C5E3  |.  51            push ecx
0045C5E4  |.  B9 1C000000   mov ecx,0x1C
0045C5E9  |>  6A 00         /push 0x0
0045C5EB  |.  6A 00         |push 0x0
0045C5ED  |.  49            |dec ecx
0045C5EE  |.^ 75 F9         \jnz short Reg.0045C5E9
0045C5F0  |.  874D FC       xchg [local.1],ecx
0045C5F3  |.  53            push ebx
0045C5F4  |.  56            push esi
0045C5F5  |.  57            push edi                                 ;  Reg.0045C3E8
0045C5F6  |.  894D F4       mov [local.3],ecx
0045C5F9  |.  8955 F8       mov [local.2],edx
0045C5FC  |.  8945 FC       mov [local.1],eax
0045C5FF  |.  8B45 FC       mov eax,[local.1]
0045C602  |.  E8 0982FAFF   call Reg.00404810
0045C607  |.  8B45 F8       mov eax,[local.2]
0045C60A  |.  E8 0182FAFF   call Reg.00404810
0045C60F  |.  33C0          xor eax,eax
0045C611  |.  55            push ebp
0045C612  |.  68 25CC4500   push Reg.0045CC25
0045C617  |.  64:FF30       push dword ptr fs:[eax]
0045C61A  |.  64:8920       mov dword ptr fs:[eax],esp
0045C61D  |.  8D55 B8       lea edx,[local.18]
0045C620  |.  8B45 FC       mov eax,[local.1]
0045C623  |.  E8 14F8FFFF   call <Reg.生成MD5串>                      ;  得到 str1
0045C628  |.  8D45 B8       lea eax,[local.18]
0045C62B  |.  8D55 E4       lea edx,[local.7]
0045C62E  |.  E8 7DF8FFFF   call Reg.0045BEB0                     ;  16转字符串
0045C633  |.  8D55 B8       lea edx,[local.18]
0045C636  |.  8B45 F8       mov eax,[local.2]
0045C639  |.  E8 FEF7FFFF   call <Reg.生成MD5串>                      ;  得到 str2
0045C63E  |.  8D45 B8       lea eax,[local.18]
0045C641  |.  8D55 E0       lea edx,[local.8]
0045C644  |.  E8 67F8FFFF   call Reg.0045BEB0
0045C649  |.  8D45 B4       lea eax,[local.19]
0045C64C  |.  8B4D E0       mov ecx,[local.8]
0045C64F  |.  8B55 E4       mov edx,[local.7]
0045C652  |.  E8 1580FAFF   call Reg.0040466C                     ;  str1 + str2
0045C657  |.  8B45 B4       mov eax,[local.19]
0045C65A  |.  8D55 B8       lea edx,[local.18]
0045C65D  |.  E8 DAF7FFFF   call <Reg.生成MD5串>                      ;  得到 str3
0045C662  |.  8D45 B8       lea eax,[local.18]
0045C665  |.  8D55 E8       lea edx,[local.6]
0045C668  |.  E8 43F8FFFF   call Reg.0045BEB0
0045C66D  |.  8D45 F0       lea eax,[local.4]
0045C670  |.  8B55 F8       mov edx,[local.2]
0045C673  |.  E8 807DFAFF   call Reg.004043F8
0045C678  |.  8D45 B0       lea eax,[local.20]
0045C67B  |.  50            push eax
0045C67C  |.  B9 02000000   mov ecx,0x2
0045C681  |.  BA 01000000   mov edx,0x1
0045C686  |.  8B45 F0       mov eax,[local.4]
0045C689  |.  E8 F281FAFF   call Reg.00404880
0045C68E  |.  8B45 B0       mov eax,[local.20]                       ;  年
0045C691  |.  E8 92BEFAFF   call Reg.00408528
0045C696  |.  8BD8          mov ebx,eax
0045C698  |.  8D45 AC       lea eax,[local.21]
0045C69B  |.  50            push eax
0045C69C  |.  B9 02000000   mov ecx,0x2
0045C6A1  |.  BA 03000000   mov edx,0x3
0045C6A6  |.  8B45 F0       mov eax,[local.4]
0045C6A9  |.  E8 D281FAFF   call Reg.00404880
0045C6AE  |.  8B45 AC       mov eax,[local.21]                       ;  月
0045C6B1  |.  E8 72BEFAFF   call Reg.00408528
0045C6B6  |.  8BF0          mov esi,eax
0045C6B8  |.  8D45 A8       lea eax,[local.22]
0045C6BB  |.  50            push eax
0045C6BC  |.  B9 02000000   mov ecx,0x2
0045C6C1  |.  BA 05000000   mov edx,0x5
0045C6C6  |.  8B45 F0       mov eax,[local.4]
0045C6C9  |.  E8 B281FAFF   call Reg.00404880
0045C6CE  |.  8B45 A8       mov eax,[local.22]                       ;  日
0045C6D1  |.  E8 52BEFAFF   call Reg.00408528
0045C6D6  |.  8BF8          mov edi,eax
0045C6D8  |.  8D45 A4       lea eax,[local.23]
0045C6DB  |.  50            push eax
0045C6DC  |.  8D55 A0       lea edx,[local.24]
0045C6DF  |.  8BC3          mov eax,ebx
0045C6E1  |.  E8 5EF9FFFF   call Reg.0045C044
0045C6E6  |.  8B45 A0       mov eax,[local.24]                       ;  年转2进制 25 = 00011001
0045C6E9  |.  B9 07000000   mov ecx,0x7
0045C6EE  |.  BA 02000000   mov edx,0x2
0045C6F3  |.  E8 8881FAFF   call Reg.00404880
0045C6F8  |.  FF75 A4       push [local.23]                          ;  年2进制取7位 = 0011001
0045C6FB  |.  8D45 9C       lea eax,[local.25]
0045C6FE  |.  50            push eax
0045C6FF  |.  8D55 98       lea edx,[local.26]
0045C702  |.  8BC6          mov eax,esi
0045C704  |.  E8 3BF9FFFF   call Reg.0045C044
0045C709  |.  8B45 98       mov eax,[local.26]                       ;  月转2进制 01 = 00000001
0045C70C  |.  B9 04000000   mov ecx,0x4
0045C711  |.  BA 05000000   mov edx,0x5
0045C716  |.  E8 6581FAFF   call Reg.00404880
0045C71B  |.  FF75 9C       push [local.25]                          ;  月2进制取后4位 = 0001
0045C71E  |.  8D45 94       lea eax,[local.27]
0045C721  |.  50            push eax
0045C722  |.  8D55 90       lea edx,[local.28]
0045C725  |.  8BC7          mov eax,edi                              ;  Reg.0045C3E8
0045C727  |.  E8 18F9FFFF   call Reg.0045C044
0045C72C  |.  8B45 90       mov eax,[local.28]                       ;  日转2进制 23 = 00010111
0045C72F  |.  B9 05000000   mov ecx,0x5
0045C734  |.  BA 04000000   mov edx,0x4
0045C739  |.  E8 4281FAFF   call Reg.00404880
0045C73E  |.  FF75 94       push [local.27]                          ;  日2进制取5位 = 10111
0045C741  |.  8D45 EC       lea eax,[local.5]
0045C744  |.  BA 03000000   mov edx,0x3
0045C749  |.  E8 927FFAFF   call Reg.004046E0
0045C74E  |.  8D45 84       lea eax,[local.31]
0045C751  |.  8B55 EC       mov edx,[local.5]                        ;  三者连在一起 = 0011001000110111 (edx)
0045C754  |.  8A52 02       mov dl,byte ptr ds:[edx+0x2]
0045C757  |.  8850 01       mov byte ptr ds:[eax+0x1],dl             ;  edx[2]
0045C75A  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C75D  |.  8D55 84       lea edx,[local.31]
0045C760  |.  8D45 80       lea eax,[local.32]
0045C763  |.  E8 4C66FAFF   call Reg.00402DB4
0045C768  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C76E  |.  8B55 EC       mov edx,[local.5]
0045C771  |.  8A52 03       mov dl,byte ptr ds:[edx+0x3]
0045C774  |.  8850 01       mov byte ptr ds:[eax+0x1],dl             ;  edx[3]
0045C777  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C77A  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C780  |.  8D45 80       lea eax,[local.32]
0045C783  |.  B1 02         mov cl,0x2
0045C785  |.  E8 FA65FAFF   call Reg.00402D84
0045C78A  |.  8D55 80       lea edx,[local.32]
0045C78D  |.  8D85 78FFFFFF lea eax,[local.34]
0045C793  |.  E8 1C66FAFF   call Reg.00402DB4
0045C798  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C79E  |.  8B55 EC       mov edx,[local.5]
0045C7A1  |.  8A52 04       mov dl,byte ptr ds:[edx+0x4]
0045C7A4  |.  8850 01       mov byte ptr ds:[eax+0x1],dl             ;  edx[4]
0045C7A7  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C7AA  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C7B0  |.  8D85 78FFFFFF lea eax,[local.34]
0045C7B6  |.  B1 03         mov cl,0x3
0045C7B8  |.  E8 C765FAFF   call Reg.00402D84
0045C7BD  |.  8D95 78FFFFFF lea edx,[local.34]
0045C7C3  |.  8D85 70FFFFFF lea eax,[local.36]
0045C7C9  |.  E8 E665FAFF   call Reg.00402DB4
0045C7CE  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C7D4  |.  8B55 EC       mov edx,[local.5]
0045C7D7  |.  8A52 08       mov dl,byte ptr ds:[edx+0x8]
0045C7DA  |.  8850 01       mov byte ptr ds:[eax+0x1],dl             ;  edx[8]
0045C7DD  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C7E0  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C7E6  |.  8D85 70FFFFFF lea eax,[local.36]
0045C7EC  |.  B1 04         mov cl,0x4
0045C7EE  |.  E8 9165FAFF   call Reg.00402D84
0045C7F3  |.  8D95 70FFFFFF lea edx,[local.36]
0045C7F9  |.  8D85 68FFFFFF lea eax,[local.38]
0045C7FF  |.  E8 B065FAFF   call Reg.00402DB4
0045C804  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C80A  |.  8B55 EC       mov edx,[local.5]
0045C80D  |.  8A52 09       mov dl,byte ptr ds:[edx+0x9]             ;  edx[9]
0045C810  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C813  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C816  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C81C  |.  8D85 68FFFFFF lea eax,[local.38]
0045C822  |.  B1 05         mov cl,0x5
0045C824  |.  E8 5B65FAFF   call Reg.00402D84
0045C829  |.  8D95 68FFFFFF lea edx,[local.38]
0045C82F  |.  8D85 60FFFFFF lea eax,[local.40]
0045C835  |.  E8 7A65FAFF   call Reg.00402DB4
0045C83A  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C840  |.  8B55 EC       mov edx,[local.5]
0045C843  |.  8A52 0C       mov dl,byte ptr ds:[edx+0xC]             ;  edx[c]
0045C846  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C849  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C84C  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C852  |.  8D85 60FFFFFF lea eax,[local.40]
0045C858  |.  B1 06         mov cl,0x6
0045C85A  |.  E8 2565FAFF   call Reg.00402D84
0045C85F  |.  8D95 60FFFFFF lea edx,[local.40]
0045C865  |.  8D85 58FFFFFF lea eax,[local.42]
0045C86B  |.  E8 4465FAFF   call Reg.00402DB4
0045C870  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C876  |.  8B55 EC       mov edx,[local.5]
0045C879  |.  8A52 0D       mov dl,byte ptr ds:[edx+0xD]             ;  edx[d]
0045C87C  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C87F  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C882  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C888  |.  8D85 58FFFFFF lea eax,[local.42]
0045C88E  |.  B1 07         mov cl,0x7
0045C890  |.  E8 EF64FAFF   call Reg.00402D84
0045C895  |.  8D95 58FFFFFF lea edx,[local.42]
0045C89B  |.  8D85 4CFFFFFF lea eax,[local.45]
0045C8A1  |.  E8 0E65FAFF   call Reg.00402DB4
0045C8A6  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C8AC  |.  8B55 EC       mov edx,[local.5]
0045C8AF  |.  8A52 0E       mov dl,byte ptr ds:[edx+0xE]             ;  edx[e]
0045C8B2  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C8B5  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C8B8  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C8BE  |.  8D85 4CFFFFFF lea eax,[local.45]
0045C8C4  |.  B1 08         mov cl,0x8
0045C8C6  |.  E8 B964FAFF   call Reg.00402D84
0045C8CB  |.  8D95 4CFFFFFF lea edx,[local.45]
0045C8D1  |.  8D45 88       lea eax,[local.30]
0045C8D4  |.  E8 EB7CFAFF   call Reg.004045C4
0045C8D9  |.  8B45 88       mov eax,[local.30]
0045C8DC  |.  E8 B3F6FFFF   call Reg.0045BF94
0045C8E1  |.  8D4D 8C       lea ecx,[local.29]
0045C8E4  |.  BA 02000000   mov edx,0x2
0045C8E9  |.  E8 12BCFAFF   call Reg.00408500
0045C8EE  |.  8B45 8C       mov eax,[local.29]                       ;  [2,3,4,8,9,c,d,e] 11000011 = 195 = 0xC3
0045C8F1  |.  50            push eax
0045C8F2  |.  8D45 84       lea eax,[local.31]
0045C8F5  |.  8B55 EC       mov edx,[local.5]
0045C8F8  |.  8A12          mov dl,byte ptr ds:[edx]                 ;  edx[0]
0045C8FA  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C8FD  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C900  |.  8D55 84       lea edx,[local.31]
0045C903  |.  8D45 80       lea eax,[local.32]
0045C906  |.  E8 A964FAFF   call Reg.00402DB4
0045C90B  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C911  |.  8B55 EC       mov edx,[local.5]
0045C914  |.  8A52 01       mov dl,byte ptr ds:[edx+0x1]             ;  edx[1]
0045C917  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C91A  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C91D  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C923  |.  8D45 80       lea eax,[local.32]
0045C926  |.  B1 02         mov cl,0x2
0045C928  |.  E8 5764FAFF   call Reg.00402D84
0045C92D  |.  8D55 80       lea edx,[local.32]
0045C930  |.  8D85 78FFFFFF lea eax,[local.34]
0045C936  |.  E8 7964FAFF   call Reg.00402DB4
0045C93B  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C941  |.  8B55 EC       mov edx,[local.5]
0045C944  |.  8A52 05       mov dl,byte ptr ds:[edx+0x5]             ;  edx[5]
0045C947  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C94A  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C94D  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C953  |.  8D85 78FFFFFF lea eax,[local.34]
0045C959  |.  B1 03         mov cl,0x3
0045C95B  |.  E8 2464FAFF   call Reg.00402D84
0045C960  |.  8D95 78FFFFFF lea edx,[local.34]
0045C966  |.  8D85 70FFFFFF lea eax,[local.36]
0045C96C  |.  E8 4364FAFF   call Reg.00402DB4
0045C971  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C977  |.  8B55 EC       mov edx,[local.5]
0045C97A  |.  8A52 06       mov dl,byte ptr ds:[edx+0x6]             ;  edx[6]
0045C97D  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C980  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C983  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C989  |.  8D85 70FFFFFF lea eax,[local.36]
0045C98F  |.  B1 04         mov cl,0x4
0045C991  |.  E8 EE63FAFF   call Reg.00402D84
0045C996  |.  8D95 70FFFFFF lea edx,[local.36]
0045C99C  |.  8D85 68FFFFFF lea eax,[local.38]
0045C9A2  |.  E8 0D64FAFF   call Reg.00402DB4
0045C9A7  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C9AD  |.  8B55 EC       mov edx,[local.5]
0045C9B0  |.  8A52 07       mov dl,byte ptr ds:[edx+0x7]             ;  edx[7]
0045C9B3  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C9B6  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C9B9  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C9BF  |.  8D85 68FFFFFF lea eax,[local.38]
0045C9C5  |.  B1 05         mov cl,0x5
0045C9C7  |.  E8 B863FAFF   call Reg.00402D84
0045C9CC  |.  8D95 68FFFFFF lea edx,[local.38]
0045C9D2  |.  8D85 60FFFFFF lea eax,[local.40]
0045C9D8  |.  E8 D763FAFF   call Reg.00402DB4
0045C9DD  |.  8D85 7CFFFFFF lea eax,[local.33]
0045C9E3  |.  8B55 EC       mov edx,[local.5]
0045C9E6  |.  8A52 0A       mov dl,byte ptr ds:[edx+0xA]             ;  edx[a]
0045C9E9  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045C9EC  |.  C600 01       mov byte ptr ds:[eax],0x1
0045C9EF  |.  8D95 7CFFFFFF lea edx,[local.33]
0045C9F5  |.  8D85 60FFFFFF lea eax,[local.40]
0045C9FB  |.  B1 06         mov cl,0x6
0045C9FD  |.  E8 8263FAFF   call Reg.00402D84
0045CA02  |.  8D95 60FFFFFF lea edx,[local.40]
0045CA08  |.  8D85 58FFFFFF lea eax,[local.42]
0045CA0E  |.  E8 A163FAFF   call Reg.00402DB4
0045CA13  |.  8D85 7CFFFFFF lea eax,[local.33]
0045CA19  |.  8B55 EC       mov edx,[local.5]
0045CA1C  |.  8A52 0B       mov dl,byte ptr ds:[edx+0xB]             ;  edx[b]
0045CA1F  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045CA22  |.  C600 01       mov byte ptr ds:[eax],0x1
0045CA25  |.  8D95 7CFFFFFF lea edx,[local.33]
0045CA2B  |.  8D85 58FFFFFF lea eax,[local.42]
0045CA31  |.  B1 07         mov cl,0x7
0045CA33  |.  E8 4C63FAFF   call Reg.00402D84
0045CA38  |.  8D95 58FFFFFF lea edx,[local.42]
0045CA3E  |.  8D85 4CFFFFFF lea eax,[local.45]
0045CA44  |.  E8 6B63FAFF   call Reg.00402DB4
0045CA49  |.  8D85 7CFFFFFF lea eax,[local.33]
0045CA4F  |.  8B55 EC       mov edx,[local.5]
0045CA52  |.  8A52 0F       mov dl,byte ptr ds:[edx+0xF]             ;  edx[f]
0045CA55  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
0045CA58  |.  C600 01       mov byte ptr ds:[eax],0x1
0045CA5B  |.  8D95 7CFFFFFF lea edx,[local.33]
0045CA61  |.  8D85 4CFFFFFF lea eax,[local.45]
0045CA67  |.  B1 08         mov cl,0x8
0045CA69  |.  E8 1663FAFF   call Reg.00402D84
0045CA6E  |.  8D95 4CFFFFFF lea edx,[local.45]
0045CA74  |.  8D85 44FFFFFF lea eax,[local.47]
0045CA7A  |.  E8 457BFAFF   call Reg.004045C4
0045CA7F  |.  8B85 44FFFFFF mov eax,[local.47]
0045CA85  |.  E8 0AF5FFFF   call Reg.0045BF94
0045CA8A  |.  8D8D 48FFFFFF lea ecx,[local.46]
0045CA90  |.  BA 02000000   mov edx,0x2
0045CA95  |.  E8 66BAFAFF   call Reg.00408500
0045CA9A  |.  8B95 48FFFFFF mov edx,[local.46]                       ;  [0,1,5,6,7,a,b,f] 00010111 = 23 = 0x17
0045CAA0  |.  8D45 DC       lea eax,[local.9]
0045CAA3  |.  59            pop ecx                                  ;  0019FD44
0045CAA4  |.  E8 C37BFAFF   call Reg.0040466C
0045CAA9  |.  8D85 40FFFFFF lea eax,[local.48]
0045CAAF  |.  8B4D E4       mov ecx,[local.7]
0045CAB2  |.  8B55 DC       mov edx,[local.9]                        ;  时间密文: 17C3
0045CAB5  |.  E8 B27BFAFF   call Reg.0040466C
0045CABA  |.  8B85 40FFFFFF mov eax,[local.48]                       ;  时间串与固定串连接
0045CAC0  |.  8D55 D8       lea edx,[local.10]
0045CAC3  |.  E8 7CF7FFFF   call <Reg.得到2位值>                      ;  得到2位值 = 02, 功能未知
0045CAC8  |.  8D45 D4       lea eax,[local.11]
0045CACB  |.  50            push eax
0045CACC  |.  8D85 38FFFFFF lea eax,[local.50]
0045CAD2  |.  8B4D D8       mov ecx,[local.10]
0045CAD5  |.  8B55 DC       mov edx,[local.9]
0045CAD8  |.  E8 8F7BFAFF   call Reg.0040466C
0045CADD  |.  8B85 38FFFFFF mov eax,[local.50]                       ;  连接串 = 17C302
0045CAE3  |.  8D55 B8       lea edx,[local.18]
0045CAE6  |.  E8 51F3FFFF   call <Reg.生成MD5串>                      ;  得到 str4
0045CAEB  |.  8D45 B8       lea eax,[local.18]
0045CAEE  |.  8D95 3CFFFFFF lea edx,[local.49]
0045CAF4  |.  E8 B7F3FFFF   call Reg.0045BEB0
0045CAF9  |.  8B85 3CFFFFFF mov eax,[local.49]                       ;  str4
0045CAFF  |.  B9 02000000   mov ecx,0x2
0045CB04  |.  BA 08000000   mov edx,0x8
0045CB09  |.  E8 727DFAFF   call Reg.00404880                     ;  得到c4
0045CB0E  |.  8D85 34FFFFFF lea eax,[local.51]
0045CB14  |.  8B4D E8       mov ecx,[local.6]                        ;  str1
0045CB17  |.  8B55 E4       mov edx,[local.7]                        ;  str3
0045CB1A  |.  E8 4D7BFAFF   call Reg.0040466C
0045CB1F  |.  8B85 34FFFFFF mov eax,[local.51]                       ;  str1 + str3
0045CB25  |.  8D55 D0       lea edx,[local.12]
0045CB28  |.  E8 17F7FFFF   call <Reg.得到2位值>                      ;  得到2位值 = B7
0045CB2D  |.  8D85 30FFFFFF lea eax,[local.52]
0045CB33  |.  8B4D E8       mov ecx,[local.6]
0045CB36  |.  8B55 E0       mov edx,[local.8]                        ;  str2
0045CB39  |.  E8 2E7BFAFF   call Reg.0040466C
0045CB3E  |.  8B85 30FFFFFF mov eax,[local.52]                       ;  str2 + str3
0045CB44  |.  8D55 CC       lea edx,[local.13]
0045CB47  |.  E8 F8F6FFFF   call <Reg.得到2位值>                      ;  得到2位值 = 26
0045CB4C  |.  FF75 D8       push [local.10]
0045CB4F  |.  FF75 DC       push [local.9]
0045CB52  |.  FF75 D4       push [local.11]
0045CB55  |.  8D85 28FFFFFF lea eax,[local.54]
0045CB5B  |.  8B55 E8       mov edx,[local.6]
0045CB5E  |.  8A52 07       mov dl,byte ptr ds:[edx+0x7]
0045CB61  |.  E8 E279FAFF   call Reg.00404548
0045CB66  |.  FFB5 28FFFFFF push [local.54]                          ;  edx[7] = a
0045CB6C  |.  8D85 24FFFFFF lea eax,[local.55]
0045CB72  |.  8B55 E8       mov edx,[local.6]
0045CB75  |.  8A52 0E       mov dl,byte ptr ds:[edx+0xE]             ;  edx[e] = 1
0045CB78  |.  E8 CB79FAFF   call Reg.00404548
0045CB7D  |.  FFB5 24FFFFFF push [local.55]
0045CB83  |.  FF75 D0       push [local.12]                          ;  B7, 应该是上面call来的
0045CB86  |.  8D85 20FFFFFF lea eax,[local.56]
0045CB8C  |.  8B55 E8       mov edx,[local.6]
0045CB8F  |.  8A52 17       mov dl,byte ptr ds:[edx+0x17]            ;  edx[17] = 5
0045CB92  |.  E8 B179FAFF   call Reg.00404548
0045CB97  |.  FFB5 20FFFFFF push [local.56]
0045CB9D  |.  8D85 1CFFFFFF lea eax,[local.57]
0045CBA3  |.  8B55 E8       mov edx,[local.6]
0045CBA6  |.  8A52 0B       mov dl,byte ptr ds:[edx+0xB]             ;  edx[b] = c
0045CBA9  |.  E8 9A79FAFF   call Reg.00404548
0045CBAE  |.  FFB5 1CFFFFFF push [local.57]
0045CBB4  |.  FF75 CC       push [local.13]                          ;  26
0045CBB7  |.  8D85 2CFFFFFF lea eax,[local.53]
0045CBBD  |.  BA 09000000   mov edx,0x9
0045CBC2  |.  E8 197BFAFF   call Reg.004046E0
0045CBC7  |.  8B85 2CFFFFFF mov eax,[local.53]                       ;  连接上面所有 = 02 17C3 c4 a1 B7 5c 26
0045CBCD  |.  8D55 C8       lea edx,[local.14]
0045CBD0  |.  E8 5FB3FAFF   call Reg.00407F34
0045CBD5  |.  8B45 F4       mov eax,[local.3]
0045CBD8  |.  8B55 C8       mov edx,[local.14]
0045CBDB  |.  E8 D477FAFF   call Reg.004043B4
0045CBE0  |.  33C0          xor eax,eax
0045CBE2  |.  5A            pop edx                                  ;  0019FD44
0045CBE3  |.  59            pop ecx                                  ;  0019FD44
0045CBE4  |.  59            pop ecx                                  ;  0019FD44
0045CBE5  |.  64:8910       mov dword ptr fs:[eax],edx
0045CBE8  |.  68 2CCC4500   push Reg.0045CC2C
0045CBED  |>  8D85 1CFFFFFF lea eax,[local.57]
0045CBF3  |.  BA 0C000000   mov edx,0xC
0045CBF8  |.  E8 8777FAFF   call Reg.00404384
0045CBFD  |.  8D45 88       lea eax,[local.30]
0045CC00  |.  BA 0C000000   mov edx,0xC
0045CC05  |.  E8 7A77FAFF   call Reg.00404384
0045CC0A  |.  8D45 C8       lea eax,[local.14]
0045CC0D  |.  BA 0B000000   mov edx,0xB
0045CC12  |.  E8 6D77FAFF   call Reg.00404384
0045CC17  |.  8D45 F8       lea eax,[local.2]
0045CC1A  |.  BA 02000000   mov edx,0x2
0045CC1F  |.  E8 6077FAFF   call Reg.00404384
0045CC24  \.  C3            retn

到此两个关键算法分析完成, 其中MD5算法的确定需要有一定的算法基础, 不然很难解出这个程序, 两个关键性的标志就是,
1.结果是32位的, 2.里有4个方法分别执行了16次

...
FF(a, b, c, D, Block[0], 7, $D76AA478);
FF(D, a, b, c, Block[1], 12, $E8C7B756);
FF(c, D, a, b, Block[2], 17, $242070DB);
FF(b, c, D, a, Block[3], 22, $C1BDCEEE);
FF(a, b, c, D, Block[4], 7, $F57C0FAF);
FF(D, a, b, c, Block[5], 12, $4787C62A);
FF(c, D, a, b, Block[6], 17, $A8304613);
FF(b, c, D, a, Block[7], 22, $FD469501);
FF(a, b, c, D, Block[8], 7, $698098D8);
FF(D, a, b, c, Block[9], 12, $8B44F7AF);
FF(c, D, a, b, Block[10], 17, $FFFF5BB1);
FF(b, c, D, a, Block[11], 22, $895CD7BE);
FF(a, b, c, D, Block[12], 7, $6B901122);
FF(D, a, b, c, Block[13], 12, $FD987193);
FF(c, D, a, b, Block[14], 17, $A679438E);
FF(b, c, D, a, Block[15], 22, $49B40821);
GG(a, b, c, D, Block[1], 5, $F61E2562);
GG(D, a, b, c, Block[6], 9, $C040B340);
GG(c, D, a, b, Block[11], 14, $265E5A51);
GG(b, c, D, a, Block[0], 20, $E9B6C7AA);
GG(a, b, c, D, Block[5], 5, $D62F105D);
GG(D, a, b, c, Block[10], 9, $2441453);
GG(c, D, a, b, Block[15], 14, $D8A1E681);
GG(b, c, D, a, Block[4], 20, $E7D3FBC8);
GG(a, b, c, D, Block[9], 5, $21E1CDE6);
GG(D, a, b, c, Block[14], 9, $C33707D6);
GG(c, D, a, b, Block[3], 14, $F4D50D87);
GG(b, c, D, a, Block[8], 20, $455A14ED);
GG(a, b, c, D, Block[13], 5, $A9E3E905);
GG(D, a, b, c, Block[2], 9, $FCEFA3F8);
GG(c, D, a, b, Block[7], 14, $676F02D9);
GG(b, c, D, a, Block[12], 20, $8D2A4C8A);
HH(a, b, c, D, Block[5], 4, $FFFA3942);
HH(D, a, b, c, Block[8], 11, $8771F681);
HH(c, D, a, b, Block[11], 16, $6D9D6122);
HH(b, c, D, a, Block[14], 23, $FDE5380C);
HH(a, b, c, D, Block[1], 4, $A4BEEA44);
HH(D, a, b, c, Block[4], 11, $4BDECFA9);
HH(c, D, a, b, Block[7], 16, $F6BB4B60);
HH(b, c, D, a, Block[10], 23, $BEBFBC70);
HH(a, b, c, D, Block[13], 4, $289B7EC6);
HH(D, a, b, c, Block[0], 11, $EAA127FA);
HH(c, D, a, b, Block[3], 16, $D4EF3085);
HH(b, c, D, a, Block[6], 23, $4881D05);
HH(a, b, c, D, Block[9], 4, $D9D4D039);
HH(D, a, b, c, Block[12], 11, $E6DB99E5);
HH(c, D, a, b, Block[15], 16, $1FA27CF8);
HH(b, c, D, a, Block[2], 23, $C4AC5665);
II(a, b, c, D, Block[0], 6, $F4292244);
II(D, a, b, c, Block[7], 10, $432AFF97);
II(c, D, a, b, Block[14], 15, $AB9423A7);
II(b, c, D, a, Block[5], 21, $FC93A039);
II(a, b, c, D, Block[12], 6, $655B59C3);
II(D, a, b, c, Block[3], 10, $8F0CCC92);
II(c, D, a, b, Block[10], 15, $FFEFF47D);
II(b, c, D, a, Block[1], 21, $85845DD1);
II(a, b, c, D, Block[8], 6, $6FA87E4F);
II(D, a, b, c, Block[15], 10, $FE2CE6E0);
II(c, D, a, b, Block[6], 15, $A3014314);
II(b, c, D, a, Block[13], 21, $4E0811A1);
II(a, b, c, D, Block[4], 6, $F7537E82);
II(D, a, b, c, Block[11], 10, $BD3AF235);
II(c, D, a, b, Block[2], 15, $2AD7D2BB);
II(b, c, D, a, Block[9], 21, $EB86D391);
...

示例:
UserName=Reg
UN=0217C3C4A1B75C26
注册机就不用写了, 作者自带注册机_

 
 
本节高手录制的视频,点击前往查看

 
 
 

使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-12-09 17:15  hankerstudio  阅读(0)  评论(0)    收藏  举报