[PYG]算法分析入门第十二课
【破文标题】算法分析入门第十二课【破文作者】飘云
【破解平台】WinXp
【作者邮箱】[email protected]
【软件名称】ADSL密码终结者 2005
【软件大小】2.9MB
【下载地址】http://adsl.gpzx.net/xiazai.asp
【软件说明】1.采用多线程设计,一小时可以扫描近6万个IP地址,扫描速度是目前最快的,在晚上在线人多的时候扫描,经测试,一小时最多时可破解800个以上的帐号;
2.自带了目前市面*通、*信常给用户发的adsl猫的型号对应的默认用户名和密码,破解率高达80%以上;
3.程序整合了目前最新的全球IP数据库,可以针对性的扫描某一个省、市范围的adsl用户。支持根据省、市名查询IP段,或根据IP地址查询所在地理位置;
4.完善的扫描结果管理,所以扫描出来的帐号和密码均能自动查询出所在地理位置,并且保存在程序数据库中。可以根据省市名查询破解的帐号和密码;
5.具有扫描历史记录,可以将当前扫描的IP范围保存在历史记录数据库中,下次打开时继续扫描;
6.破解率高,只要对方的adsl支持网页管理界面,就可以用自带的密码字典试出管理用户名和密码,如果以后出现新的adsl型号的猫,只要帮助中的说明将默认用户名和密码添加到密码字典中即可;
【破解工具】PEiD 0.92中文版、OD二哥修改版
【保护方式】序列号+注册码
【破解目的】学习破解。熟练应用各种工具。
【破解声明】我乃小菜鸟一只,偶得一点心得,愿与大家分享:)
【破解过程】由于这里主要讨论算法分析,脱壳 去自效验部分没有写上,具体请看 视频区的录像~
004ED2B7 .53 push ebx
004ED2B8 .8BD8 mov ebx,eax
004ED2BA .33C0 xor eax,eax
004ED2BC .55 push ebp
004ED2BD .68 5AD44E00 push 2.004ED45A
004ED2C2 .64:FF30 push dword ptr fs:
004ED2C5 .64:8920 mov dword ptr fs:,esp
004ED2C8 .8D55 F4 lea edx,dword ptr ss:
004ED2CB .8B83 0C030000mov eax,dword ptr ds:
004ED2D1 .E8 EE6BF7FF call 2.00463EC4
004ED2D6 .8B45 F4 mov eax,dword ptr ss:
004ED2D9 .E8 0E73F1FF call 2.004045EC
004ED2DE .83F8 10 cmp eax,10 ;是否16位
004ED2E1 .74 14 je short 2.004ED2F7 ;是则跳
004ED2E3 .E8 6803F2FF call 2.0040D650
004ED2E8 .B8 70D44E00 mov eax,2.004ED470
004ED2ED .E8 729EF4FF call 2.00437164
004ED2F2 .E9 38010000 jmp 2.004ED42F
004ED2F7 >33C9 xor ecx,ecx
004ED2F9 .B2 01 mov dl,1
004ED2FB .A1 CCBB4100 mov eax,dword ptr ds:
004ED300 .E8 1B3CF3FF call 2.00420F20
004ED305 .8945 FC mov dword ptr ss:,eax
004ED308 .8D55 EC lea edx,dword ptr ss:
004ED30B .A1 E4214F00 mov eax,dword ptr ds:
004ED310 .8B00 mov eax,dword ptr ds:
004ED312 .E8 256EF9FF call 2.0048413C
004ED317 .8B45 EC mov eax,dword ptr ss:
004ED31A .8D55 F0 lea edx,dword ptr ss:
004ED31D .E8 E2C1F1FF call 2.00409504
004ED322 .8D45 F0 lea eax,dword ptr ss:
004ED325 .BA 8CD44E00 mov edx,2.004ED48C ;ASCII "licence.dat"
004ED32A .E8 C572F1FF call 2.004045F4
004ED32F .8B45 F0 mov eax,dword ptr ss:
004ED332 .E8 3DC1F1FF call 2.00409474
004ED337 .84C0 test al,al
004ED339 .75 40 jnz short 2.004ED37B
004ED33B .68 FFFF0000 push 0FFFF
004ED340 .8D55 E4 lea edx,dword ptr ss:
004ED343 .A1 E4214F00 mov eax,dword ptr ds:
004ED348 .8B00 mov eax,dword ptr ds:
004ED34A .E8 ED6DF9FF call 2.0048413C
004ED34F .8B45 E4 mov eax,dword ptr ss:
004ED352 .8D55 E8 lea edx,dword ptr ss:
004ED355 .E8 AAC1F1FF call 2.00409504
004ED35A .8D45 E8 lea eax,dword ptr ss:
004ED35D .BA 8CD44E00 mov edx,2.004ED48C ;ASCII "licence.dat"
004ED362 .E8 8D72F1FF call 2.004045F4
004ED367 .8B4D E8 mov ecx,dword ptr ss: ; |
004ED36A .B2 01 mov dl,1 ; |
004ED36C .A1 60BA4100 mov eax,dword ptr ds: ; |
004ED371 .E8 7A37F3FF call 2.00420AF0 ; \2.00420AF0
004ED376 .8945 F8 mov dword ptr ss:,eax
004ED379 .EB 3B jmp short 2.004ED3B6
004ED37B >6A 42 push 42
004ED37D .8D55 DC lea edx,dword ptr ss:
004ED380 .A1 E4214F00 mov eax,dword ptr ds:
004ED385 .8B00 mov eax,dword ptr ds:
004ED387 .E8 B06DF9FF call 2.0048413C
004ED38C .8B45 DC mov eax,dword ptr ss:
004ED38F .8D55 E0 lea edx,dword ptr ss:
004ED2B8 mov ebx,eax
004ED2BA xor eax,eax
004ED2BC push ebp
004ED2BD push 2.004ED45A
004ED2C2 push dword ptr fs:
004ED2C5 mov dword ptr fs:,esp
004ED2C8 lea edx,dword ptr ss:
004ED2CB mov eax,dword ptr ds:
004ED2D1 call 2.00463EC4
004ED2D6 mov eax,dword ptr ss:
004ED2D9 call 2.004045EC
004ED2DE cmp eax,10 ;是否16位
004ED2E1 je short 2.004ED2F7 ;是则跳
004ED2E3 call 2.0040D650
004ED2E8 mov eax,2.004ED470
004ED2ED call 2.00437164
004ED2F2 jmp 2.004ED42F
004ED2F7 xor ecx,ecx
004ED2F9 mov dl,1
004ED2FB mov eax,dword ptr ds:
004ED300 call 2.00420F20
004ED305 mov dword ptr ss:,eax
004ED308 lea edx,dword ptr ss:
004ED30B mov eax,dword ptr ds:
004ED310 mov eax,dword ptr ds:
004ED312 call 2.0048413C
004ED317 mov eax,dword ptr ss:
004ED31A lea edx,dword ptr ss:
004ED31D call 2.00409504
004ED322 lea eax,dword ptr ss:
004ED325 mov edx,2.004ED48C ;ASCII "licence.dat"
004ED32A call 2.004045F4
004ED32F mov eax,dword ptr ss:
004ED332 call 2.00409474
004ED337 test al,al
004ED339 jnz short 2.004ED37B
004ED33B push 0FFFF
004ED340 lea edx,dword ptr ss:
004ED343 mov eax,dword ptr ds:
004ED348 mov eax,dword ptr ds:
004ED34A call 2.0048413C
004ED34F mov eax,dword ptr ss:
004ED352 lea edx,dword ptr ss:
004ED355 call 2.00409504
004ED35A lea eax,dword ptr ss:
004ED35D mov edx,2.004ED48C ;ASCII "licence.dat"
004ED362 call 2.004045F4
004ED367 mov ecx,dword ptr ss: ; |
004ED36A mov dl,1 ; |
004ED36C mov eax,dword ptr ds: ; |
004ED371 call 2.00420AF0 ; \2.00420AF0
004ED376 mov dword ptr ss:,eax
004ED379 jmp short 2.004ED3B6
004ED37B push 42
004ED37D lea edx,dword ptr ss:
004ED380 mov eax,dword ptr ds:
004ED385 mov eax,dword ptr ds:
004ED387 call 2.0048413C
004ED38C mov eax,dword ptr ss:
004ED38F lea edx,dword ptr ss:
004ED392 call 2.00409504
004ED397 lea eax,dword ptr ss: ;注册码保存在licence.dat
004ED39A mov edx,2.004ED48C ;ASCII "licence.dat"
004ED39F call 2.004045F4
004ED3A4 mov ecx,dword ptr ss: ; |
004ED3A7 mov dl,1 ; |
004ED3A9 mov eax,dword ptr ds: ; |
004ED3AE call 2.00420AF0 ; \2.00420AF0
004ED3B3 mov dword ptr ss:,eax
004ED3B6 xor eax,eax
004ED3B8 push ebp
004ED3B9 push 2.004ED419
004ED3BE push dword ptr fs:
004ED3C1 mov dword ptr fs:,esp
004ED3C4 lea edx,dword ptr ss:
004ED3C7 mov eax,dword ptr ds:
004ED3CD call 2.00463EC4
004ED3D2 mov edx,dword ptr ss: ;假码
004ED3D5 mov eax,dword ptr ss:
004ED3D8 call 2.00421034
004ED3DD push 0
004ED3DF push 0
004ED3E1 mov edx,dword ptr ss:
004ED3E4 mov eax,dword ptr ss:
004ED3E7 call 2.00420874
004ED3EC call 2.0040D650
004ED3F1 mov eax,2.004ED4A0
004ED3F6 call 2.00437164 ;提示 重新启动来验证
004ED3FB xor eax,eax
004ED3FD pop edx
004ED3FE pop ecx
004ED3FF pop ecx
004ED400 mov dword ptr fs:,edx
004ED403 push 2.004ED420
004ED408 mov eax,dword ptr ss:
004ED40B call 2.00403438
004ED410 mov eax,dword ptr ss:
004ED413 call 2.00403438
004ED418 retn
既然注册信息保存在licence.dat那么我们就对来找“licence.dat”,还是用字符插件,可以发现有5处
Ultra String Reference,项目 1140
Address=004ED325
Disassembly=mov edx,2.004ED48C
Text String=licence.dat
Ultra String Reference,项目 1141
Address=004ED35D
Disassembly=mov edx,2.004ED48C
Text String=licence.dat
Ultra String Reference,项目 1142
Address=004ED39A
Disassembly=mov edx,2.004ED48C
Text String=licence.dat
Ultra String Reference,项目 1148
Address=004ED8B9
Disassembly=mov edx,2.004EDA3C
Text String=licence.dat
Ultra String Reference,项目 1150
Address=004ED97A
Disassembly=mov edx,2.004EDA3C
Text String=licence.dat
仔细分析一下就会发现,前三处在上面的代码中已经出现了,明显不是验证注册码的,
那我们就在004ED8B9下端吧!
重新运行,嘿嘿!! 断下了
004ED8B9 mov edx,2.004EDA3C ;ASCII "licence.dat"
004ED8BE call 2.004045F4
004ED8C3 mov eax,dword ptr ss:
004ED8C6 call 2.00409474
004ED8CB test al,al
004ED8CD jnz short 2.004ED8D8
004ED8CF mov byte ptr ss:,0
004ED8D3 jmp 2.004ED9FB
004ED8D8 lea edx,dword ptr ss:
004ED8DB mov eax,2.004EDA50 ;ASCII "iloveyanyan"
004ED8E0 call 2.004A11C0
004ED8E5 lea eax,dword ptr ss:
004ED8E8 lea edx,dword ptr ss:
004ED8EB call 2.004A1234 ;将“iloveyanyan”进行标准MD5换算
004ED8F0 mov eax,ebx
004ED8F2 call 2.004ED67C
004ED8F7 xor edx,edx
004ED8F9 push edx ; /Arg2 => 00000000
004ED8FA push eax ; |Arg1
004ED8FB lea eax,dword ptr ss: ; |
004ED8FE call 2.00409058 ; \2.00409058
004ED903 mov eax,dword ptr ss: ;序列号
004ED906 lea edx,dword ptr ss:
004ED909 call 2.004A11C0
004ED90E lea eax,dword ptr ss:
004ED911 lea edx,dword ptr ss:
004ED914 call 2.004A1234 ;对序列号进行标准MD5换算
004ED919 push dword ptr ss: ;转换后的序列号
004ED91C push dword ptr ss: ;转换后的“iloveyanyan”
004ED91F push dword ptr ss: ;转换后的序列号
004ED922 lea eax,dword ptr ss:
004ED925 mov edx,3
004ED92A call 2.004046AC ;将3者连接
004ED92F lea edx,dword ptr ss:
004ED932 mov eax,dword ptr ss:
004ED935 call 2.004A11C0
004ED93A lea eax,dword ptr ss:
004ED93D lea edx,dword ptr ss:
004ED940 call 2.004A1234 ;再次进行MD5换算(设为a)
004ED945 lea eax,dword ptr ss:
004ED948 push eax
004ED949 mov ecx,10 ;传入参数16
004ED94E mov edx,1 ;参数1
004ED953 mov eax,dword ptr ss:
004ED956 call 2.0040484C ;从a中第一位开始取16位
004ED95B push 40
004ED95D lea edx,dword ptr ss:
004ED960 mov eax,dword ptr ds:
004ED965 mov eax,dword ptr ds:
004ED967 call 2.0048413C
004ED96C mov eax,dword ptr ss:
004ED96F lea edx,dword ptr ss:
004ED972 call 2.00409504 ;开始读取licence.dat的内容了~对比之用
004ED977 lea eax,dword ptr ss:
004ED97A mov edx,2.004EDA3C ;ASCII "licence.dat"
004ED97F call 2.004045F4
004ED984 mov ecx,dword ptr ss: ; |
004ED987 mov dl,1 ; |
004ED989 mov eax,dword ptr ds: ; |
004ED98E call 2.00420AF0 ; \2.00420AF0
004ED993 mov dword ptr ss:,eax
004ED996 xor ecx,ecx
004ED998 mov dl,1
004ED99A mov eax,dword ptr ds:
004ED99F call 2.00420F20
004ED9A4 mov dword ptr ss:,eax
004ED9A7 xor eax,eax
004ED9A9 push ebp
004ED9AA push 2.004ED9F4
004ED9AF push dword ptr fs:
004ED9B2 mov dword ptr fs:,esp
004ED9B5 push 0
004ED9B7 push 0
004ED9B9 mov edx,dword ptr ss:
004ED9BC mov eax,dword ptr ss:
004ED9BF call 2.00420874
004ED9C4 mov eax,dword ptr ss: ;真码
004ED9C7 mov edx,dword ptr ss:
004ED9CA mov edx,dword ptr ds: ;假码
004ED9CD call 2.00404738 ;这里可以做内存注册机了!
004ED9D2 sete byte ptr ss:
004ED9D6 xor eax,eax
004ED9D8 pop edx
004ED9D9 pop ecx
004ED9DA pop ecx
004ED9DB mov dword ptr fs:,edx
004ED9DE push 2.004ED9FB
004ED9E3 mov eax,dword ptr ss:
004ED9E6 call 2.00403438
004ED9EB mov eax,dword ptr ss:
004ED9EE call 2.00403438
004ED9F3 retn
【算法总结】将固定字符“iloveyanyan”进行MD5换算,然后将序列号进行MD5换算,再按照MD5(序列号)+MD5(iloveyanyan)+MD5(序列号)
再对其进行MD5转换,最后取16位即位注册码!
【算法注册机】
自己写吧~~ 简单啊!
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 又有文章学习了^-^ 仔细看了!有点难度。还有MD5这片,偶空白。
不错,继续
看过视频了,辛苦了,老大。 学习算法,感谢坛主! 顶............. 飘云老大真厉害~~学习的说 Originally posted by ihhvqu at 2005-10-16 08:41 PM:顶.............
警告一次!
扣5分! 飘云老大,不好意思,我只是想把全部的算法教程都顶上来,我好收集,结果顶了后它没上来,结果把复顶,就就成了一个贴子顶了很多下.............
很不好意思...... 学习,学习
页:
[1]
2