- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】[PYG]算法分析入门第十二课
【破文作者】飘云[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:[eax]
004ED2C5 . 64:8920 mov dword ptr fs:[eax],esp
004ED2C8 . 8D55 F4 lea edx,dword ptr ss:[ebp-C]
004ED2CB . 8B83 0C030000 mov eax,dword ptr ds:[ebx+30C]
004ED2D1 . E8 EE6BF7FF call 2.00463EC4
004ED2D6 . 8B45 F4 mov eax,dword ptr ss:[ebp-C]
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:[41BBCC]
004ED300 . E8 1B3CF3FF call 2.00420F20
004ED305 . 8945 FC mov dword ptr ss:[ebp-4],eax
004ED308 . 8D55 EC lea edx,dword ptr ss:[ebp-14]
004ED30B . A1 E4214F00 mov eax,dword ptr ds:[4F21E4]
004ED310 . 8B00 mov eax,dword ptr ds:[eax]
004ED312 . E8 256EF9FF call 2.0048413C
004ED317 . 8B45 EC mov eax,dword ptr ss:[ebp-14]
004ED31A . 8D55 F0 lea edx,dword ptr ss:[ebp-10]
004ED31D . E8 E2C1F1FF call 2.00409504
004ED322 . 8D45 F0 lea eax,dword ptr ss:[ebp-10]
004ED325 . BA 8CD44E00 mov edx,2.004ED48C ; ASCII "licence.dat"
004ED32A . E8 C572F1FF call 2.004045F4
004ED32F . 8B45 F0 mov eax,dword ptr ss:[ebp-10]
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:[ebp-1C]
004ED343 . A1 E4214F00 mov eax,dword ptr ds:[4F21E4]
004ED348 . 8B00 mov eax,dword ptr ds:[eax]
004ED34A . E8 ED6DF9FF call 2.0048413C
004ED34F . 8B45 E4 mov eax,dword ptr ss:[ebp-1C]
004ED352 . 8D55 E8 lea edx,dword ptr ss:[ebp-18]
004ED355 . E8 AAC1F1FF call 2.00409504
004ED35A . 8D45 E8 lea eax,dword ptr ss:[ebp-18]
004ED35D . BA 8CD44E00 mov edx,2.004ED48C ; ASCII "licence.dat"
004ED362 . E8 8D72F1FF call 2.004045F4
004ED367 . 8B4D E8 mov ecx,dword ptr ss:[ebp-18] ; |
004ED36A . B2 01 mov dl,1 ; |
004ED36C . A1 60BA4100 mov eax,dword ptr ds:[41BA60] ; |
004ED371 . E8 7A37F3FF call 2.00420AF0 ; \2.00420AF0
004ED376 . 8945 F8 mov dword ptr ss:[ebp-8],eax
004ED379 . EB 3B jmp short 2.004ED3B6
004ED37B > 6A 42 push 42
004ED37D . 8D55 DC lea edx,dword ptr ss:[ebp-24]
004ED380 . A1 E4214F00 mov eax,dword ptr ds:[4F21E4]
004ED385 . 8B00 mov eax,dword ptr ds:[eax]
004ED387 . E8 B06DF9FF call 2.0048413C
004ED38C . 8B45 DC mov eax,dword ptr ss:[ebp-24]
004ED38F . 8D55 E0 lea edx,dword ptr ss:[ebp-20]
004ED2B8 mov ebx,eax
004ED2BA xor eax,eax
004ED2BC push ebp
004ED2BD push 2.004ED45A
004ED2C2 push dword ptr fs:[eax]
004ED2C5 mov dword ptr fs:[eax],esp
004ED2C8 lea edx,dword ptr ss:[ebp-C]
004ED2CB mov eax,dword ptr ds:[ebx+30C]
004ED2D1 call 2.00463EC4
004ED2D6 mov eax,dword ptr ss:[ebp-C]
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:[41BBCC]
004ED300 call 2.00420F20
004ED305 mov dword ptr ss:[ebp-4],eax
004ED308 lea edx,dword ptr ss:[ebp-14]
004ED30B mov eax,dword ptr ds:[4F21E4]
004ED310 mov eax,dword ptr ds:[eax]
004ED312 call 2.0048413C
004ED317 mov eax,dword ptr ss:[ebp-14]
004ED31A lea edx,dword ptr ss:[ebp-10]
004ED31D call 2.00409504
004ED322 lea eax,dword ptr ss:[ebp-10]
004ED325 mov edx,2.004ED48C ; ASCII "licence.dat"
004ED32A call 2.004045F4
004ED32F mov eax,dword ptr ss:[ebp-10]
004ED332 call 2.00409474
004ED337 test al,al
004ED339 jnz short 2.004ED37B
004ED33B push 0FFFF
004ED340 lea edx,dword ptr ss:[ebp-1C]
004ED343 mov eax,dword ptr ds:[4F21E4]
004ED348 mov eax,dword ptr ds:[eax]
004ED34A call 2.0048413C
004ED34F mov eax,dword ptr ss:[ebp-1C]
004ED352 lea edx,dword ptr ss:[ebp-18]
004ED355 call 2.00409504
004ED35A lea eax,dword ptr ss:[ebp-18]
004ED35D mov edx,2.004ED48C ; ASCII "licence.dat"
004ED362 call 2.004045F4
004ED367 mov ecx,dword ptr ss:[ebp-18] ; |
004ED36A mov dl,1 ; |
004ED36C mov eax,dword ptr ds:[41BA60] ; |
004ED371 call 2.00420AF0 ; \2.00420AF0
004ED376 mov dword ptr ss:[ebp-8],eax
004ED379 jmp short 2.004ED3B6
004ED37B push 42
004ED37D lea edx,dword ptr ss:[ebp-24]
004ED380 mov eax,dword ptr ds:[4F21E4]
004ED385 mov eax,dword ptr ds:[eax]
004ED387 call 2.0048413C
004ED38C mov eax,dword ptr ss:[ebp-24]
004ED38F lea edx,dword ptr ss:[ebp-20]
004ED392 call 2.00409504
004ED397 lea eax,dword ptr ss:[ebp-20] ; 注册码保存在licence.dat
004ED39A mov edx,2.004ED48C ; ASCII "licence.dat"
004ED39F call 2.004045F4
004ED3A4 mov ecx,dword ptr ss:[ebp-20] ; |
004ED3A7 mov dl,1 ; |
004ED3A9 mov eax,dword ptr ds:[41BA60] ; |
004ED3AE call 2.00420AF0 ; \2.00420AF0
004ED3B3 mov dword ptr ss:[ebp-8],eax
004ED3B6 xor eax,eax
004ED3B8 push ebp
004ED3B9 push 2.004ED419
004ED3BE push dword ptr fs:[eax]
004ED3C1 mov dword ptr fs:[eax],esp
004ED3C4 lea edx,dword ptr ss:[ebp-28]
004ED3C7 mov eax,dword ptr ds:[ebx+30C]
004ED3CD call 2.00463EC4
004ED3D2 mov edx,dword ptr ss:[ebp-28] ; 假码
004ED3D5 mov eax,dword ptr ss:[ebp-4]
004ED3D8 call 2.00421034
004ED3DD push 0
004ED3DF push 0
004ED3E1 mov edx,dword ptr ss:[ebp-4]
004ED3E4 mov eax,dword ptr ss:[ebp-8]
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:[eax],edx
004ED403 push 2.004ED420
004ED408 mov eax,dword ptr ss:[ebp-8]
004ED40B call 2.00403438
004ED410 mov eax,dword ptr ss:[ebp-4]
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:[ebp-20]
004ED8C6 call 2.00409474
004ED8CB test al,al
004ED8CD jnz short 2.004ED8D8
004ED8CF mov byte ptr ss:[ebp-1],0
004ED8D3 jmp 2.004ED9FB
004ED8D8 lea edx,dword ptr ss:[ebp-34]
004ED8DB mov eax,2.004EDA50 ; ASCII "iloveyanyan"
004ED8E0 call 2.004A11C0
004ED8E5 lea eax,dword ptr ss:[ebp-34]
004ED8E8 lea edx,dword ptr ss:[ebp-10]
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:[ebp-38] ; |
004ED8FE call 2.00409058 ; \2.00409058
004ED903 mov eax,dword ptr ss:[ebp-38] ; 序列号
004ED906 lea edx,dword ptr ss:[ebp-34]
004ED909 call 2.004A11C0
004ED90E lea eax,dword ptr ss:[ebp-34]
004ED911 lea edx,dword ptr ss:[ebp-14]
004ED914 call 2.004A1234 ; 对序列号进行标准MD5换算
004ED919 push dword ptr ss:[ebp-14] ; 转换后的序列号
004ED91C push dword ptr ss:[ebp-10] ; 转换后的“iloveyanyan”
004ED91F push dword ptr ss:[ebp-14] ; 转换后的序列号
004ED922 lea eax,dword ptr ss:[ebp-18]
004ED925 mov edx,3
004ED92A call 2.004046AC ; 将3者连接
004ED92F lea edx,dword ptr ss:[ebp-34]
004ED932 mov eax,dword ptr ss:[ebp-18]
004ED935 call 2.004A11C0
004ED93A lea eax,dword ptr ss:[ebp-34]
004ED93D lea edx,dword ptr ss:[ebp-1C]
004ED940 call 2.004A1234 ; 再次进行MD5换算(设为a)
004ED945 lea eax,dword ptr ss:[ebp-1C]
004ED948 push eax
004ED949 mov ecx,10 ; 传入参数16
004ED94E mov edx,1 ; 参数1
004ED953 mov eax,dword ptr ss:[ebp-1C]
004ED956 call 2.0040484C ; 从a中第一位开始取16位
004ED95B push 40
004ED95D lea edx,dword ptr ss:[ebp-40]
004ED960 mov eax,dword ptr ds:[4F21E4]
004ED965 mov eax,dword ptr ds:[eax]
004ED967 call 2.0048413C
004ED96C mov eax,dword ptr ss:[ebp-40]
004ED96F lea edx,dword ptr ss:[ebp-3C]
004ED972 call 2.00409504 ; 开始读取licence.dat的内容了~ 对比之用
004ED977 lea eax,dword ptr ss:[ebp-3C]
004ED97A mov edx,2.004EDA3C ; ASCII "licence.dat"
004ED97F call 2.004045F4
004ED984 mov ecx,dword ptr ss:[ebp-3C] ; |
004ED987 mov dl,1 ; |
004ED989 mov eax,dword ptr ds:[41BA60] ; |
004ED98E call 2.00420AF0 ; \2.00420AF0
004ED993 mov dword ptr ss:[ebp-8],eax
004ED996 xor ecx,ecx
004ED998 mov dl,1
004ED99A mov eax,dword ptr ds:[41BBCC]
004ED99F call 2.00420F20
004ED9A4 mov dword ptr ss:[ebp-C],eax
004ED9A7 xor eax,eax
004ED9A9 push ebp
004ED9AA push 2.004ED9F4
004ED9AF push dword ptr fs:[eax]
004ED9B2 mov dword ptr fs:[eax],esp
004ED9B5 push 0
004ED9B7 push 0
004ED9B9 mov edx,dword ptr ss:[ebp-8]
004ED9BC mov eax,dword ptr ss:[ebp-C]
004ED9BF call 2.00420874
004ED9C4 mov eax,dword ptr ss:[ebp-1C] ; 真码
004ED9C7 mov edx,dword ptr ss:[ebp-C]
004ED9CA mov edx,dword ptr ds:[edx+4] ; 假码
004ED9CD call 2.00404738 ; 这里可以做内存注册机了!
004ED9D2 sete byte ptr ss:[ebp-1]
004ED9D6 xor eax,eax
004ED9D8 pop edx
004ED9D9 pop ecx
004ED9DA pop ecx
004ED9DB mov dword ptr fs:[eax],edx
004ED9DE push 2.004ED9FB
004ED9E3 mov eax,dword ptr ss:[ebp-8]
004ED9E6 call 2.00403438
004ED9EB mov eax,dword ptr ss:[ebp-C]
004ED9EE call 2.00403438
004ED9F3 retn
【算法总结】将固定字符“iloveyanyan”进行MD5换算,然后将序列号进行MD5换算,再按照MD5(序列号)+MD5(iloveyanyan)+MD5(序列号)
再对其进行MD5转换,最后取16位即位注册码!
【算法注册机】
自己写吧~~ 简单啊!
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|