기금넷 공식사이트 - 주식 시세 - WPE 패킷을 사용하여 온라인 게임 데이터를 수정하는 방법은 무엇입니까?

WPE 패킷을 사용하여 온라인 게임 데이터를 수정하는 방법은 무엇입니까?

먼저 WPE에서 가로채는 패킷을 텍스트 파일로 저장한 후 열면 다음과 같은 데이터가 표시됩니다. (여기서는 Legend에서 PK Archer 클라이언트가 보낸 데이터를 사용합니다. 예) : 첫 번째 파일 : SEND-> 0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1BSEND-> 0010 17 12 DD 34 12 12 12 12 17 12 0E 12 12 12 9BSEND-> 0000 E6 56 1E F1 29 06 17 12 3B 0E 17 1ASEND-> 0000 E6 56 1B C0 68 12 12 12 5ASEND-> 0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12SEND-> 0 000 E6 56 17 C9 12 두 번째 파일: SEND-> 0000 83 33 68 47 1B 0E 81 72 76 76 77 76 77 76 02 7ESEND-> 0010 72 77 07 1C 77 77 77 77 72 77 72 77 77 77 6DSEND-> 0000 8 3 33 7B 94 4C 63 72 77 5E 6B 72 F3SEND-> 0000 83 33 7E A5 21 77 77 77 3FSEND-> 0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77SEND-> 0000 83 33 72 AC 77 PK 두 개를 찾았습니다 궁수의 데이터 형식은 동일하지만 내용이 다릅니다. PK에서는 동일한 NPC인데 왜 다른가요? 전설적인 패킷은 암호화 작업 이후 네트워크를 통해 전송되는 것으로 밝혀졌는데, 우리가 직면한 문제는 암호문을 어떻게 평문으로 복호화한 후 이를 분석하느냐이다. 일반 데이터 패킷 암호화는 XOR 연산이므로 먼저 XOR이 무엇인지부터 알아보겠습니다. 간단히 말하면 XOR은 "같으면 0이고 차이는 1이다"라는 뜻입니다. (이는 바이너리 비트에 대한 것입니다.) 예를 들어 0001과 0010을 비트 단위로 비교하면 XOR 결과는 0011이 됩니다. 방법은: 0001의 4번째 비트가 0이고, 0010의 4번째 비트가 0이고, 둘이 동일하다면, XOR 결과의 4번째 비트는 "같은 것은 0이고, 차이는 0"이라는 원칙에 따라 0이 됩니다. 1"이고 0001의 4번째 비트는 0입니다. 3번째 비트는 0, 0010의 3번째 비트는 0, XOR 결과의 3번째 비트는 0, 0001의 2번째 비트는 0, 0010의 2번째 비트는 0입니다. 가 1이면 XOR 결과의 두 번째 비트가 1이고, 0001의 첫 번째 비트가 1이고, 0010의 첫 번째 비트가 0이고, XOR 결과의 첫 번째 비트가 1이고, 그 조합이 0011입니다. 앞으로는 많은 XOR 연산을 접하게 될 것이므로 먼저 익숙해지면 분석에 큰 도움이 될 것입니다. 위의 두 파일을 계속해서 살펴보겠습니다. 상식적으로 데이터 패키지의 모든 데이터가 가치 있는 것은 아닙니다. 게임 개발 중에 일부 바이트 공간은 향후 확장을 용이하게 하기 위해 예약됩니다. "00" 바이트. 위 파일을 보면 파일 1에는 "12"가 많고 파일 2에는 "77"이 많이 있습니다. 그렇다면 이것이 우리가 말하는 "00"을 의미합니까? 여기에서 우리의 추론을 바탕으로 조치를 취해보자! 하나는 "12"로, 두 개는 "77"로 XOR 처리합니다. 물론, 직접 계산하는 것은 매우 번거로운 일이지만 "M2M 1.0 Sealed Packet Analysis Tool"을 사용하여 계산하는 것이 훨씬 편리합니다.

다음 결과를 얻습니다. 첫 번째 파일: 1 SEND-> 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND-> 0010 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 892 SEND -> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 083 송신-> 0000 F4 44 09 D2 7A 00 00 00 484 송신-> 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 0 005 보내기 - > 0000 F4 44 05 DB 00 두 번째 파일: 1 SEND-> 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND-> 0010 05 00 70 6B 00 00 00 00 05 00 05 0 0 00 0 0 1A2 보내기- > 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 843 보내기-> 0000 F4 44 09 D2 56 00 00 00 484 보내기-> 0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 005 보내기-> 0000 F4 44 05 DB 00 하, 이제 두 파일의 대부분이 동일합니다. 이는 우리의 추론이 정확하다는 것을 보여주며 위의 내용은 우리에게 필요한 일반 텍스트입니다! 다음 단계는 분석을 위해 대량의 데이터를 가로채야 하는 일부 키 바이트의 의미를 파악하는 것입니다. 우선, 각 데이터 패킷이 "F4 44"로 시작하고 세 번째 바이트가 변경되지만 변경 사항이 매우 규칙적이라는 것을 알 수 있습니다. 각 패키지의 길이를 살펴보겠습니다. 그런데 세 번째 바이트는 패킷의 길이입니다! 많은 수의 데이터 패킷을 가로채서 4번째 바이트가 명령을 나타낸다는 것을 확인합니다. 이는 클라이언트가 서버에 수행할 작업을 알려준다는 의미입니다. 예를 들어 서버에서 요청한 전투 명령은 "30", 전투 중 이동 명령은 "D4" 등입니다. 다음으로, "F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 89" 위의 첫 번째 패키지를 분석해야 합니다. 포함되어 있습니까? 서버에 PK를 알려주는 NPC가 있어야 합니다. 먼저 웨이터의 코드가 어디에 있는지 알아봅시다. PK 다른 몹 보내기-> 0000 F4 44 1F 30 D4 75 F6 05 01 01 00 01 00 01 75 09SEND-> 0010 05 00 8A 19 00 00 00 11 00 02 00 00 00 C0 우리는 상식에 따라 게임을 분석합니다. 그 안에 들어있는 NPC 유형은 65535(FFFF)를 넘지 않을 것이지만, 개발 과정에서 단어의 범위를 제한하지 않을 것이므로 게임 확장에 도움이 되지 않으므로 이중 단어를 살펴보겠습니다. "Archer"와 "Mobs" 두 패키지를 비교하여 "6C 79 F6 05"와 "CF 26 00 00"에 목표를 설정했습니다. (비교하기는 쉽지만 너무 느리면 안 돼요 ㅎㅎ)