【破解日期】2006年11月5日(传说今天是四狗齐贺月最圆--->20时58分)
【破解作者】 冷血书生
【作者邮箱】 暂没
【作者主页】 hxxp://www.126sohu.com
【使用工具】 OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】 洁网网络过滤系统V1.0
【下载地址】 略过
【加壳方式】 无
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】


代码:
 004161AD   .  6A 00         push 0                           ; 中断在这里 004161AF   .  8D4C24 14     lea ecx,dword ptr ss:[esp+14] 004161B3   .  C78424 2C0100>mov dword ptr ss:[esp+12C],0 004161BE   .  E8 CA730200   call NetOpt.0043D58D 004161C3   .  50            push eax                                        ; |Buffer 004161C4   .  FF15 3CF24400 call dword ptr ds:[<&KERNEL32.GetSystemDirector>;  \GetSystemDirectoryA 004161CA   .  8B4C24 0C     mov ecx,dword ptr ss:[esp+C]                    ;  ASCII "C:\WINDOWS\system32" 004161CE   .  8D5424 0C     lea edx,dword ptr ss:[esp+C] 004161D2   .  51            push ecx 004161D3   .  68 60014600   push NetOpt.00460160                            ;  ASCII "%s\netinfoset.ini" 004161D8   .  52            push edx 004161D9   .  E8 7A0B0200   call NetOpt.00436D58                            ;  连接 004161DE   .  83C4 0C       add esp,0C ………… 00416211   .  896424 1C     mov dword ptr ss:[esp+1C],esp 00416215   .  50            push eax 00416216   .  C68424 2C0100>mov byte ptr ss:[esp+12C],1 0041621E   .  E8 FD6D0200   call NetOpt.0043D020                            ;  取得机器码 00416223   .  8D4C24 20     lea ecx,dword ptr ss:[esp+20]                   ; | 00416227   .  51            push ecx                                        ; |Arg1 00416228   .  8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]                   ; | 0041622C   .  E8 5F6B0000   call NetOpt.0041CD90                            ; \第一次计算 00416231      8B15 680E4600 mov edx,dword ptr ds:[460E68]                    ………… 00416257   .  83C4 08       add esp,8 0041625A   .  8D5424 0C     lea edx,dword ptr ss:[esp+C]                    ;  (ASCII "YCMKYOHOY") 0041625E   .  8BCC          mov ecx,esp 00416260   .  896424 1C     mov dword ptr ss:[esp+1C],esp 00416264   .  52            push edx 00416265   .  E8 B66D0200   call NetOpt.0043D020 0041626A   .  8D4424 20     lea eax,dword ptr ss:[esp+20]                   ; |第一次计算结果 0041626E   .  8D4C24 18     lea ecx,dword ptr ss:[esp+18]                   ; | 00416272   .  50            push eax                                        ; |Arg1 00416273   .  E8 186B0000   call NetOpt.0041CD90                            ; \第二次计算 00416278   .  8D4C24 1C     lea ecx,dword ptr ss:[esp+1C]                   ;  第二次计算结果 0041627C   .  8D5424 08     lea edx,dword ptr ss:[esp+8] 00416280   .  51            push ecx ………… 004162AC   .  E8 A1450200   call NetOpt.0043A852 004162B1   .  8B5424 10     mov edx,dword ptr ss:[esp+10]                   ;  假码 004162B5   .  8B4424 08     mov eax,dword ptr ss:[esp+8]                    ;  真码 004162B9   .  52            push edx                                        ; /Arg2 004162BA   .  50            push eax                                        ; |Arg1 004162BB   .  E8 C51A0100   call NetOpt.00427D85                            ;  \NetOpt.00427D85 // 经典的比较Call 004162C0   .  83C4 08       add esp,8 004162C3   .  85C0          test eax,eax 004162C5   .  0F85 99000000 jnz NetOpt.00416364                             ;  不相等就注册失败,爆破点 004162CB   .  68 EC014600   push NetOpt.004601EC                            ;  ASCII "no"                       /////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////    第一次计算: 0041CDDB  |.  51            push ecx 0041CDDC  |.  8D4C24 14     lea ecx,dword ptr ss:[esp+14] 0041CDE0  |.  E8 FF050200   call NetOpt.0043D3E4                            ;  取得机器码 0041CDE5  |.  8B6C24 10     mov ebp,dword ptr ss:[esp+10] 0041CDE9  |.  33C9          xor ecx,ecx 0041CDEB  |.  8B75 F8       mov esi,dword ptr ss:[ebp-8] 0041CDEE  |.  85F6          test esi,esi                                    ;  测试机器码长度 0041CDF0  |.  897424 14     mov dword ptr ss:[esp+14],esi                   ;  转移 0041CDF4  |.  7E 51         jle short NetOpt.0041CE47 0041CDF6  |.  8BBC24 480400>mov edi,dword ptr ss:[esp+448] 0041CDFD  |.  8D742E FE     lea esi,dword ptr ds:[esi+ebp-2] 0041CE01  |>  83F9 05       /cmp ecx,5                                ;  与5比较 0041CE04  |.  7D 41         |jge short NetOpt.0041CE47                      ;  大于或等于就跳 0041CE06  |.  8A1429        |mov dl,byte ptr ds:[ecx+ebp]                   ;  依次取机器码ASCII值 0041CE09  |.  BB 1A000000   |mov ebx,1A                             ;  ebx=1A 0041CE0E  |.  0FBE46 01     |movsx eax,byte ptr ds:[esi+1]                  ;  倒取机器码ASCII值 0041CE12  |.  0FBED2        |movsx edx,dl                             ;  dl转移 0041CE15  |.  33C2          |xor eax,edx                            ;  eax xor edx 0041CE17  |.  83C7 02       |add edi,2 0041CE1A  |.  83F0 2A       |xor eax,2A                              ;  eax xor 2A 0041CE1D  |.  99            |cdq 0041CE1E  |.  F7FB          |idiv ebx                                     ;  /1A 0041CE20  |.  80C2 41       |add dl,41                                  ;  余数+41 0041CE23  |.  8857 FE       |mov byte ptr ds:[edi-2],dl                    ;  结果转移 0041CE26  |.  8A1429        |mov dl,byte ptr ds:[ecx+ebp]                   ;  依次取机器码ASCII值,跟第一次取的相同 0041CE29  |.  0FBE06        |movsx eax,byte ptr ds:[esi]                    ;  倒取机器码ASCII值 0041CE2C  |.  0FBED2        |movsx edx,dl                           ;  dl值转移 0041CE2F  |.  33C2          |xor eax,edx                             ;  eax xor edx 0041CE31  |.  83F0 55       |xor eax,55                                ;  eax xor 55 0041CE34  |.  99            |cdq 0041CE35  |.  F7FB          |idiv ebx                                      ;  /1A 0041CE37  |.  8B4424 14     |mov eax,dword ptr ss:[esp+14] 0041CE3B  |.  80C2 41       |add dl,41                                   ;  dl+41 0041CE3E  |.  41            |inc ecx 0041CE3F  |.  8857 FF       |mov byte ptr ds:[edi-1],dl                    ;  dl值转移 0041CE42  |.  4E            |dec esi 0041CE43  |.  3BC8          |cmp ecx,eax                                  ;  比较 0041CE45  |.^ 7C BA         \jl short NetOpt.0041CE01                    ;  循环4次 0041CE47  |>  8B8424 480400>mov eax,dword ptr ss:[esp+448]                  ;  获得上面计算的结果 0041CE4E  |.  C68424 400400>mov byte ptr ss:[esp+440],1 ………… 0041CF25  |.  64:890D 00000>mov dword ptr fs:[0],ecx 0041CF2C  |.  81C4 34040000 add esp,434 0041CF32  \.  C2 0800       retn 8                                        ; 返回 第一次计算值:  取机器码第一位ASCII值异或倒取机器码第一位ASCII值,然后再异或2Ah, 结果除以1Ah,余数加上41h ,即为计算结果奇数位(当然这里是指依次的);取机器码第一位ASCII值异或倒取机器码第二位ASCII值 ,然后再异或55h,结果除以1Ah,余数加上41h,即为计算结果偶数位(当然这里是指依次的)。 /////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////    第二次计算: 0041CDDC  |.  8D4C24 14     lea ecx,dword ptr ss:[esp+14] 0041CDE0  |.  E8 FF050200   call NetOpt.0043D3E4                            ;  取得第一次计算结果 0041CDE5  |.  8B6C24 10     mov ebp,dword ptr ss:[esp+10] 0041CDE9  |.  33C9          xor ecx,ecx 0041CDEB  |.  8B75 F8       mov esi,dword ptr ss:[ebp-8] 0041CDEE  |.  85F6          test esi,esi                                    ;  测试结果长度 0041CDF0  |.  897424 14     mov dword ptr ss:[esp+14],esi                   ;  转移 0041CDF4  |.  7E 51         jle short NetOpt.0041CE47 0041CDF6  |.  8BBC24 480400>mov edi,dword ptr ss:[esp+448] 0041CDFD  |.  8D742E FE     lea esi,dword ptr ds:[esi+ebp-2] 0041CE01  |>  83F9 05       /cmp ecx,5                                ;  与5比较 0041CE04  |.  7D 41         |jge short NetOpt.0041CE47                      ;  大于或等于就跳 0041CE06  |.  8A1429        |mov dl,byte ptr ds:[ecx+ebp]                   ;  依次取第一次计算值 0041CE09  |.  BB 1A000000   |mov ebx,1A                             ;  ebx=1A 0041CE0E  |.  0FBE46 01     |movsx eax,byte ptr ds:[esi+1]                  ;  倒取第一次计算值 0041CE12  |.  0FBED2        |movsx edx,dl                             ;  dl转移 0041CE15  |.  33C2          |xor eax,edx                             ;  eax xor edx 0041CE17  |.  83C7 02       |add edi,2 0041CE1A  |.  83F0 2A       |xor eax,2A                              ;  eax xor 2A 0041CE1D  |.  99            |cdq 0041CE1E  |.  F7FB          |idiv ebx                                     ;  /1A 0041CE20  |.  80C2 41       |add dl,41                                  ;  余数+41 0041CE23  |.  8857 FE       |mov byte ptr ds:[edi-2],dl                     ;  结果转移,F 0041CE26  |.  8A1429        |mov dl,byte ptr ds:[ecx+ebp]                   ;  依次取第一次计算值,跟上面取的相同 0041CE29  |.  0FBE06        |movsx eax,byte ptr ds:[esi]                  ;  倒取第一次计算值 0041CE2C  |.  0FBED2        |movsx edx,dl                           ;  dl值转移 0041CE2F  |.  33C2          |xor eax,edx                             ;  eax xor edx 0041CE31  |.  83F0 55       |xor eax,55                                ;  eax xor 55 0041CE34  |.  99            |cdq 0041CE35  |.  F7FB          |idiv ebx                                      ;  /1A 0041CE37  |.  8B4424 14     |mov eax,dword ptr ss:[esp+14] 0041CE3B  |.  80C2 41       |add dl,41                                   ;  dl+41 0041CE3E  |.  41            |inc ecx 0041CE3F  |.  8857 FF       |mov byte ptr ds:[edi-1],dl                   ;  dl值转移 0041CE42  |.  4E            |dec esi 0041CE43  |.  3BC8          |cmp ecx,eax                               ;  比较 0041CE45  |.^ 7C BA         \jl short NetOpt.0041CE01                    ;  循环4次 0041CE47  |>  8B8424 480400>mov eax,dword ptr ss:[esp+448]              ;  获得计算结果 0041CE4E  |.  C68424 400400>mov byte ptr ss:[esp+440],1 ………… 0041CF25  |.  64:890D 00000>mov dword ptr fs:[0],ecx 0041CF2C  |.  81C4 34040000 add esp,434 0041CF32  \.  C2 0800       retn 8                                         ; 返回 第二次计算值:    取第一次计算结果值第一位ASCII值异或倒取第一次计算结果值第一位ASCII值,然后再 异或2Ah, 结果除以1Ah,余数加上41h,即为计算结果奇数位(当然这里是指依次的);取第一次计算结 果值第一位ASCII值异或倒取第一次计算结果值第二位ASCII值,然后再异或55h,结果除以1Ah,余数加 上41h,即为计算结果偶数位.      


  【总结】

    注册码只与机器码有关,机器码取硬盘ID,经过两次的计算就可以得到正确的注册码啦!
     这个程序在一运行时就需要设置密码的,运行后会在系统盘下WINDOWS\system32下建立一个名为netinfoset的ini文件,忘记自己设置的密码的话,可以在这个文件里找到以前设下的密码,如果你还想领略一下OD的迷人风采,可以在00409429  |.  E8 57E90100   call NetOpt.00427D85  上下断点,中断后在寄存器即可看到真假密码的比较了。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!