워든이 어떻게 동작하는지 궁금하신분들이 많으셔서 올립니다.
분류
디아관련
조회 수
3,395
추천 수
42
워든에 대한 간략한 정보, 어떤것을 체크하는지 궁금하신분들이 많으셔서 적습니다.
워든은 배틀넷 핵감지 시스템으로 스타크래프트 워크래프트3 디아블로2가 워든에 감지 대상입니다.
스타크래프트와 워크래프트3는 아직까지 켜지지않았습니다.
디아블로2는 오늘 켜진거같네요.
(스타나 워3처럼 켜지지 않길 바랬는데 결국은 켜졌네요 봇이 퍼져서 블리자드귀에도 들어간거 같습니다.)
배틀넷 채팅서버(스타,워3) 워든패킷은 0x5E 이고 답변 패킷은 0x5E 입니다.
디아블로2의 게임서버 워든패킷은 0xAE 이고 답변 패킷은 0x66 입니다.
워든패킷은 RC4라는 암호화 기술로 암호화되어있고 RC4로 암호화/복호화 할때 사용하는 키값은 렐름에서 방에 조인할때 알려주는 GameHash 4바이트를 사용합니다.
워든패킷에는 종류가 있는데 0x00 (워든모듈 체크) 없다는 패킷을 서버에 날려주면 0x01 (워든모듈 데이터)를 보내줍니다. 워든모듈이 다운로드가 다되고 다운로드한 워든모듈의 md5 첵섬까지 일치한다면 워든모듈을 읽은뒤 필요한 API를 로드합니다. (여기서 wine_get_unix_file_name이란 api를 로드하는데요 아마도 디아블로 폴더내에 어떤 파일이있는지 검사하는거 같습니다. tmc등 ) 그런다음 서버에서 0x03,0x04, 0x05 패킷을 날려주는데
0x03과 0x04는 storm을 로드하고 mpq여는 패킷입니다. 이 패킷은 답변을 하지 않아도 되고 블럭과 무관합니다.
0x05 패킷은 앞서 패킷을 RC4 로 암호화 한다고 하였는데 그 암호화에 필요한 Key값을 교체하는 패킷입니다.
패킷의 내용에는 MD5 해쉬값 20바이트가 포함되어있고 이를 바탕으로 게임의 함수 몇개를 호출시켜 새로운 RC4 키값을 생성해냅니다.
성공하였다는 답변을 서버에 보내면 0x02 거의 실질적으로 블럭을 담당하는 체크패킷을 보냅니다.
0x02 (워든)이 체크하는곳은 이렇습니다.
메모리 체크 (맵핵등 코드를 변조하는핵 블럭)
페이지 체크 (위와 동일)
MPQ 파일 체크 (서버에서 검사하라고하는 mpq 파일의 wsha-1 해쉬값을 보냅니다. tmc등 모드블럭)
드라이버 체크 (저도 이게 있는지 몰랐습니다. Clientless 봇의 제작자분이 알려주신내용입니다. 전혀 보지못했네요 0x02에서.. )
퐁 (현재 tick값)
API 체크 (API를 변조하였는지 체크(후킹))
모듈 체크 (모듈이 변조되었는지)
정도가 있습니다.
45초내에 답변을 안하면 0xB0 패킷을 보내고 서버와 연결이 종료됩니다.
(블럭은 되지 않습니다. 왜냐하면 이게 Clientless봇인지 디아클라이언트가 렉이 걸려 멈춰 패킷을 45초내에 보내지 못했는지 알방법이 없기 때문입니다. 그래서 Clientless 종류가 블럭되는 일이 없습니다.)
*D2NT가 블럭이 되는지 안되는지는 모르겠습니다 하지만 블리자드에서 D2NT가 후킹하는곳을 알아낸다면 API 체크에서 걸리겠지요~

