DHelper - 디아블로3 헬퍼

프로그래밍 +1

안녕하세요. 오랜만에 블리즈컨 디아블로 소식을 접하고 홈페이지에 들어왔더니 이전보다 사용하시는 분이 많이 늘었네요. 

 아직 DHelper가 계정 제재당할 만한 무언가가 있을거라는 댓글에 그림으로 설명 드디려고 합니다. 


 

1. 게이머의 입력 처리 (후킹)


 게이머는 키보드와 마우스로 컴퓨터(OS)에 '입력'을 하게 됩니다. 

 그런데 OS(운영체제)는 키보드와 마우스로등의 외부장치로만 사용자의 '입력'을 받는게 아닙니다. 


 DHelper는 사용자의 입력을 '후킹(사용자의 입력 이벤트를 중간에 가져온다)'을 합니다. 

 

 '헬퍼 시작' '헬퍼 종료'등등의 기능을 실행할 때 Key를 등록 하셨을텐데요. 게이머가 이 키를 누르게 되면 DHelper는 이 이벤트를 후킹하여 

 반복키, 토글키등을 동작 시키는 원리입니다. 



2. 반복키, 기능키등등

  헬퍼를 시작하면 스킬을 지속적으로 사용할 수 있게 눌러주는 것 또한 헬퍼는 디아블로 클라이언트에 어떤 이벤트를 보내는게 아닙니다. 

  OS에 메세지를 보내게 되는거죠. 이는 마이크로 소프트에서 공식적으로 제공해주는 API를 통하여 메세지를 전달하기에 

  어떤 편법이나 불법적인 행위가 아닙니다. 


3. 특정 UI에 마우스 이벤트 막기 

  DHelper UI를 안눌리게 하는 기능이 있습니다.

  이건 아주아주아주 원시적인 방법인데요. 특정 좌표로 영역을 두고 그 좌표에서 이벤트가 들어오면 1번의 후킹을 통하여 가로챈 메세지를 

  무시하는 방법입니다. 

  

  이 또한 디아블로 클라이언트에 어떠한 조작을 하지 않고 OS의 해상도 영역을 지정하기 때문에 

  

  디아블로 창모드를 지원해드리지 못하는 겁니다. (디아블로 클라이언트가  항상 같은 곳에 있다면 가능하겠죠)



4. 인벤에 계정 정보 및 패스워드를 암호화 없이 저장한다는 게시물

   계정을 입력 받지도 않는데 뭘 저장한다는지 이해가 안되네요..

   서버에 데이터 저장할 때 배틀태그와 암호는 설사 저장된다고(저장되지도 않습니다...) 해도 계정을 알 수 있을까요..;;

   서버 저장은 이동 편의성과 헬퍼 설정 공유를 위하여 만들었습니다. 

   비번이 노출된다고 해도 큰 문제 없어 보이는데.. 제 생각만 그런건가요..

   아무튼 이번 업데이트에 로컬 저장도 포함하니 헬퍼 설정파일 도난?에 신경 쓰이신다면 로컬 저장 이용 부탁드립니다~!


 

 결론적으로 

  헬퍼는 디아블로 클라이언트에 어떠한 조작도 하고 있지 않고 마이크로 소프트가 제공하는 시스템 API 만 사용하고 있으며

  의심이 되신다면 제가 올려드린 오픈소스를 보시면 알 수 있습니다. 


  DHelper 말고 외에 모든 헬퍼 프로그램은 위와 같은 시스템을 사용하고 있습니다. 



 

여담으로 하나 말씀드리자면 

디아블로가 헬퍼를 인정하는건 예측컨대 못 잡아서라고 생각합니다. 


디아블로는 서버는 호스트와 엔티티를 연결해주는 역할을 합니다. 

게임은 호스트(4명의 유저 중1)명 / 유저 3명이 서로 TCP로 연결하여 게임플레이를 합니다. 


디아블로 여러 오브젝트와 빠른 스킬을 사용할 수 있는건 

모든 액션이 클라이언트 기반이기 때문입니다. 


호스트와 엔티티들의 모든 액션을 디아블로 서버에서 저장하고 있다면 그 양은 어마어마하고 서버 관리 또한 간단하지 않습니다. 


잡소리가 길었습니다. 조만간 불편해 하시는 업데이트 버전을 올리도록 하겠습니다. 





'프로그래밍' 카테고리의 다른 글

DHelper 동작  (1) 2018.11.07

Comment +1

  • 덕분에 간간이 즐기는 디아3가 더 쾌적해졌습니다 ;)
    너무나 감사합니다!
    호의로 제공한 재능이 구설수에 올랐다니 애통한 일입니다만...