카카오톡 (광고제거/도배기) 활용하기

반응형
728x90
반응형
 
 
Introduction

이번에 MFC기반으로 Windows에 상주하고 있는 Process들의 리스트를 체크하는 작업을 진행하다 카카오톡의 광고제거 및 도배기(?) 라는 프로그램들을 보았습니다. 그래서 원하는 형태의 모듈이 있을 것 같아 찾아보기 시작하였습니다. 
찾아본 자료들은 Win32 API를 이용하여 C/C++기반에 MFC, C#, Python등을 이용하여 만들어진 자료들이 많이 있었습니다. 언어는 다르지만 동일한 Win32 API를 활용하기에 전체적으로 자료는 검토하기로 하였습니다. 자료들 중에 정리가 잘된 블로그들도 있었습니다. 그래서 작업이 완료된 지금 잊어버리기 전에 블로그에 포스팅을 하고 마무리를 하는 것이 좋지 않을까 생각되어 키보드를 잡았습니다. 그럼 전체적인 Reference는 마지막 파트를 참조해주시는 것이 좋을 것 같고 하나씩 정리해보도록 하겠습니다. 
 
 
카카오톡의 구조

카카오톡은 visual studio 기반 Win API/MFC, C#, 혹은 기타. 등으로 개발된 것이 아닐까 다들 추측하더군요. 먼저 카카오톡의 구조를 알기위해서 Microsoft Spy++을 이용하여 확인하면 아래와 같습니다. 
 
 
  • 카카오톡
    • OnlineMainView_xxx : 카카오톡 로그인 이후 Windows
    • LockModelView_xxx: 카카오톡 로그인 후 잠김 화면
    • EVA_Window: 카카오톡 광고
  • KakaoTalkEdgeWnd
  • KakaoTalkShadowWnd
 
그리고 ["+"] 키를 눌러서 확장 후 다시 확인 해보도록 하겠습니다. 
 
  • 카카오톡
    • ContactListView : 친구목록
    • ChatRoomList: 채팅목록
    • MoreView : 광고
    • OnlineMainView_xxx : 카카오톡 로그인 이후 Windows
    • LockModelView_xxx: 카카오톡 로그인 후 잠김 화면
    • EVA_Window: 카카오톡 광고
  • KakaoTalkEdgeWnd
  • KakaoTalkShadowWnd
 
다 적고 보니, 적을 필요가 없을 것 같아 그냥 지웠네요. 개발자가 아니여도 대략적으로 봐도 대충 무슨무슨 콘트롤인지 눈에 보일 것 같아 생략하였습니다.  그림으로 나타내면 아래와 같습니다. 각각의 버튼을 눌렀을 때 보이는 화면이라 생각 하시면 됩니다. 
 
 
 

 

 

 
카카오톡 채팅방의 구조

  이번에는 카카오톡 채팅방의 구조를 살펴보도록 하겠습니다. 채팅방은 아래와 같은 형태로 Spy++에서 보여지게 됩니다. 
 
 
채팅방을 확인해보도록 할까요?
 
다른 블로그 들을 참조하면 RICHEDITXXW 형태는 입력EDIT공간을 나타내고 그 외에는 스크롤바를 나타냅니다. 그럼, 주황색으로 표기된 control은 어떻게 찾아야 할까요? 찾는 방법은 영상 캡쳐 후, 영상에서 detection 수행하고 이후 position을 찾는 방법이 있습니다.  크기가 달라져도 아이콘의 크기는 변함이 없으니 아주 간단한 영상 비교 알고리즘으로 찾으면 됩니다. 코드도 몇줄 안되죠. ㅎㅎ 하지만, 검출하고나서 또 마우스와 키보드 조작과 관련된 부분을 공부해야 쓸 수 있을텐데, 후킹(Hooking) 관련 된 내용으르 찾아보시면 됩니다. codeproject 혹은 Dev 커뮤니티를 찾아보시면 많은 자료들이 있어서 써볼 수 있습니다. 문제는 Visual studio 6.0에서 개발된 코드들이다보니 VS2010, 2013, 2019 등 버전업을 하면서 코드를 돌려보던가, 혹은 새로운 프로젝트를 생성하여 코드를 조금씩 옮기며 컨버팅 하는 작업을 거쳐서 만드셔야 합니다. 
 
 
기타 다른 MFC기반으로 만들어진 SW 구조 - 01 

Visual Studio Project Cleaner(프로젝트 청소기)포스팅을 해두었는데, 여기서 받으셔서 확인해보셔도 됩니다.  Visual Spy++을 이용하여 아래의 프로그램을 확인해보도록 할까요? 
 
결과는 다음과 같습니다. 
 
STATIC, Button, ListView, Progress 전부 노출이 되네요...참 슬프지만, 향후 콘트롤을 숨기는 방법을 찾아 노출되지 않도록 할 계획입니다. 그럼 메모리에 올려두고 일일이 비교를 해야하겠지만, 이또한 조금만 해보면 금방 찾게 되는 문제점이 있죠. 그래도 원천 봉쇄하는 방법을 찾을 때까지 시도할 예정입니다. 이어서 다음 SW를 같이 확인 해보도록 하겠습니다. 
 
기타 다른 MFC기반으로 만들어진 SW 구조 - 02

윈도우/로컬(local) 폰트 뷰어(Viewer)도 동일하게 블로그에서 다운받아서 확인을 해보시면 됩니다. 
 
 
 
결과는 다음과 같습니다. 
 
 
똑같이 그대로 노출이 되었죠? 일단 기존에 MFC로 만들어진 툴을 확인한 이유는 카카오톡에 메시지를 보내기 전에 다른 툴을 실험용으로 테스트 하기위해서입니다. 기본적으로 만들어진 툴이 어디까지 뚫릴 수 있는가? 궁금하지 않나요? 조금 돌려서 이야기하자면, 게임과 관련되어 해킹/크래킹 작업부분도 가능하겠죠. 또 개발자 입장에서는 이러한 작업을 하는 사람들을 위해 보안작업을 해야하겠죠? 양쪽다 알아야 공격과 방어를 할 수 있으니깐요. 
 
그리고 백신에서는 어디까지 바이러스 혹은 기타 잡 쓰레기(?)로 검사를 하여 조심해야하는 프로그램으로 걸리는지 참 궁금하더군요. 
일단 활용방법에 대해, 이야기 하기 전 현재 찾아본 자료들을 조금씩 수정하여 만든 걸 확인해보도록 하겠습니다. 
 

 

 

 
결과물

 
기존에 process 리스트 검색하는 작업을 하고 있어서, 간단하게 코드 몇줄(?) 추가하여 완료한 작업입니다. 먼저, 전체적인 Process List를 검사하여 첫번째 리스트에 추가합니다. 그리고 더블클릭할 경우, Child Process List에 출력 하도록 하였습니다. 이때, Child Process 는 Lv1 까지만 찾도록 하였습니다. Spy++ 처럼 여러 단계를 검사 할 수 있지만, MFC에서 Tree형태로 작업한게 없어서 (귀차니즘으로..) 하지 않았습니다. 그리고 Spy++에서는 검색이 조금 불편하여 SW Name 및 Class Name으로 각각 검색 할 수 있도록 수정해두었습니다. 그외에는 기타 edit control에서 Enter키 누르면 종료되는 그런 어처구니 없는 부분들 처리 등을 하였죠. (지금은 기타 다른 툴에서는 대부분 막아둬서 안해도 되는 작업들이지만, 수작업이 꽤 많은 MFC죠..)
  또한, 검색된 process를 선택 후, 카카오톡 채팅방일 경우, 메시지를 전송할 수 있도록 해두었습니다. 상단 Gif 를 참조하면, 입력된 글자가 카카오톡 채팅방으로 입력되는 것을 볼 수 있습니다. 이러한 작업을 "카카오톡 도배기" 라는 키워드로 구글링하니 자료가 많이 나오더군요. 왜 이런 걸 만들어서 배포하는지는 모르지만, 단순 호기심으로 다운 받아 실행 할 경우 컴퓨터에 보관된 자료들이 그대로 노출 될 수 있는 것을 명심하셨으면 좋겠습니다. 그 이유에 대해서는 다음 Part에 설명 드리도록 하겠습니다. 
 
 
카카오톡 핸들(HWND) 활용하기

카카오톡의 핸들(HWND)을 얻을 수 있으면, 무슨 작업을 할 수 있을까요? 크기조절, 이동, 광고제거, 폰트변경, 강제종료, 등등 많은 작업들을 할 수 있죠? 그럼 Win32에서 SendMessage를 이용하여 발생할 수 있는 이벤트는 무엇이 있는지 알아볼까요? 
AutohotKey페이지를 살펴보면, 파라미터로 추가가능한 매크로 상수들이 작성되어있습니다. 글자 가져오기(WM_GETTEXT), 종료(WM_CLOSE), 폰트 변경(WM_FONTCHANGE, WM_SETFONT,WM_GETFONT) 궁금하신 분들은 페이지를 참조하여 찾아보시기 바랍니다. 그리고 Win32 API에서는 시스템에서 제공하는 기본적인 이벤트 외 사용자 이벤트를 생성하여 구현 할 수 있습니다. 이런 작업들은 process간 통신을 주고 받을 때 사용할 수 있습니다.  그 외에 키보드, 마우스 등의 이벤트를 가져올 수도 설정할 수도 있죠. 조금 광범위한가요? 
 
이번에는 조금 실용성이 있을지는 잘 모르겠지만, 예시를 들어보겠습니다. 
  • 예시 1
    • Windows에서 카카오톡을 실행 후 자리비움. (이때, 카카오톡은 잠금모드로 변하지 않음을 가정)
    • 친구로부터 카카오톡 메시지가 왔을 때, 카카오톡의 채팅방 핸들을 이용하여 자동 응답 봇을 만들어 대응 가능. 
 
좋은 방법으로는 Android/iOS App 및 Windows SW에서 만들어진 응용프로그램에서 기존에 잘 만들어진(?) 카톡으로 정보를 전달 할 수 있습니다. 하지만, 이러한 기능들은 Win32 API를 이용하여 [바탕화면, 폴더, 키보드, 마우스 등] 감시당할 수 있습니다. 그래서 이후 악용하게 되면 사용자의 개인정보 등을 빼낼 수 있죠. 물론, 범죄를 저지른 건 흔적이 남기때문에 잡힐 수밖에 없습니다.
 
그래서 광고제거/도배기등은 장단점이 있기때문에 코드가 공개되어 안전 부분이 확인 되어진 SW만 사용하시는 것을 추천드립니다. 
 
 
기타 의문사항

의문사항 Part를 추가해두었습니다. 의문점으로 생각되는 부분은 아래와 같습니다. 
 
  • 카카오톡은 왜 채팅방의 Edit control을 노출 시켰을까요? 
    • 보안 문제는 어떻게 해결하였을까요? 
  • 광고 삽입 문제
    • 광고제거 SW는 괜찮은가? 
 
첫번째로 채팅방의 콘트롤을 왜 노출시켰을까요? 현재 상용화 된 SW중에 카톡으로 메시지 보내는 것이 있을까요? 안드로이드나 아이폰에서는 SDK를 공개하여 봇을 만들 수 있는 코드를 공개한 것으로 알고 있지만, PC버전에서도 그런가요?  참고: Kakao developers 
  현재는 공개된 것은 없지만, 최근 Web을 이용하여 연동하는 모듈이 많이 있기때문에 이를 활용 할 수 있지 않을까 합니다. 
 
광고 관련 건은 나무위키에서 확인이 가능합니다. 2019년도 5월에 광고가 시작되었네요. 지금으로부터 무려 1년 반 전의 일이네요. (광고 클릭을 한번도 해본적이 없어서 저는 카카오톡에 광고가 나오는 줄은 최근에알았다는... ) 나무위키에서는 비판 아닌 비판의 내용이 있습니다. 다른 여러 서비스들을 이용하여 수익을 창출하는 기업으로서 광고까지 달았기 때문인 것 같네요. 카카오톡PC의 광고는 개발이 완료된 시점에 추가된 기능으로서 상단에 본 것과 같이 만들 수밖에 없지 않았을까? 그런 생각이 드네요. 그래서 사용자들이 카톡을 Spy++을 이용하여 분석 후, 광고 제거를 할 수 있었던 일로 만들어진 것 같습니다. 그럼 카카오톡의 광고를 제거하는 SW는 법적으로 문제가 없을까요? 업무방해 죄가 될까요? 
 
 
 
마지막 기사를 확인해보면 다음과 같은 내용이 있습니다. 
 
(생략)
 
이로인해 구글은 해당 프로그램 개발사를 대상으로 영업방해 혐의를 적용해 소송을 제기하기도 했다.
지난 2018년 구글은 애드블록플러스 개발사 ‘아이오’를 상대로 독일에서 아이오가 공정 경쟁을 위반하고 영업을 방해했다며 제기한 소송에서 패소하기도 했다.
 
당시 재판부는 광고차단 프로그램 사용에 대한 결정은 개발사가 아닌 인터넷 사용자 고유 권한이라고 판결했다.또 애드블록플러스의 사용이 미디어 사업에 직접 지장을 초래하지 않는다고 판시했다.
 
한국에서도 유사 판례가 있다. 2016년 당시 다음카카오가 포털사이트의 광고 차단 기능을 포함한 프로그램을 제작한 클라우드웹을 영업방해 혐의로 고소했다가 패소했다.
 
재판부는 “포털사이트에 접속한 개별 사용자들이 거기에서 제공되는 광고 등 콘텐츠를 본래의 형태와 내용 그대로 열람해야 할 의무가 없다”면서 “광고효과가 감소하는 불이익이 나타나도 이는 최종소비자가 각자의 선호에 따라 이용 방식을 변경함으로써 생기는 사실상의 효과일 뿐”이라고 설명했다.
 
또 재판부는 “프로그램을 제공·배포한 것만으로 부당한 수단을 사용해 개별 인터넷 사용자와 피고 사이, 또는 광고주들과 피고 사이에 존재하는 계약 이행을 방해하거나 권리를 침해하는 등 불법행위가 성립한다고 볼 수도 없다”고 판시했다.
 
(생략)
 
이후, 개발사에서는 보안 문제로 인해 광고 차단하는 SW/App등을 제한하는 움직임이 보이고 있었습니다. 라는 내용이 있네요. 
 
결론은, 광고를 다는 것은 기업의 자유이지만, 포털 사이트에 접속한 개별 사용자가 광고까지 그대로 열람 할 필요가 없다. 라는 것입니다. 하지만, 이러한 불법 SW등으로 인해 개인정보 노출이 될 경우, 이 또한  기업에서는 보상할 필요가 없지 않을까? 하는 그런생각이 들게 됩니다. 그래서 안전함이 인증 된 SW가 아닐 경우는 사용하지 말 것을 권합니다. 법적으로 가면 패소하지 않을까 생각 되네요. 
 

 

 

 
 
기타
  • 법률관련해서 최근 SW로 정리 예정중인데, 법률 사례를 살펴볼 수 있는 페이지가 있으면 댓글로 링크 남겨주세요 ^^/ 
 
그리고 카카오톡 관련하여 광고제거 혹은 코드공개 부분은 온라인에 많이 있기때문에 업로드 하지 않도록 하겠습니다. "직접" 구글링해서 찾아보시면 많은 자료들이 있으니깐요 ㅎㅎㅎ 향후, 저는 다른 방향으로 사용자에게 도움을 줄 수 있는 형태로 가공하여 사용할 예정입니다. 
 
오늘은 그럼 이만 Bye Bye.
728x90
반응형

댓글

Designed by JB FACTORY