菜鸟算法1
【文章标题】: 菜鸟算法(高手飞过)【文章作者】: 千里之外
【作者邮箱】: 506398911@qq.com
【作者QQ号】: 506398911
【软件名称】: MP3 Splitter
【软件大小】: 120 KB
【下载地址】: https://www.chinapyg.com/viewthread.php?tid=15466
【加壳方式】: 未知壳(可用ESP定律手脱)
【保护方式】: 注册码验证
【编写语言】: Microsoft Visual C++ 7.0
【使用工具】: peidOD
【操作平台】: 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
00401706 .8B68 F4 mov ebp, dword ptr
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
00401726 .8379 F4 08 cmp dword ptr , 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
00401744 .8B48 F4 mov ecx, dword ptr
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
00401757 .8B46 70 mov eax, dword ptr
0040175A .3978 F4 cmp dword ptr , edi
0040175D .7D 0A jge short 00401769
0040175F .68 57000780 push 80070057
00401764 .E8 07FAFFFF call 00401170
00401769 >8A40 01 mov al, byte ptr
0040176C .884424 0E mov byte ptr , al
00401770 .8B46 70 mov eax, dword ptr
00401773 .8B48 F4 mov ecx, dword ptr
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
00401787 .53 push ebx
00401788 .8A18 mov bl, byte ptr
0040178A .3979 F4 cmp dword ptr , 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
004017AC .83C8 42 or eax, 42
004017AF .885424 16 mov byte ptr , 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 , dl
004017C0 .99 cdq
004017C1 .F7FF idiv edi
004017C3 .0FB641 01 movzx eax, byte ptr
004017C7 .83C8 44 or eax, 44
004017CA .8BCF mov ecx, edi
004017CC .885424 17 mov byte ptr , 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 , 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 ;
004017EB .3B4F F4 cmp ecx, dword ptr ;
004017EE .0F8F C6000000 jg 004018BA
004017F4 .0FB6140F movzx edx, byte ptr
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 ;
00401802 .8B51 F4 mov edx, dword ptr ;
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
00401815 .8B4E 74 mov ecx, dword ptr
00401818 .8379 F4 01 cmp dword ptr , 1
0040181C .885424 19 mov byte ptr , dl
00401820 .7D 0A jge short 0040182C
00401822 .68 57000780 push 80070057
00401827 .E8 44F9FFFF call 00401170
0040182C >8A49 01 mov cl, byte ptr
0040182F .8B7E 74 mov edi, dword ptr
00401832 .884C24 13 mov byte ptr , cl
00401836 .837F F4 02 cmp dword ptr , 2
0040183A .7D 0A jge short 00401846
0040183C .68 57000780 push 80070057
00401841 .E8 2AF9FFFF call 00401170
00401846 >8A4F 02 mov cl, byte ptr
00401849 .8B7E 74 mov edi, dword ptr
0040184C .884C24 14 mov byte ptr , cl
00401850 .837F F4 03 cmp dword ptr , 3
00401854 .7D 0A jge short 00401860
00401856 .68 57000780 push 80070057
0040185B .E8 10F9FFFF call 00401170
00401860 >8A4F 03 mov cl, byte ptr
00401863 .8B7E 74 mov edi, dword ptr
00401866 .884C24 15 mov byte ptr , cl
0040186A .837F F4 04 cmp dword ptr , 4
0040186E .7D 0A jge short 0040187A
00401870 .68 57000780 push 80070057
00401875 .E8 F6F8FFFF call 00401170
0040187A >8A4F 04 mov cl, byte ptr
0040187D .8B7E 74 mov edi, dword ptr
00401880 .837F F4 05 cmp dword ptr , 5
00401884 .7D 0A jge short 00401890
00401886 .68 57000780 push 80070057
0040188B .E8 E0F8FFFF call 00401170
00401890 >8A5F 05 mov bl, byte ptr
00401893 .8B7E 74 mov edi, dword ptr
00401896 .885C24 1A mov byte ptr , bl
0040189A .837F F4 06 cmp dword ptr , 6
0040189E .7D 0A jge short 004018AA
004018A0 .68 57000780 push 80070057
004018A5 .E8 C6F8FFFF call 00401170
004018AA >8A5F 06 mov bl, byte ptr
004018AD .8B7E 74 mov edi, dword ptr
004018B0 .885C24 1B mov byte ptr , bl
004018B4 .837F F4 07 cmp dword ptr , 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
004018C7 .0FB67C24 16 movzx edi, byte ptr
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
004018DB .0FB67C24 12 movzx edi, byte ptr
004018E0 .83EA 30 sub edx, 30
004018E3 .3BFA cmp edi, edx
004018E5 .75 37 jnz short 0040191E
004018E7 .0FB65424 14 movzx edx, byte ptr
004018EC .0FB67C24 17 movzx edi, byte ptr
004018F1 .83EA 30 sub edx, 30
004018F4 .3BFA cmp edi, edx
004018F6 .75 26 jnz short 0040191E
004018F8 .0FB65424 15 movzx edx, byte ptr
004018FD .0FB67C24 18 movzx edi, byte ptr
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 //下面开始逐位比较注册码
00401922 .B0 39 mov al, 39 ;
00401924 .3AD0 cmp dl, al // 注册码第1位与字符‘9’比较
00401926 .0F85 84000000 jnz 004019B0 不相等则跳向失败处
0040192C .807C24 13 33cmp byte ptr , 33 //注册码第2位与字符‘3’比较
00401931 .75 7D jnz short 004019B0 不相等则跳向失败处
00401933 .384424 14 cmp byte ptr , al //注册码第3位与字符‘9’比较
00401937 .75 77 jnz short 004019B0 不相等则跳向失败处
00401939 .8A5424 15 mov dl, byte ptr
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 , al //注册码第6位与字符‘1’比较
0040194C .75 62 jnz short 004019B0 不相等则跳向失败处
0040194E .807C24 1B 34cmp byte ptr , 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
0040196B .E8 E2690200 call 00428352
00401970 .8B40 04 mov eax, dword ptr
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
00401988 .E8 C5690200 call 00428352
0040198D .8B40 04 mov eax, dword ptr
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 编辑 ] 恩,lz努力学习,进步飞快。。。希望继续努力。。。 还是看不懂 不错,继续努力~~ 谢谢NISY坛主关心啊/:09我会继续努力的 呵呵 向楼主学习。 谢谢,学习中! 算法学习中,呵 想LZ学习~! 学习再学习
页:
[1]
2