- UID
- 31985
注册时间2007-5-6
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【文章标题】: 菜鸟算法(高手飞过)
【文章作者】: 千里之外
【作者邮箱】: [email protected]
【作者QQ号】: 506398911
【软件名称】: MP3 Splitter
【软件大小】: 120 KB
【下载地址】: https://www.chinapyg.com/viewthread.php?tid=15466
【加壳方式】: 未知壳(可用ESP定律手脱)
【保护方式】: 注册码验证
【编写语言】: Microsoft Visual C++ 7.0
【使用工具】: peid OD
【操作平台】: WINSP2
【软件介绍】: 一款易用的Mp3分割工具。
【作者声明】: 谢谢 fonge版主的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
--------------------------------------------------------------------------------
【详细过程】
大家好 我是千里之外 在这里先谢谢fonge版主的热心指导 是你给我指明了学习的方向 呵呵 我会继续努力的
前几天我曾经在动画区发了个动画 也是破解这个软件的 当时算法一点不懂只好爆破 但是没有搞定重起验证 后来LANCIA兄弟做个补充动画 很是感激 这里再说声谢谢
下面是我做的一个算法分析 很简单的固定码比较 高手飞过 呵呵
004016F3 . 55 push ebp
004016F4 . 56 push esi
004016F5 . 57 push edi
004016F6 . BF 01000000 mov edi, 1
004016FB . 57 push edi
004016FC . 8BF1 mov esi, ecx
004016FE . E8 8CE00100 call 0041F78F
00401703 . 8B46 70 mov eax, dword ptr [esi+70]
00401706 . 8B68 F4 mov ebp, dword ptr [eax-C]
00401709 . 83FD 02 cmp ebp, 2 //用户名位数要不小于2
0040170C . 7D 15 jge short 00401723
0040170E . 6A 00 push 0
00401710 . 6A 00 push 0
00401712 . 68 1CD84200 push 0042D81C
00401717 . E8 91540200 call 00426BAD
0040171C . 5F pop edi
0040171D . 5E pop esi
0040171E . 5D pop ebp
0040171F . 83C4 0C add esp, 0C
00401722 . C3 retn
00401723 > 8B4E 74 mov ecx, dword ptr [esi+74]
00401726 . 8379 F4 08 cmp dword ptr [ecx-C], 8 //注册码位数不小于8
0040172A . 7D 15 jge short 00401741
0040172C . 6A 00 push 0
0040172E . 6A 00 push 0
00401730 . 68 F4D74200 push 0042D7F4
00401735 . E8 73540200 call 00426BAD
0040173A . 5F pop edi
0040173B . 5E pop esi
0040173C . 5D pop ebp
0040173D . 83C4 0C add esp, 0C
00401740 . C3 retn
00401741 > 8B46 70 mov eax, dword ptr [esi+70]
00401744 . 8B48 F4 mov ecx, dword ptr [eax-C]
00401747 . 85C9 test ecx, ecx
00401749 . 7D 0A jge short 00401755
0040174B . 68 57000780 push 80070057
00401750 . E8 1BFAFFFF call 00401170
00401755 > 8A10 mov dl, byte ptr [eax]
00401757 . 8B46 70 mov eax, dword ptr [esi+70]
0040175A . 3978 F4 cmp dword ptr [eax-C], edi
0040175D . 7D 0A jge short 00401769
0040175F . 68 57000780 push 80070057
00401764 . E8 07FAFFFF call 00401170
00401769 > 8A40 01 mov al, byte ptr [eax+1]
0040176C . 884424 0E mov byte ptr [esp+E], al
00401770 . 8B46 70 mov eax, dword ptr [esi+70]
00401773 . 8B48 F4 mov ecx, dword ptr [eax-C]
00401776 . 85C9 test ecx, ecx
00401778 . 7D 0A jge short 00401784
0040177A . 68 57000780 push 80070057
0040177F . E8 ECF9FFFF call 00401170
00401784 > 8B4E 70 mov ecx, dword ptr [esi+70]
00401787 . 53 push ebx
00401788 . 8A18 mov bl, byte ptr [eax]
0040178A . 3979 F4 cmp dword ptr [ecx-C], edi
0040178D . 7D 0A jge short 00401799
0040178F . 68 57000780 push 80070057
00401794 . E8 D7F9FFFF call 00401170
00401799 > 0FB6C2 movzx eax, dl
0040179C . 83C8 44 or eax, 44
0040179F . 99 cdq
004017A0 . BF 0A000000 mov edi, 0A
004017A5 . F7FF idiv edi
004017A7 . 0FB64424 12 movzx eax, byte ptr [esp+12]
004017AC . 83C8 42 or eax, 42
004017AF . 885424 16 mov byte ptr [esp+16], dl
004017B3 . 99 cdq
004017B4 . F7FF idiv edi
004017B6 . 0FB6C3 movzx eax, bl
004017B9 . 83C8 43 or eax, 43
004017BC . 885424 12 mov byte ptr [esp+12], dl
004017C0 . 99 cdq
004017C1 . F7FF idiv edi
004017C3 . 0FB641 01 movzx eax, byte ptr [ecx+1]
004017C7 . 83C8 44 or eax, 44
004017CA . 8BCF mov ecx, edi
004017CC . 885424 17 mov byte ptr [esp+17], dl
004017D0 . 99 cdq
004017D1 . F7F9 idiv ecx
004017D3 . 33C0 xor eax, eax
004017D5 . 33C9 xor ecx, ecx
004017D7 . 85ED test ebp, ebp
004017D9 . 885424 18 mov byte ptr [esp+18], dl
004017DD . 7E 20 jle short 004017FF
004017DF . 90 nop
004017E0 > 85C9 test ecx, ecx
004017E2 . 0F8C D2000000 jl 004018BA
004017E8 . 8B7E 70 mov edi, dword ptr [esi+70] ;
004017EB . 3B4F F4 cmp ecx, dword ptr [edi-C] ;
004017EE . 0F8F C6000000 jg 004018BA
004017F4 . 0FB6140F movzx edx, byte ptr [edi+ecx]
004017F8 . 03C2 add eax, edx
004017FA . 41 inc ecx
004017FB . 3BCD cmp ecx, ebp
004017FD .^ 7C E1 jl short 004017E0
004017FF > 8B4E 74 mov ecx, dword ptr [esi+74] ;
00401802 . 8B51 F4 mov edx, dword ptr [ecx-C] ;
00401805 . 85D2 test edx, edx
00401807 . 7D 0A jge short 00401813
00401809 . 68 57000780 push 80070057
0040180E . E8 5DF9FFFF call 00401170
00401813 > 8A11 mov dl, byte ptr [ecx]
00401815 . 8B4E 74 mov ecx, dword ptr [esi+74]
00401818 . 8379 F4 01 cmp dword ptr [ecx-C], 1
0040181C . 885424 19 mov byte ptr [esp+19], dl
00401820 . 7D 0A jge short 0040182C
00401822 . 68 57000780 push 80070057
00401827 . E8 44F9FFFF call 00401170
0040182C > 8A49 01 mov cl, byte ptr [ecx+1]
0040182F . 8B7E 74 mov edi, dword ptr [esi+74]
00401832 . 884C24 13 mov byte ptr [esp+13], cl
00401836 . 837F F4 02 cmp dword ptr [edi-C], 2
0040183A . 7D 0A jge short 00401846
0040183C . 68 57000780 push 80070057
00401841 . E8 2AF9FFFF call 00401170
00401846 > 8A4F 02 mov cl, byte ptr [edi+2]
00401849 . 8B7E 74 mov edi, dword ptr [esi+74]
0040184C . 884C24 14 mov byte ptr [esp+14], cl
00401850 . 837F F4 03 cmp dword ptr [edi-C], 3
00401854 . 7D 0A jge short 00401860
00401856 . 68 57000780 push 80070057
0040185B . E8 10F9FFFF call 00401170
00401860 > 8A4F 03 mov cl, byte ptr [edi+3]
00401863 . 8B7E 74 mov edi, dword ptr [esi+74]
00401866 . 884C24 15 mov byte ptr [esp+15], cl
0040186A . 837F F4 04 cmp dword ptr [edi-C], 4
0040186E . 7D 0A jge short 0040187A
00401870 . 68 57000780 push 80070057
00401875 . E8 F6F8FFFF call 00401170
0040187A > 8A4F 04 mov cl, byte ptr [edi+4]
0040187D . 8B7E 74 mov edi, dword ptr [esi+74]
00401880 . 837F F4 05 cmp dword ptr [edi-C], 5
00401884 . 7D 0A jge short 00401890
00401886 . 68 57000780 push 80070057
0040188B . E8 E0F8FFFF call 00401170
00401890 > 8A5F 05 mov bl, byte ptr [edi+5]
00401893 . 8B7E 74 mov edi, dword ptr [esi+74]
00401896 . 885C24 1A mov byte ptr [esp+1A], bl
0040189A . 837F F4 06 cmp dword ptr [edi-C], 6
0040189E . 7D 0A jge short 004018AA
004018A0 . 68 57000780 push 80070057
004018A5 . E8 C6F8FFFF call 00401170
004018AA > 8A5F 06 mov bl, byte ptr [edi+6]
004018AD . 8B7E 74 mov edi, dword ptr [esi+74]
004018B0 . 885C24 1B mov byte ptr [esp+1B], bl
004018B4 . 837F F4 07 cmp dword ptr [edi-C], 7 //上面在检验注册码位数是不是不小于8
004018B8 . 7D 0A jge short 004018C4
004018BA > 68 57000780 push 80070057
004018BF . E8 ACF8FFFF call 00401170
004018C4 > 8A5F 07 mov bl, byte ptr [edi+7]
004018C7 . 0FB67C24 16 movzx edi, byte ptr [esp+16]
004018CC . 0FB6D2 movzx edx, dl
004018CF . 83EA 30 sub edx, 30
004018D2 . 3BFA cmp edi, edx
004018D4 . 75 48 jnz short 0040191E
004018D6 . 0FB65424 13 movzx edx, byte ptr [esp+13]
004018DB . 0FB67C24 12 movzx edi, byte ptr [esp+12]
004018E0 . 83EA 30 sub edx, 30
004018E3 . 3BFA cmp edi, edx
004018E5 . 75 37 jnz short 0040191E
004018E7 . 0FB65424 14 movzx edx, byte ptr [esp+14]
004018EC . 0FB67C24 17 movzx edi, byte ptr [esp+17]
004018F1 . 83EA 30 sub edx, 30
004018F4 . 3BFA cmp edi, edx
004018F6 . 75 26 jnz short 0040191E
004018F8 . 0FB65424 15 movzx edx, byte ptr [esp+15]
004018FD . 0FB67C24 18 movzx edi, byte ptr [esp+18]
00401902 . 83EA 30 sub edx, 30
00401905 . 3BFA cmp edi, edx
00401907 . 75 15 jnz short 0040191E
00401909 . 99 cdq
0040190A . BF 0A000000 mov edi, 0A
0040190F . F7FF idiv edi
00401911 . 0FB6C2 movzx eax, dl
00401914 . 0FB6D1 movzx edx, cl
00401917 . 83EA 30 sub edx, 30
0040191A . 3BC2 cmp eax, edx
0040191C . 74 3C je short 0040195A
0040191E > 8A5424 19 mov dl, byte ptr [esp+19] //下面开始逐位比较注册码
00401922 . B0 39 mov al, 39 ;
00401924 . 3AD0 cmp dl, al // 注册码第1位与字符‘9’比较
00401926 . 0F85 84000000 jnz 004019B0 不相等则跳向失败处
0040192C . 807C24 13 33 cmp byte ptr [esp+13], 33 //注册码第2位与字符‘3’比较
00401931 . 75 7D jnz short 004019B0 不相等则跳向失败处
00401933 . 384424 14 cmp byte ptr [esp+14], al //注册码第3位与字符‘9’比较
00401937 . 75 77 jnz short 004019B0 不相等则跳向失败处
00401939 . 8A5424 15 mov dl, byte ptr [esp+15]
0040193D . B0 31 mov al, 31 ;
0040193F . 3AD0 cmp dl, al //注册码第4位与字符‘1’比较
00401941 . 75 6D jnz short 004019B0 不相等则跳向失败处
00401943 . 80F9 33 cmp cl, 33 //注册码第5位与字符‘3’比较
00401946 . 75 68 jnz short 004019B0 不相等则跳向失败处
00401948 . 384424 1A cmp byte ptr [esp+1A], al //注册码第6位与字符‘1’比较
0040194C . 75 62 jnz short 004019B0 不相等则跳向失败处
0040194E . 807C24 1B 34 cmp byte ptr [esp+1B], 34 //注册码第7位与字符‘4’比较
00401953 . 75 5B jnz short 004019B0 不相等则跳向失败处
00401955 . 80FB 36 cmp bl, 36 //注册码第8位与字符‘6’比较
00401958 . 75 56 jnz short 004019B0 不相等则跳向失败处
0040195A > 6A 00 push 0
0040195C . 6A 00 push 0
0040195E . 68 D8D74200 push 0042D7D8
00401963 . E8 45520200 call 00426BAD // 注册成功
00401968 . 8B7E 70 mov edi, dword ptr [esi+70]
0040196B . E8 E2690200 call 00428352
00401970 . 8B40 04 mov eax, dword ptr [eax+4]
00401973 . 57 push edi ; /Arg3
00401974 . 68 CCD74200 push 0042D7CC ; |Arg2 = 0042D7CC ASCII "username"
00401979 . 68 C4D74200 push 0042D7C4 ; |Arg1 = 0042D7C4 ASCII "Option"
0040197E . 8BC8 mov ecx, eax ; |
00401980 . E8 884F0200 call 0042690D ; \1.0042690D
00401985 . 8B7E 74 mov edi, dword ptr [esi+74]
00401988 . E8 C5690200 call 00428352
0040198D . 8B40 04 mov eax, dword ptr [eax+4]
00401990 . 57 push edi ; /Arg3
00401991 . 68 B0D74200 push 0042D7B0 ; |Arg2 = 0042D7B0 ASCII "registration_code"
00401996 . 68 C4D74200 push 0042D7C4 ; |Arg1 = 0042D7C4 ASCII "Option"
0040199B . 8BC8 mov ecx, eax ; |
0040199D . E8 6B4F0200 call 0042690D ; \1.0042690D
004019A2 . 5B pop ebx
004019A3 . 5F pop edi
004019A4 . 8BCE mov ecx, esi
004019A6 . 5E pop esi
004019A7 . 5D pop ebp
004019A8 . 83C4 0C add esp, 0C
004019AB . E9 F5120200 jmp 00422CA5
004019B0 > 6A 00 push 0
004019B2 . 6A 00 push 0
004019B4 . 68 98D74200 push 0042D798 ; registration failed!
004019B9 . E8 EF510200 call 00426BAD
--------------------------------------------------------------------------------
【经验总结】
1.软件是固定码注册 用户名与注册码无关
2.用户名位数必须不小于2 注册码位数必须不小于8
3.固定注册码是 93913146 用户名任意
比如 用户名 bbs.chinapyg.com 注册码 93913146
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG官方论坛, 转载请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 千里之外 于 2007-5-28 13:26 编辑 ] |
|