【文章标题】: XX人力资源管理软件 算法分析
【文章作者】: 笑熬浆糊
【作者邮箱】: zhude111@163.com
【软件名称】: XX人力资源管理软件
【软件大小】: 3.7M
【下载地址】: http://www.newhua.com/soft/47770.htm
【加壳方式】: 无
【保护方式】: 注册码
【使用工具】: OD
【软件介绍】: 很不错的人力资源管理软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
昨天晚上搞了了两个 CrackMe 后 信心倍增,今天去华军挑了个软柿子~~嘿嘿~~
建议和我一样的新手不要心浮气燥,一定要从最容易的 CrackMe 入手,这样子才能增加信心.
帐入帐号 zhue111 试练码 787878
点注册~~提示,注册码错误, 哈哈~~字符查找直接来到这里
005EC2BF . E8 087AE1FF call 00403CCC
005EC2C4 . 6A 00 push 0
005EC2C6 . 68 F0C35E00 push 005EC3F0 ; 系统注册成功,欢迎你使用本软件! //从这里向上找可以看到关键跳
005EC2CB . E8 5003FFFF call <jmp.&PunUnitLib.ShowMess>
005EC2D0 . A1 10C66300 mov eax, dword ptr [63C610]
005EC2D5 . C700 02000000 mov dword ptr [eax], 2
005EC2DB . A1 C4C36300 mov eax, dword ptr [63C3C4]
005EC2E0 . 8B00 mov eax, dword ptr [eax]
005EC2E2 . E8 F145E8FF call 004708D8
005EC2E7 . 33C0 xor eax, eax
005EC2E9 . 5A pop edx
005EC2EA . 59 pop ecx
005EC2EB . 59 pop ecx
005EC2EC . 64:8910 mov dword ptr fs:[eax], edx
005EC2EF . EB 20 jmp short 005EC311
005EC2F1 .^ E9 B67EE1FF jmp 004041AC
005EC2F6 . 8B45 FC mov eax, dword ptr [ebp-4]
005EC2F9 . E8 2A0DE8FF call 0046D028
005EC2FE . E8 D582E1FF call 004045D8
005EC303 . EB 0C jmp short 005EC311
005EC305 > 6A 03 push 3
005EC307 . 68 14C45E00 push 005EC414 ; 系统注册失败,请检查注册是否有误! //我们直接字符查找来到了这里
005EC30C . E8 0F03FFFF call <jmp.&PunUnitLib.ShowMess>
005EC311 > 33C0 xor eax, eax
005EC313 . 5A pop edx
// 下面就是比较了,明码比较
005EC1F6 . 8B45 E0 mov eax, dword ptr [ebp-20] //试练码
005EC1F9 . 8B55 F8 mov edx, dword ptr [ebp-8] //真码
005EC1FC . E8 378DE1FF call 00404F38
005EC201 . 0F85 FE000000 jnz 005EC305 //关键跳
再往上就可以找到注册算法
来到了这里~~~
005EC0F8 . 55 push ebp
005EC0F9 . 8BEC mov ebp, esp
005EC0FB . B9 06000000 mov ecx, 6
005EC100 > 6A 00 push 0
005EC102 . 6A 00 push 0
005EC104 . 49 dec ecx
005EC105 .^ 75 F9 jnz short 005EC100
005EC107 . 51 push ecx
005EC108 . 53 push ebx
005EC109 . 56 push esi
005EC10A . 57 push edi
005EC10B . 8945 FC mov dword ptr [ebp-4], eax
005EC10E . 33C0 xor eax, eax
005EC110 . 55 push ebp
005EC111 . 68 76C35E00 push 005EC376
005EC116 . 64:FF30 push dword ptr fs:[eax]
005EC119 . 64:8920 mov dword ptr fs:[eax], esp
005EC11C . 8D55 F0 lea edx, dword ptr [ebp-10]
005EC11F . 8B45 FC mov eax, dword ptr [ebp-4]
005EC122 . 8B80 04030000 mov eax, dword ptr [eax+304]
005EC128 . E8 AF2BE6FF call 0044ECDC
005EC12D . 8B45 F0 mov eax, dword ptr [ebp-10]
005EC130 . 8D55 F4 lea edx, dword ptr [ebp-C]
005EC133 . E8 04D6E1FF call 0040973C
005EC138 . 837D F4 00 cmp dword ptr [ebp-C], 0
005EC13C . 75 22 jnz short 005EC160
005EC13E . 6A 00 push 0
005EC140 . 68 84C35E00 push 005EC384 ; 请填写用户名称!
005EC145 . E8 D604FFFF call <jmp.&PunUnitLib.ShowMess>
005EC14A . 8B45 FC mov eax, dword ptr [ebp-4]
005EC14D . 8B80 04030000 mov eax, dword ptr [eax+304]
005EC153 . 8B10 mov edx, dword ptr [eax]
005EC155 . FF92 C0000000 call dword ptr [edx+C0]
005EC15B . E9 B1010000 jmp 005EC311
005EC160 > 8D55 E8 lea edx, dword ptr [ebp-18]
005EC163 . 8B45 FC mov eax, dword ptr [ebp-4]
005EC166 . 8B80 FC020000 mov eax, dword ptr [eax+2FC]
005EC16C . E8 6B2BE6FF call 0044ECDC
005EC171 . 8B45 E8 mov eax, dword ptr [ebp-18]
005EC174 . 8D55 EC lea edx, dword ptr [ebp-14]
005EC177 . E8 C0D5E1FF call 0040973C
005EC17C . 837D EC 00 cmp dword ptr [ebp-14], 0
005EC180 . 75 22 jnz short 005EC1A4
005EC182 . 6A 00 push 0
005EC184 . 68 98C35E00 push 005EC398 ; 授权号不能为空,请填写授权号!
005EC189 . E8 9204FFFF call <jmp.&PunUnitLib.ShowMess>
005EC18E . 8B45 FC mov eax, dword ptr [ebp-4]
005EC191 . 8B80 FC020000 mov eax, dword ptr [eax+2FC]
005EC197 . 8B10 mov edx, dword ptr [eax]
005EC199 . FF92 C0000000 call dword ptr [edx+C0]
005EC19F . E9 6D010000 jmp 005EC311
005EC1A4 > A1 14C66300 mov eax, dword ptr [63C614]
005EC1A9 . 8B00 mov eax, dword ptr [eax]
005EC1AB . E8 3C8EE1FF call 00404FEC
005EC1B0 . 50 push eax
005EC1B1 . 8D55 E4 lea edx, dword ptr [ebp-1C]
005EC1B4 . 8B45 FC mov eax, dword ptr [ebp-4]
005EC1B7 . 8B80 F4020000 mov eax, dword ptr [eax+2F4]
005EC1BD . E8 1A2BE6FF call 0044ECDC ; 取硬盘号 我的是 WD-WCANY****
005EC1C2 . 8B45 E4 mov eax, dword ptr [ebp-1C]
005EC1C5 . E8 228EE1FF call 00404FEC
005EC1CA . 50 push eax
005EC1CB . E8 8004FFFF call <jmp.&PunUnitLib.GetRegPass> ; 跟进~~这里就是注册码算法
005EC1D0 . 8BD0 mov edx, eax
005EC1D2 . 8D45 F8 lea eax, dword ptr [ebp-8]
005EC1D5 . E8 528BE1FF call 00404D2C
005EC1DA . 8D55 DC lea edx, dword ptr [ebp-24]
005EC1DD . 8B45 FC mov eax, dword ptr [ebp-4]
005EC1E0 . 8B80 FC020000 mov eax, dword ptr [eax+2FC]
005EC1E6 . E8 F12AE6FF call 0044ECDC
005EC1EB . 8B45 DC mov eax, dword ptr [ebp-24]
005EC1EE . 8D55 E0 lea edx, dword ptr [ebp-20]
005EC1F1 . E8 46D5E1FF call 0040973C
005EC1F6 . 8B45 E0 mov eax, dword ptr [ebp-20]
005EC1F9 . 8B55 F8 mov edx, dword ptr [ebp-8]
005EC1FC . E8 378DE1FF call 00404F38
005EC201 . 0F85 FE000000 jnz 005EC305
005EC207 . 33C0 xor eax, eax
//跟进后我们来到了这里~~~
003E9024 > 55 push ebp ; 注册算法
003E9025 8BEC mov ebp, esp
003E9027 B9 06000000 mov ecx, 6
003E902C 6A 00 push 0
003E902E 6A 00 push 0
003E9030 49 dec ecx
003E9031 ^ 75 F9 jnz short 003E902C
003E9033 53 push ebx
003E9034 56 push esi
003E9035 33C0 xor eax, eax
003E9037 55 push ebp
003E9038 68 F2913E00 push 003E91F2
003E903D 64:FF30 push dword ptr fs:[eax]
003E9040 64:8920 mov dword ptr fs:[eax], esp
003E9043 8D45 EC lea eax, dword ptr [ebp-14]
003E9046 E8 65B5F8FF call 003745B0
003E904B 8D45 F0 lea eax, dword ptr [ebp-10]
003E904E 8B55 08 mov edx, dword ptr [ebp+8] ; 硬盘号给 EDX
003E9051 E8 4AB7F8FF call 003747A0
003E9056 8B45 F0 mov eax, dword ptr [ebp-10]
003E9059 E8 0AB8F8FF call 00374868
003E905E 8BF0 mov esi, eax
003E9060 85F6 test esi, esi
003E9062 7E 26 jle short 003E908A
003E9064 BB 01000000 mov ebx, 1
003E9069 8D4D E8 lea ecx, dword ptr [ebp-18] ; //依次取出硬盘号的 ASCII 连接成一个字符串
003E906C 8B45 F0 mov eax, dword ptr [ebp-10]
003E906F 0FB64418 FF movzx eax, byte ptr [eax+ebx-1] ; 依次取出硬盘序号的一个字节的 ASCII码
003E9074 33D2 xor edx, edx
003E9076 E8 F905F9FF call 00379674
003E907B 8B55 E8 mov edx, dword ptr [ebp-18]
003E907E 8D45 FC lea eax, dword ptr [ebp-4]
003E9081 E8 EAB7F8FF call 00374870
003E9086 43 inc ebx
003E9087 4E dec esi
003E9088 ^ 75 DF jnz short 003E9069
003E908A 8B45 FC mov eax, dword ptr [ebp-4] ; 硬盘序号的 ASCII 码连接在一起的结果 假设为 123456
003E908D E8 D6B7F8FF call 00374868
003E9092 8BF0 mov esi, eax
003E9094 85F6 test esi, esi
003E9096 7E 2C jle short 003E90C4
003E9098 BB 01000000 mov ebx, 1
003E909D 8B45 FC mov eax, dword ptr [ebp-4] ; 硬盘ASCII串
003E90A0 E8 C3B7F8FF call 00374868
003E90A5 2BC3 sub eax, ebx
003E90A7 8B55 FC mov edx, dword ptr [ebp-4]
003E90AA 8A1402 mov dl, byte ptr [edx+eax]
003E90AD 8D45 E4 lea eax, dword ptr [ebp-1C]
003E90B0 E8 DBB6F8FF call 00374790
003E90B5 8B55 E4 mov edx, dword ptr [ebp-1C]
003E90B8 8D45 F8 lea eax, dword ptr [ebp-8]
003E90BB E8 B0B7F8FF call 00374870
003E90C0 43 inc ebx
003E90C1 4E dec esi
003E90C2 ^ 75 D9 jnz short 003E909D ; 以上过程把 硬盘ASCII 倒过来 设B 变成 654321
003E90C4 8D45 FC lea eax, dword ptr [ebp-4]
003E90C7 50 push eax
003E90C8 B9 04000000 mov ecx, 4
003E90CD BA 01000000 mov edx, 1
003E90D2 8B45 F8 mov eax, dword ptr [ebp-8]
003E90D5 E8 E6B9F8FF call 00374AC0
003E90DA 8D45 F8 lea eax, dword ptr [ebp-8]
003E90DD 50 push eax
003E90DE B9 04000000 mov ecx, 4
003E90E3 BA 05000000 mov edx, 5
003E90E8 8B45 F8 mov eax, dword ptr [ebp-8]
003E90EB E8 D0B9F8FF call 00374AC0
003E90F0 8B45 FC mov eax, dword ptr [ebp-4] ; 取出B的头4位
003E90F3 E8 70B7F8FF call 00374868
003E90F8 83F8 04 cmp eax, 4
003E90FB 7D 2F jge short 003E912C
003E90FD 8B45 FC mov eax, dword ptr [ebp-4]
003E9100 E8 63B7F8FF call 00374868
003E9105 8BD8 mov ebx, eax
003E9107 83FB 03 cmp ebx, 3
003E910A 7F 20 jg short 003E912C
003E910C 8D4D E0 lea ecx, dword ptr [ebp-20]
003E910F 8BC3 mov eax, ebx
003E9111 C1E0 02 shl eax, 2
003E9114 33D2 xor edx, edx
003E9116 E8 5905F9FF call 00379674
003E911B 8B55 E0 mov edx, dword ptr [ebp-20]
003E911E 8D45 FC lea eax, dword ptr [ebp-4]
003E9121 E8 4AB7F8FF call 00374870
003E9126 43 inc ebx
003E9127 83FB 04 cmp ebx, 4
003E912A ^ 75 E0 jnz short 003E910C
003E912C 8B45 F8 mov eax, dword ptr [ebp-8] ; 取B的下一个4位
003E912F E8 34B7F8FF call 00374868
003E9134 83F8 04 cmp eax, 4
003E9137 7D 2F jge short 003E9168
003E9139 8B45 F8 mov eax, dword ptr [ebp-8]
003E913C E8 27B7F8FF call 00374868
003E9141 8BD8 mov ebx, eax
003E9143 83FB 03 cmp ebx, 3
003E9146 7F 20 jg short 003E9168
003E9148 8D4D DC lea ecx, dword ptr [ebp-24]
003E914B 8BC3 mov eax, ebx
003E914D C1E0 02 shl eax, 2
003E9150 33D2 xor edx, edx
003E9152 E8 1D05F9FF call 00379674
003E9157 8B55 DC mov edx, dword ptr [ebp-24]
003E915A 8D45 F8 lea eax, dword ptr [ebp-8]
003E915D E8 0EB7F8FF call 00374870
003E9162 43 inc ebx
003E9163 83FB 04 cmp ebx, 4
003E9166 ^ 75 E0 jnz short 003E9148
003E9168 8D45 D8 lea eax, dword ptr [ebp-28]
003E916B 8B55 0C mov edx, dword ptr [ebp+C] ; 前面我们说到的固定串 CI8D-Q868
003E916E E8 2DB6F8FF call 003747A0
003E9173 8B45 D8 mov eax, dword ptr [ebp-28]
003E9176 8D55 F4 lea edx, dword ptr [ebp-C]
003E9179 E8 DE03F9FF call 0037955C
003E917E 8D45 D4 lea eax, dword ptr [ebp-2C]
003E9181 50 push eax
003E9182 B9 04000000 mov ecx, 4
003E9187 BA 01000000 mov edx, 1
003E918C 8B45 F4 mov eax, dword ptr [ebp-C]
003E918F E8 2CB9F8FF call 00374AC0
003E9194 FF75 D4 push dword ptr [ebp-2C] ; 拿出 CI8D
003E9197 68 0C923E00 push 003E920C
003E919C FF75 FC push dword ptr [ebp-4]
003E919F 8D45 D0 lea eax, dword ptr [ebp-30]
003E91A2 50 push eax
003E91A3 B9 05000000 mov ecx, 5
003E91A8 BA 05000000 mov edx, 5
003E91AD 8B45 F4 mov eax, dword ptr [ebp-C]
003E91B0 E8 0BB9F8FF call 00374AC0 ; 组装
003E91B5 FF75 D0 push dword ptr [ebp-30] ; 拿出后面的 -Q868
003E91B8 68 0C923E00 push 003E920C
003E91BD FF75 F8 push dword ptr [ebp-8]
003E91C0 8D45 EC lea eax, dword ptr [ebp-14]
003E91C3 BA 06000000 mov edx, 6
003E91C8 E8 5BB7F8FF call 00374928
003E91CD 8B45 EC mov eax, dword ptr [ebp-14] ; 最后的结果
003E91D0 E8 8BB8F8FF call 00374A60
003E91D5 8BD8 mov ebx, eax
003E91D7 33C0 xor eax, eax
003E91D9 5A pop edx
003E91DA 59 pop ecx
003E91DB 59 pop ecx
003E91DC 64:8910 mov dword ptr fs:[eax], edx
003E91DF 68 F9913E00 push 003E91F9
003E91E4 8D45 D0 lea eax, dword ptr [ebp-30]
003E91E7 BA 0C000000 mov edx, 0C
003E91EC E8 E3B3F8FF call 003745D4
003E91F1 C3 retn
--------------------------------------------------------------------------------
【经验总结】
注册算法
[注册算法用用户名无关]
注册码分为 4字,4个字符一节 用 - 连接 其中 第 1.3 节固定 节1 CI8D 节3 Q868
注册码应该是 CI8D-????-Q868-????
1.取硬盘的序列号设为 A 我的是STAT硬盘,取出来是 WD-WCANY2398234
2.依次取A的每一位的ASCII并接连在一起 我的是 57442D5743414E5932333938323334
3.把连接后的这个字符串翻转, 设置为B 我这里应该是 4333238393332395E4143475D24475 (倒过来了)
4.取出 B 的0-4位作为 注册码的第二节(4333) 取出 B 的4-8位为注册码的第4节(2383)
最后组装一下 就是 CI8D-4333-Q868-2383
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年02月02日 16:52:12
[注意]看雪招聘,专注安全领域的专业人才平台!