飘云 发表于 2005-7-31 16:44:06

[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位即位注册码!
【算法注册机】
自己写吧~~ 简单啊!
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

yijun 发表于 2005-8-1 14:12:22

又有文章学习了^-^

noTme 发表于 2005-8-3 17:02:49

仔细看了!有点难度。还有MD5这片,偶空白。

快雪时晴 发表于 2005-8-12 12:31:15

不错,继续

看过视频了,辛苦了,老大。

546m 发表于 2005-9-2 13:20:58

学习算法,感谢坛主!

ihhvqu 发表于 2005-10-16 20:41:58

顶.............

qxtianlong 发表于 2005-10-16 22:18:28

飘云老大真厉害~~学习的说

飘云 发表于 2005-10-17 07:52:17

Originally posted by ihhvqu at 2005-10-16 08:41 PM:
顶.............


警告一次!
扣5分!

ihhvqu 发表于 2005-10-27 11:14:27

飘云老大,不好意思,我只是想把全部的算法教程都顶上来,我好收集,结果顶了后它没上来,结果把复顶,就就成了一个贴子顶了很多下.............
      很不好意思......

Iceman 发表于 2005-11-4 11:35:36

学习,学习
页: [1] 2
查看完整版本: [PYG]算法分析入门第十二课