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