如何破解迅雷的VIP
先用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用户了。