Red de conocimiento informático - Conocimiento informático - Cómo descifrar Xunlei VIP

Cómo descifrar Xunlei VIP

Primero cargue este archivo con OD, busque la cadena "isvip" y encuéntrela, luego establezca un punto de interrupción en la declaración de llamada encima de la declaración "register.ini"

21987044. E8 C882FFFF LLAMADA 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 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 CORTO

msvcp71. .std::basic_string,std::allocator >::data

21987077 50 PUSH EAX

21987078 68 C8259921. PUSH XLUser.219925C8 ; 1

2198707D EB 0C JMP CORTO 71 .std::basic_string;

msvcp71.std::basic_string,std::allocator >::data

21987085 50 PUSH.

EAX

21987086 68 C4259921 PUSH XLUser.219925C4 ; 0

2198708B > 68 003A9921 PUSH XLUser.21993A00 ; 5 . FF15 34209921 LLAMADA DWORD PTR DS:[<&KERNEL32.WritePrivateProfileS>; \WritePrivateProfileStringA

—————————————— ————————————— —————————

En este momento, use OD para cargar “Thunder.exe” y F9 para ejecutar Thunder. Después de interrumpir aquí, sigue F7.

21987044 . E8 C882FFFF CALL Busque la última instrucción de salto, busque la instrucción de llamada encima de la instrucción de salto, establezca un punto de interrupción en la instrucción de llamada y luego F9. Después de interrumpir el programa, sigue F7.

———————————————————————————————————————

2197F311 /$ 55 PUSH EBP ; Inicio de subrutina

2197F312 |8BEC MOV EBP,ESP

2197F314 |. 51 PUSH ECX

2197F315 |. 53 EMPUJE EBX

2197F316 |. 56 EMPUJE ESI

2197F317 |. 8BF1 MOV ESI,ECX

2197F319 |. > 2197F31A |. 8D9E 4C100000 LEA EBX,DWORD PTR DS:[ESI+104C]

2197F320 |. 53 PUSH EBX; /pCriticalSection

2197F321 |. : [EBP-4],EBX ; |

2197F324 |. FF15 24209921 LLAMADA DWORD PTR DS:[<&KERNEL32.EnterCriticalSection>] ; EDI, DWORD PTR SS:[EBP+8]

2197F32D | 39BE 24100000 CMP DWORD PTR DS:[ESI+1024],EDI

2197F333 |. 2197F33B

2197F335 |. 53 PUSH EBX

2197F336 |> 33DB XOR EBX,EBX

2197F33D |. 399E 64100000 CMP DWORD PTR DS:[ESI+1064],EBX

2197F343 |. 74 2F JE CORTO,2

2197F348 |. XLUser.2197F359

2197F34A | 399E A4000000 CMP DWORD PTR DS:[ESI+A4],EBX

2197F350 |. >2197

F352 |. 8BCE MOV ECX,ESI

2197F354 | E8 AED9FFFF LLAMADA p>

2197F35F |. 74 13 JE CORTO >

2197F365 |. A4],EBX

2197F36B |. 75 07 JNZ CORTO XLUser.2197F374

2197F36D |. 8BCE MOV ECX,ESI

2197F36F |. DS:[ESI+1024]

2197F37C | 8986 28100000 MOV DWORD PTR DS:[ESI+1028],EAX

2197F382 |. [EBP+C]

2197F385 |. 89BE 24100000 MOV DWORD PTR DS:[ESI+1024],EDI

2197F38B |. ,EAX

2197F391 |. 75 69 JNZ CORTO XLUser.2197F3FC

2197F393 |. 68 F0229921 PUSH ECX,DWORD PTR DS:[ESI+6F0]

2197F39E |. 889E FC050000 MOV BYTE PTR DS:[ESI+5FC],BL

2197F3A4 |. p>

msvcp71.std::basic_string,std::allocator >:: operator=

2197F3AA |. ; 19000000

2197

F3AF |. 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 |.

msvcp71.std::basic_string,std::allocator >::operator=

2197F3C7 |. :[ESI+6D4]

2197F3CD | 899E 10060000 MOV DWORD PTR DS:[ESI+610],EBX

2197F3D3 |. ],EBX

2197F3D9 |. 899E 60060000 MOV DWORD PTR DS:[ESI+660],EBX

2197F3DF |. EBX

2197F3E5 | 899E 18060000 MOV DWORD PTR DS:[ESI+618],EBX

2197F3EB |. /p>

2197F3F1 |. 899E D0060000 MOV DWORD PTR DS:[ESI+6D0],EBX

2197F3F7 |. 64100000>CMP DWORD PTR DS:[ESI+1064],2

2197F403 |. 75 07 JNZ SHORT XLUser.2197F40C

2197F405 |.

2197F407 |. E8 41EDFFFF CALL XLUser.2197E14D; Esta es la primera llamada encima de la instrucción de salto, la seguimos con F7

.

2197F40C |> 83FF 02 CMP EDI,2

2197F40F |. 75 14 JNZ SHORT XLUser.2197F425 La última declaración de salto de la subrutina

2197F411 | 53 EMPUJE EBX

2197F412 |. 53 EMPUJE EBX

2197F413 |. 8D46 10 LEA EAX,DWORD PTR DS:[ESI+10]

2197F416 | 8B08 MOV ECX,DWORD PTR DS:[EAX]

2197F418 |. 6A 0F EMPUJAR 0F

2197F41A |. 2C LLAMADA DWORD PTR DS:[ECX+2C]

2197F41E | 8BCE MOV ECX,ESI

2197F420 |. |> FF75 FC PUSH DWORD PTR SS:[EBP-4] ; /pCriticalSection

2197F428 |> FF15 28209921 CALL DWORD PTR DS:[<&KERNEL32.LeaveCriticalSection>] ; >2197F42E |. 5F POP EDI

2197F42F |. 5E POP ESI

2197F430 |. 5B POP EBX

2197F431 |. p>2197F432\. C2 0800 RETN 8; Fin de subrutina

—————————————————————————— ———— ——————

“2197F407” F7 lo siguió y llegó al final

2197E14D /$ B8 66FF9821 MOV EAX,XLUser.2198FF66

2197E152 | .E8 79050100 LLAMADA

2197E15A |.8BF1 MOV ESI,ECX

2197E15C |.

7 PUSH EDI

2197E15D |8D86 98100000 LEA EAX,DWORD PTR DS:[ESI+1098]

2197E163 |. 50 PUSH EAX /pCriticalSection

2197E164 |. FF15 24209921 LLAMADA DWORD PTR DS:[<&KERNEL32.EnterCriticalSection>] ;\EnterCriticalSection

2197E16A |. >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

2197E180 |. E8 49D8FFFF LLAMADA XLUser.2197B9CE

2197E185 |. 76 2F JBE CORTO >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 |. F7 para seguir

2197E1AC |.8BCB |MOV ECX,EBX

2197E1AE |.

47 |INC EDI

2197E1AF |. E8 1AD8FFFF |LLAMADA \JB SHORT 2197E1BE F4 MOV ECX,DWORD PTR SS:[EBP-C]

2197E1C8 |. p>

2197E1C9 |. 5E POP ESI

2197E1CA |. 5B POP EBX

2197E1CB |. /p>

2197E1D2 |. C9 SALIR

2197E1D3 \. C3 RETIN

———————————————————— ————————————————

"2197E1A9" Después siguió F7, vino abajo y entró en el espacio aéreo "BaseCommunity.dll"

1000B9D0. 6A FF PUSH -1

1000B9D2 68 F7030510 PUSH BaseComm.100503F7; instalación del controlador SE

64:A1 0000000>MOV EAX,DWORD PTR FS:[0]

1000B9DD 50 PUSH EAX

1000B9DE 64 :8925 00000>MOV DWORD PTR FS:[0],ESP

1000B9E5 . /p>

1000B9EB .C42D0810 MOV EAX,DWORD PTR DS:[10082DC4]

1000B9F0 .

1000B9F3.8BAC24 B8.

0000>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. BaseComm.1000BD2B

1000BA11 83FF 02 CMP EDI,2

1000BA14 53 EMPUJE EBX

1000BA15 . 0F85 6C020000 JNZ BaseComm.1000BC88

1000BA1C 10001FC0; seguimiento de F7

85C0 PRUEBA EAX,EAX

1000BA2A. PTR DS:[<&KERNEL32.GetTickCount>] ; kernel32.GetTickCount

----------------------- ----------------

"1000BA23" F7 sigue y llega al final

10001FC0 /$ 51 PUSH ECX (CPU inicial; selección)

10001FC1 |. 8B41 1C MOV EAX,DWORD PTR DS:[ECX+1C]

10001FC4 |. 74 17 JE CORTO BaseComm.10001FDF

10001FC8 |.8D1424 LEA EDX,DWORD PTR SS:[ESP]

10001FCB |. |. C74424 04 000>MOV DWORD PTR SS:[ESP+4],0

10001FD4 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]

10001FD6 |.

PUSH EAX

10001FD7 |. FF51 0C LLAMAR DWORD PTR DS:[ECX+C]; F7 para seguir

10001FDA |. /p>

10001FDD |. 59 POP ECX

10001FDE | C3 RETN

10001FDF |> 33C0 XOR EAX,EAX

10001FE1 |. POP ECX

10001FE2 \. --- -------------

"10001FD7" Después de que F7 lo siguiera, vino abajo y entró en el espacio aéreo de "XLUser.dll"

2197A95B 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]

2197A95F 83B8 10100000>CMP DWORD PTR DS:[EAX+1010],2

2197A966. JE CORTO XLUsuario .2197A96F

2197A968 04400080 MOV EAX,80004004

2197A96D EB 0F JMP CORTO XLUsuario.2197A97E

2197A96F > 0FB680 E80500>MO. VZX-EAX , TE PTR DS:[EAX+5E8]; modificado para mover eax,1

2197A976 8B4C24 08 MOV ECX,DWORD PTR SS:[ESP+8]

2197A97A. MOV DWORD PTR DS:[ECX],EAX

2197A97C 33C0 XOR EAX,EAX

2197A97E > C2 0800 RETN 8

Parche en 2197A96F,

MOVZX EAX,BYTE PTR DS:[EAX+5E8] modificado a mov eax,1

-------------------- - --------------------

Después de la modificación, guárdalo y te convertirás en un usuario VIP.