【文章标题】: 揭秘迅雷VIP用户的破解方法
【文章作者】: 我是土匪
【作者主页】: http://lwzy-crack.blog.163.com
【软件名称】: 迅雷(Thunder) 5.9.9.1118 正式版
【下载地址】: 自己搜索下载
【使用工具】: OLLYDBG
【操作平台】: XP SP2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  今晚谁不着觉,发现迅雷又有新版本更新,于是就来自己DIY一下迅雷"VIP",
  
  我的迅雷安装到C盘了。我就用这个路径了,大家可以自己去找自己的安装路径。
  
  
  C:\Program Files\Thunder Network\Thunder\Program\XLUser.dll
  
  先用OD载入这个文件,查找字符串“isvip”找到后,在它上面的“register.ini”语句上面的call语句下断点
  
  21987044   .  E8 C882FFFF   CALL XLUser.2197F311                               ;  在此处下断点 ,F7跟入
  21987049   .  68 B43D9921   PUSH XLUser.21993DB4                               ;  register.ini
  2198704E   .  8D86 14050000 LEA EAX,DWORD PTR DS:[ESI+514]
  21987054   .  50            PUSH EAX
  21987055   .  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-64]
  21987058   .  50            PUSH EAX
  21987059   .  E8 CE4EFFFF   CALL XLUser.2197BF2C
  2198705E   .  83C4 0C       ADD ESP,0C
  21987061   .  80BE FC050000>CMP BYTE PTR DS:[ESI+5FC],0
  21987068   .  C645 FC 12    MOV BYTE PTR SS:[EBP-4],12
  2198706C   .  8D4D 9C       LEA ECX,DWORD PTR SS:[EBP-64]
  2198706F   .  74 0E         JE SHORT XLUser.2198707F
  21987071   .  FF15 DC209921 CALL DWORD PTR DS:[<&MSVCP71.std::basic_string<cha>;  
  msvcp71.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::data
  21987077   .  50            PUSH EAX
  21987078   .  68 C8259921   PUSH XLUser.219925C8                               ;  1
  2198707D   .  EB 0C         JMP SHORT XLUser.2198708B
  2198707F   >  FF15 DC209921 CALL DWORD PTR DS:[<&MSVCP71.std::basic_string<cha>;  
  msvcp71.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::data
  21987085   .  50            PUSH EAX
  21987086   .  68 C4259921   PUSH XLUser.219925C4                               ;  0
  2198708B   >  68 003A9921   PUSH XLUser.21993A00                               ; |isvip
  21987090   .  68 F8399921   PUSH XLUser.219939F8                               ; |login
  21987095   .  FF15 34209921 CALL DWORD PTR DS:[<&KERNEL32.WritePrivateProfileS>; \WritePrivateProfileStringA
  
  
  
  此时就用OD载入“Thunder.exe”,F9运行迅雷。在这里中断后,F7跟入。
  
  21987044   .  E8 C882FFFF   CALL XLUser.2197F311                               ;  在此处下断点 ,F7跟入
  
  进入call子程序后,我们找子程序的末尾处,找到后,找最后一个跳转语句,在找跳转语句上面的call语句,在call语句上面下断点,然后F9,待到程序中断后,F7跟进去。
  
  2197F311  /$  55            PUSH EBP                                                ;  子程序开始处
  2197F312  |.  8BEC          MOV EBP,ESP
  2197F314  |.  51            PUSH ECX
  2197F315  |.  53            PUSH EBX
  2197F316  |.  56            PUSH ESI
  2197F317  |.  8BF1          MOV ESI,ECX
  2197F319  |.  57            PUSH EDI
  2197F31A  |.  8D9E 4C100000 LEA EBX,DWORD PTR DS:[ESI+104C]
  2197F320  |.  53            PUSH EBX                                                ; /pCriticalSection
  2197F321  |.  895D FC       MOV DWORD PTR SS:[EBP-4],EBX                            ; |
  2197F324  |.  FF15 24209921 CALL DWORD PTR DS:[<&KERNEL32.EnterCriticalSection>]    ; \EnterCriticalSection
  2197F32A  |.  8B7D 08       MOV EDI,DWORD PTR SS:[EBP+8]
  2197F32D  |.  39BE 24100000 CMP DWORD PTR DS:[ESI+1024],EDI
  2197F333  |.  75 06         JNZ SHORT XLUser.2197F33B
  2197F335  |.  53            PUSH EBX
  2197F336  |.  E9 ED000000   JMP XLUser.2197F428
  2197F33B  |>  33DB          XOR EBX,EBX
  2197F33D  |.  399E 64100000 CMP DWORD PTR DS:[ESI+1064],EBX
  2197F343  |.  74 2F         JE SHORT XLUser.2197F374
  2197F345  |.  83FF 02       CMP EDI,2
  2197F348  |.  75 0F         JNZ SHORT XLUser.2197F359
  2197F34A  |.  399E A4000000 CMP DWORD PTR DS:[ESI+A4],EBX
  2197F350  |.  75 07         JNZ SHORT XLUser.2197F359
  2197F352  |.  8BCE          MOV ECX,ESI
  2197F354  |.  E8 AED9FFFF   CALL XLUser.2197CD07
  2197F359  |>  399E 64100000 CMP DWORD PTR DS:[ESI+1064],EBX
  2197F35F  |.  74 13         JE SHORT XLUser.2197F374
  2197F361  |.  3BFB          CMP EDI,EBX
  2197F363  |.  75 0F         JNZ SHORT XLUser.2197F374
  2197F365  |.  399E A4000000 CMP DWORD PTR DS:[ESI+A4],EBX
  2197F36B  |.  75 07         JNZ SHORT XLUser.2197F374
  2197F36D  |.  8BCE          MOV ECX,ESI
  2197F36F  |.  E8 C8D9FFFF   CALL XLUser.2197CD3C
  2197F374  |>  3BFB          CMP EDI,EBX
  2197F376  |.  8B86 24100000 MOV EAX,DWORD PTR DS:[ESI+1024]
  2197F37C  |.  8986 28100000 MOV DWORD PTR DS:[ESI+1028],EAX
  2197F382  |.  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]
  2197F385  |.  89BE 24100000 MOV DWORD PTR DS:[ESI+1024],EDI
  2197F38B  |.  8986 2C100000 MOV DWORD PTR DS:[ESI+102C],EAX
  2197F391  |.  75 69         JNZ SHORT XLUser.2197F3FC
  2197F393  |.  68 F0229921   PUSH XLUser.219922F0
  2197F398  |.  8D8E F0060000 LEA ECX,DWORD PTR DS:[ESI+6F0]
  2197F39E  |.  889E FC050000 MOV BYTE PTR DS:[ESI+5FC],BL
  2197F3A4  |.  FF15 E8209921 CALL DWORD PTR DS:[<&MSVCP71.std::basic_string<char,std>;  
  msvcp71.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator=
  2197F3AA  |.  68 484C9921   PUSH XLUser.21994C48                                    ;  19000000
  2197F3AF  |.  8D8E 3C060000 LEA ECX,DWORD PTR DS:[ESI+63C]
  2197F3B5  |.  899E 34060000 MOV DWORD PTR DS:[ESI+634],EBX
  2197F3BB  |.  899E 38060000 MOV DWORD PTR DS:[ESI+638],EBX
  2197F3C1  |.  FF15 E8209921 CALL DWORD PTR DS:[<&MSVCP71.std::basic_string<char,std>;  
  msvcp71.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::operator=
  2197F3C7  |.  8D8E D4060000 LEA ECX,DWORD PTR DS:[ESI+6D4]
  2197F3CD  |.  899E 10060000 MOV DWORD PTR DS:[ESI+610],EBX
  2197F3D3  |.  899E 14060000 MOV DWORD PTR DS:[ESI+614],EBX
  2197F3D9  |.  899E 60060000 MOV DWORD PTR DS:[ESI+660],EBX
  2197F3DF  |.  899E 1C060000 MOV DWORD PTR DS:[ESI+61C],EBX
  2197F3E5  |.  899E 18060000 MOV DWORD PTR DS:[ESI+618],EBX
  2197F3EB  |.  899E 20060000 MOV DWORD PTR DS:[ESI+620],EBX
  2197F3F1  |.  899E D0060000 MOV DWORD PTR DS:[ESI+6D0],EBX
  2197F3F7  |.  E8 08F2FFFF   CALL XLUser.2197E604
  2197F3FC  |>  83BE 64100000>CMP DWORD PTR DS:[ESI+1064],2
  2197F403  |.  75 07         JNZ SHORT XLUser.2197F40C
  2197F405  |.  8BCE          MOV ECX,ESI
  2197F407  |.  E8 41EDFFFF   CALL XLUser.2197E14D                                    ;  这里是跳转语句上面的第一个call,我们F7
  跟进去。
  2197F40C  |>  83FF 02       CMP EDI,2
  2197F40F  |.  75 14         JNZ SHORT XLUser.2197F425                               ;  子程序的最后一个跳转语句
  2197F411  |.  53            PUSH EBX
  2197F412  |.  53            PUSH EBX
  2197F413  |.  8D46 10       LEA EAX,DWORD PTR DS:[ESI+10]
  2197F416  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
  2197F418  |.  6A 0F         PUSH 0F
  2197F41A  |.  50            PUSH EAX
  2197F41B  |.  FF51 2C       CALL DWORD PTR DS:[ECX+2C]
  2197F41E  |.  8BCE          MOV ECX,ESI
  2197F420  |.  E8 65EAFFFF   CALL XLUser.2197DE8A
  2197F425  |>  FF75 FC       PUSH DWORD PTR SS:[EBP-4]                               ; /pCriticalSection
  2197F428  |>  FF15 28209921 CALL DWORD PTR DS:[<&KERNEL32.LeaveCriticalSection>]    ; \LeaveCriticalSection
  2197F42E  |.  5F            POP EDI
  2197F42F  |.  5E            POP ESI
  2197F430  |.  5B            POP EBX
  2197F431  |.  C9            LEAVE
  2197F432  \.  C2 0800       RETN 8                                                  ;  子程序的结尾处
  
  
  “2197F407” F7跟进去后,来到下面
  
  2197E14D  /$  B8 66FF9821   MOV EAX,XLUser.2198FF66
  2197E152  |.  E8 79050100   CALL XLUser.2198E6D0
  2197E157  |.  51            PUSH ECX
  2197E158  |.  53            PUSH EBX
  2197E159  |.  56            PUSH ESI
  2197E15A  |.  8BF1          MOV ESI,ECX
  2197E15C  |.  57            PUSH EDI
  2197E15D  |.  8D86 98100000 LEA EAX,DWORD PTR DS:[ESI+1098]
  2197E163  |.  50            PUSH EAX                                                ; /pCriticalSection
  2197E164  |.  FF15 24209921 CALL DWORD PTR DS:[<&KERNEL32.EnterCriticalSection>]    ; \EnterCriticalSection
  2197E16A  |.  8D86 7C100000 LEA EAX,DWORD PTR DS:[ESI+107C]
  2197E170  |.  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
  2197E173  |.  8D9E 6C100000 LEA EBX,DWORD PTR DS:[ESI+106C]
  2197E179  |.  33FF          XOR EDI,EDI
  2197E17B  |.  8BCB          MOV ECX,EBX
  2197E17D  |.  897D FC       MOV DWORD PTR SS:[EBP-4],EDI
  2197E180  |.  E8 49D8FFFF   CALL XLUser.2197B9CE
  2197E185  |.  85C0          TEST EAX,EAX
  2197E187  |.  76 2F         JBE SHORT XLUser.2197E1B8
  2197E189  |>  FFB6 2C100000 /PUSH DWORD PTR DS:[ESI+102C]
  2197E18F  |.  8B86 70100000 |MOV EAX,DWORD PTR DS:[ESI+1070]
  2197E195  |.  FFB6 28100000 |PUSH DWORD PTR DS:[ESI+1028]
  2197E19B  |.  8D04B8        |LEA EAX,DWORD PTR DS:[EAX+EDI*4]
  2197E19E  |.  8B00          |MOV EAX,DWORD PTR DS:[EAX]
  2197E1A0  |.  FFB6 24100000 |PUSH DWORD PTR DS:[ESI+1024]
  2197E1A6  |.  8B08          |MOV ECX,DWORD PTR DS:[EAX]
  2197E1A8  |.  50            |PUSH EAX
  2197E1A9  |.  FF51 0C       |CALL DWORD PTR DS:[ECX+C]                              ;  F7 跟进去
  2197E1AC  |.  8BCB          |MOV ECX,EBX
  2197E1AE  |.  47            |INC EDI
  2197E1AF  |.  E8 1AD8FFFF   |CALL XLUser.2197B9CE
  2197E1B4  |.  3BF8          |CMP EDI,EAX
  2197E1B6  |.^ 72 D1         \JB SHORT XLUser.2197E189
  2197E1B8  |>  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  2197E1BB  |.  83C0 1C       ADD EAX,1C
  2197E1BE  |.  50            PUSH EAX                                                ; /pCriticalSection
  2197E1BF  |.  FF15 28209921 CALL DWORD PTR DS:[<&KERNEL32.LeaveCriticalSection>]    ; \LeaveCriticalSection
  2197E1C5  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
  2197E1C8  |.  5F            POP EDI
  2197E1C9  |.  5E            POP ESI
  2197E1CA  |.  5B            POP EBX
  2197E1CB  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
  2197E1D2  |.  C9            LEAVE
  2197E1D3  \.  C3            RETN
  
  
  “2197E1A9” F7跟进去后,来到下面,进入 “BaseCommunity.dll”领空
  
  1000B9D0   .  6A FF         PUSH -1
  1000B9D2   .  68 F7030510   PUSH BaseComm.100503F7                                  ;  SE 处理程序安装
  1000B9D7   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
  1000B9DD   .  50            PUSH EAX
  1000B9DE   .  64:8925 00000>MOV DWORD PTR FS:[0],ESP
  1000B9E5   .  81EC 9C000000 SUB ESP,9C
  1000B9EB   .  A1 C42D0810   MOV EAX,DWORD PTR DS:[10082DC4]
  1000B9F0   .  33C4          XOR EAX,ESP
  1000B9F2   .  55            PUSH EBP
  1000B9F3   .  8BAC24 B80000>MOV EBP,DWORD PTR SS:[ESP+B8]
  1000B9FA   .  57            PUSH EDI
  1000B9FB   .  8BBC24 B80000>MOV EDI,DWORD PTR SS:[ESP+B8]
  1000BA02   .  3BFD          CMP EDI,EBP
  1000BA04   .  898424 A00000>MOV DWORD PTR SS:[ESP+A0],EAX
  1000BA0B   .  0F84 1A030000 JE BaseComm.1000BD2B
  1000BA11   .  83FF 02       CMP EDI,2
  1000BA14   .  53            PUSH EBX
  1000BA15   .  56            PUSH ESI
  1000BA16   .  0F85 6C020000 JNZ BaseComm.1000BC88
  1000BA1C   .  E8 AFA9FFFF   CALL BaseComm.100063D0
  1000BA21   .  8BC8          MOV ECX,EAX
  1000BA23   .  E8 9865FFFF   CALL BaseComm.10001FC0                                  ;  F7跟进去
  1000BA28   .  85C0          TEST EAX,EAX
  1000BA2A   .  8B35 54710610 MOV ESI,DWORD PTR DS:[<&KERNEL32.GetTickCount>]         ;  kernel32.GetTickCount
  ------------------------------------------
  
  “1000BA23” F7跟进去后,来到下面
  
  10001FC0  /$  51            PUSH ECX                                                ;  (Initial CPU selection)
  10001FC1  |.  8B41 1C       MOV EAX,DWORD PTR DS:[ECX+1C]
  10001FC4  |.  85C0          TEST EAX,EAX
  10001FC6  |.  74 17         JE SHORT BaseComm.10001FDF
  10001FC8  |.  8D1424        LEA EDX,DWORD PTR SS:[ESP]
  10001FCB  |.  52            PUSH EDX
  10001FCC  |.  C74424 04 000>MOV DWORD PTR SS:[ESP+4],0
  10001FD4  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
  10001FD6  |.  50            PUSH EAX
  10001FD7  |.  FF51 0C       CALL DWORD PTR DS:[ECX+C]                               ;  F7跟进去
  10001FDA  |.  8B0424        MOV EAX,DWORD PTR SS:[ESP]
  10001FDD  |.  59            POP ECX
  10001FDE  |.  C3            RETN
  10001FDF  |>  33C0          XOR EAX,EAX
  10001FE1  |.  59            POP ECX
  10001FE2  \.  C3            RETN
  ------------------------------------------
  
  “10001FD7” F7跟进去后,来到下面,进入 “XLUser.dll”领空
  
  2197A95B   .  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]
  2197A95F   .  83B8 10100000>CMP DWORD PTR DS:[EAX+1010],2
  2197A966   .  74 07         JE SHORT XLUser.2197A96F
  2197A968   .  B8 04400080   MOV EAX,80004004
  2197A96D   .  EB 0F         JMP SHORT XLUser.2197A97E
  2197A96F   >  0FB680 E80500>MOVZX EAX,BYTE PTR DS:[EAX+5E8]                         ;  修改为 mov eax,1
  2197A976   .  8B4C24 08     MOV ECX,DWORD PTR SS:[ESP+8]
  2197A97A   .  8901          MOV DWORD PTR DS:[ECX],EAX
  2197A97C   .  33C0          XOR EAX,EAX
  2197A97E   >  C2 0800       RETN 8
  
  在 2197A96F 打补丁,
  MOVZX EAX,BYTE PTR DS:[EAX+5E8] 修改为 mov eax,1
  ------------------------------------------
  
  修改后,保存,即可,这样就是VIP用户了。
  
  呵呵,赶快替换原有的“XLUser.dll”文件吧,体验一下不花一分钱的 VIP 用户的功能。
  
--------------------------------------------------------------------------------
【经验总结】
  知识是一点一点的积累的,我们要勤于动手。本文的破解方法对迅雷通用(迅雷公司不针对此文章做相关修改),希望下次在更新的时候,你能自己破解VIP
  
--------------------------------------------------------------------------------
【版权声明】: 文章发自看雪论坛,转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年10月18日 4:23:37

本代码的着色效果由xTiNt自动完成
下载xTiNt

  • 标 题:答复
  • 作 者:ashendove
  • 时 间:2009-10-18 18:55

测试过了,除了会员皮肤和去广告功能其他的会员功能都不能用 其他的是要迅雷服务器验证的吧