본문 바로가기
[ IT ]/Develop

카카오톡 태블릿 스푸핑 패치 - 안드로이드 태블릿에서 카카오톡 동시 로그인하기

by 쏘가리 2026. 10. 19.

시작 전

이 글을 찾아오신 분들은 레노버나 샤오미 등 외산 안드로이드 태블릿에서 카카오톡을 사용하는 방법을 찾고 계실 테니, 먼저 다운로드 방법부터 안내하고 넘어가겠다.

다운로드 (gofile.io) - v1.2

APK를 다운로드 후 설치하면 앱에서 사용 방법과 주의사항을 볼 수 있다. 여기서는 간단히 꼭 알아두어야 할 중요한 내용만 먼저 짚어본다.

첫째, 패치에 대한 책임은 사용자에게 있다.

이 앱은 카카오톡 공식 앱을 변형하여 사용하는 비공식 도구인 만큼, 카카오의 이용약관에 저촉될 가능성이 있다. 그에 따른 계정 이용 제한이나 정지 등의 불이익이 발생할 수 있으며, 앱 사용 여부와 그에 따른 결과는 사용자가 충분히 고려하여 결정해야 하며 그 책임은 사용자 본인에게 있다.

둘째, 설치 과정에서 바이러스 경고가 발생할 수 있다.

레노버 등 제조사 자체 보안 프로그램에서 바이러스 경고가 발생한다. 이는 기존 앱을 변형하고 후킹 모듈을 삽입하는 과정이 보안 프로그램에서 의심스러운 동작으로 탐지되어 발생하는 것으로 추정된다. 다만 모든 경고가 오탐이라는 뜻은 아니므로, 탐지 결과와 파일의 출처를 확인할 필요가 있다.

셋째, 외산 안드로이드 태블릿 사용자를 위한 앱이다.

카카오톡을 정상적으로 사용할 수 있는 삼성 갤럭시 탭이나 일반 휴대전화에서는 사용을 권장하지 않는다. 

넷째, 배포는 언제든 중단될 수 있다.

이 앱은 카카오의 공식 도구가 아니며, 앞서 말했듯 카카오 서비스의 이용약관에 저촉될 가능성이 있다. 때문에 카카오 측의 요청이 있다면 배포가 언제든 중단될 수 있고 그 외에도 카카오톡 앱의 구조가 변경되어 앱을 더 이상 사용할 수 없는 경우에도 배포가 중단될 수 있다는 점을 미리 안내한다.

 


왜 만들었나

카카오톡은 답답하다

요즘은 삼성뿐만 아니라 다양한 브랜드의 안드로이드 태블릿을 쉽게 접할 수 있다. 나 역시 대학 공부에 활용하기 위해 레노버(Lenovo)의 보급형 태블릿을 하나 장만해 사용하고 있다.

태블릿을 사용하다 보면 휴대전화와 태블릿에서 같은 메신저를 사용하며 메시지를 주고받거나 파일을 공유해야 할 때가 있다. 내가 자주 사용하는 텔레그램(Telegram)은 여러 기기에서 같은 계정을 사용하는 것을 기본적으로 지원한다. 하지만 대한민국에서 널리 사용되는 메신저인 카카오톡은 사정이 다르다.

삼성 갤럭시 탭에서는 태블릿용 카카오톡을 통해 기존 휴대전화에서 사용하던 계정을 이어서 사용할 수 있다. 휴대전화와 태블릿에서 같은 계정으로 대화를 확인하고 메시지를 주고받을 수 있는 것이다. 반면 레노버나 샤오미 등 다른 제조사의 태블릿에서는 이러한 사용 방식이 지원되지 않는다.

그 원인으로 카카오톡의 기기 판별 방식을 지적해본다. 실제 동작을 살펴보면 다른 앱들과는 달리 카카오톡은 화면 크기나 해상도, 화면 밀도만으로 태블릿 여부를 판단하기보다는, 미리 정해진 제조사와 모델명의 목록을 기준으로 기기를 구분하는 이른바 Allowlist 방식에 가까운 것으로 보인다. 목록에 등록된 모델은 태블릿으로 인식하지만, 그렇지 않은 모델은 휴대전화로 취급하는 식이다.

문제는 다양한 제조사의 태블릿이 계속해서 출시되는 상황에서 이러한 목록이 모든 기종을 포괄하기는 어렵다는 점이다. 특히 가성비 태블릿을 찾아 레노버나 샤오미 등의 태블릿을 선택한 사용자들은 기기가 충분한 성능과 화면 크기를 갖추고 있음에도, 카카오톡에서 태블릿으로 인정받지 못해 휴대전화와 같은 계정을 함께 사용하는 데 불편을 겪게 된다.

기존에도 방법은 있었다

그렇다고 방법이 전혀 없었던 것은 아니다. 인터넷에서는 카카오톡이 기기를 판별할 때 참조하는 정보를 변경해, 외산 태블릿을 갤럭시 탭으로 인식시키는 여러 우회 방법이 공유되고 있었다.

핵심은 실제 기기를 삼성 제품으로 바꾸는 것이 아니라, 카카오톡이 실행되는 환경에서 확인하는 제조사와 모델명 등의 정보를 변경하는 것이다. 카카오톡이 지원하는 태블릿 모델로 인식하도록 만들면 기존 휴대전화의 계정을 이어서 사용하는 것도 가능해진다.

문제는 이러한 방법을 직접 적용하려면 컴퓨터와 태블릿을 연결하거나, ADB를 준비하고, 여러 명령어와 설정을 거쳐야 하는 경우가 있다는 점이다. 관련 지식이 있는 사용자에게는 어렵지 않을 수 있지만, 단순히 태블릿에서 카카오톡을 사용하려는 사람에게는 번거로운 과정이다.

그래서 앱을 만들었다

너무 불편했다. 카카오톡 앱이 업데이트될 때마다 매번 패치 모듈을 새로 받아 다시 APK를 만들어야 했고, 이 과정을 남에게 설명하는 것조차 너무나 귀찮은 일이었다. 그래서 기존에 알려진 우회 방식을 하나의 앱으로 묶어 보기로 했다.

카카오톡 APK를 준비하여 간단한 검증을 거쳐, 기존의 방식대로 원하는 태블릿 모델을 입력한 후 패치된 APK를 설치하고 버전을 관리하는 모든 일을 하나의 앱에서 진행할 수 있도록 구성했다. 사용자가 직접 여러 도구를 실행하고 각각의 작업을 연결해야 했던 과정을 최대한 줄이는 데 초점을 맞췄다.

새로운 우회 방법이 아니다. 기존에 알려진 방법을 실제로 사용하기 편한 방법으로 구현하는 데에 목적이 있다. 내가 가장 쓰고 싶었으니까, 내가 가장 원하던 기능이니까 그렇게 만들어봤다.


어떻게 동작하나

항상 작명 센스가 없어서 이번에도 직관적인 이름으로 정했다. KakaoTabletPatcher, 한국어로는 카카오톡 태블릿 패처라고 했다. 그렇다면 KakaoTabletPatcher는 구체적으로 어떤 방식으로 카카오톡의 기기 인식을 변경할까? 핵심은 Android의 Build 클래스와 Xposed, LSPatch, 그리고 직접 작성한 후킹(Hooking) 모듈인 SpoofHook.java다.

Android의 Build 클래스

Android에서는 앱이 현재 기기의 제조사나 모델명 등을 확인할 수 있도록 android.os.Build 클래스를 제공한다. 예를 들어 이런 항목들이 있다.

Build.MANUFACTURER
Build.BRAND
Build.MODEL

각각 제조사, 브랜드, 모델명을 나타낸다. KakaoTabletPatcher는 카카오톡 프로세스 안에서 이 세 가지 정보를 변경하도록 구성한다. 사용자가 특정 모델을 선택하면 해당 모델에 맞는 값으로 값을 변경하는 과정이다.

set("MANUFACTURER", manufacturer);
set("BRAND", brand);
set("MODEL", model);

위 코드는 Reflection을 이용해 Build 클래스의 필드에 접근하고 값을 대입한다. 실제 제조사가 바뀌는 것은 아니다. 시스템의 하드웨어 정보나 펌웨어를 수정하는 것도 아니다. 후킹 모듈이 적용된 카카오톡이 실행될 때 읽는 기기 정보를 바꾸는 것이다.

Xposed는 무엇일까

초안을 썼을 때는 LSPatch만 설명했는데, 생각해 보니 Xposed라는 이름도 짚고 넘어갈 필요가 있었다.

Xposed는 안드로이드 앱이나 시스템의 실행 과정에 개입해 기존 동작을 변경할 수 있도록 하는 프레임워크다. 원래 앱의 소스 코드를 직접 수정하지 않고도 특정 메서드의 실행 전후에 코드를 추가하거나 동작에 영향을 줄 수 있다. 이런 기능을 활용해 특정 동작을 구현한 프로그램을 흔히 Xposed 모듈이라고 한다.

쉽게 말해 Xposed 계열 프레임워크가 모듈을 실행할 수 있는 기반을 제공한다면, 모듈은 그 기반을 활용해 실제로 무엇을 변경할지 정의한다.

다만 전통적인 Xposed 프레임워크는 루팅이나 시스템 수준의 구성이 필요한 경우가 있었다. 기존에 공유된 카카오톡 우회 방법 중에도 Xposed를 활용하기 위해 루팅된 기기나 별도의 에뮬레이터 환경을 준비하도록 안내하는 경우가 있었다.

여기서 등장하는 것이 바로 LSPatch다.

LSPatch의 역할

LSPatch는 Xposed 계열의 API를 활용하는 모듈을 패치된 APK에서 실행할 수 있도록 해 주는 도구다. 대상 APK에 필요한 로더와 실행 구성 요소를 삽입하는 방식으로, 별도의 시스템 루팅 없이 모듈을 적용할 수 있도록 한다.

KakaoTabletPatcher에서도 LSPatch를 앱에 포함하여 핵심 패치 엔진으로써 사용한다. 별도의 후킹 모듈을 카카오톡 APK에 주입하여 패치된 APK를 생성하는 방식이다. 역할을 나눠서 설명하면 이런 식이다.

  • KakaoTabletPatcher (메인 앱): APK 다운로드 및 준비, 검증, 모델 선택, 전 과정 총괄
  • LSPatch (핵심 엔진): APK에 주입할 구성 요소 삽입 및 패치 결과물 생성
  • SpoofHook.java (후킹 모듈): 카카오톡 실행 중 기기 정보를 변경하도록 시도하는 후킹 모듈

여기서 LSPatch가 직접 갤럭시 탭 모델을 선택하거나 기기 정보를 결정하는 것은 아니다. LSPatch는 후킹 모듈이 실행될 수 있는 환경을 구성하고, 실제로 어떤 정보를 변경할지는 별도로 작성한 모듈이 담당한다.

그렇다면 이 프로젝트에서 실제 기기 정보 변경을 담당하는 SpoofHook.java는 어떤 코드일까?

직접 작성한 후킹 모듈

SpoofHook.java는 KakaoTabletPatcher를 위해 직접 작성한 코드다. 앞에서 설명한 Xposed 계열의 기능을 활용해 카카오톡이 실행될 때 기기 정보를 변경하도록 만들었다.

사용자가 패처에서 모델을 선택하면, 프로그램은 해당 모델의 정보를 spoof.properties라는 설정 파일에 기록한다. 예를 들어, Galaxy Tab S10 Ultra Wi-Fi 모델을 선택한다면 다음과 같다.

manufacturer=samsung
brand=samsung
model=SM-X920N

이후 선택한 모델 정보가 반영된 후킹 모듈을 준비해 카카오톡 APK에 적용한다. 카카오톡이 실행되면 모듈에 포함된 SpoofHook이 'spoof.properties'를 읽고, 설정된 제조사와 브랜드, 모델명으로 기기 정보를 변경하도록 시도한다. 쉽게 말해 카카오톡이 확인하는 기기 정보를 원하는 모델의 정보로 바꾸는 셈이다.

 

여기서 나오는 개념이 앞서 말한 리플렉션(Reflection), 프로그램이 실행되는 중에 클래스 내부의 필드를 찾아 접근하는 기능이다. 이 기능을 이용해 Android의 Build 클래스에서 해당 항목을 찾아 값을 변경하도록 시도한다. 

이렇게 카카오톡이 확인하는 기기 정보를 변경하면, 앱은 실제 태블릿이 아닌 다른 모델의 기기 정보를 바탕으로 실행되는 셈이다. 실제로 패치된 카카오톡에서 선택한 모델명으로 인식되고 태블릿 모드가 활성화되는 것을 확인했다. 카카오톡이 지원 대상으로 정해 둔 모델 정보를 기준으로 태블릿 여부를 판별하는 것으로 보이며, 이 프로젝트는 그 정보를 변경하는 방식으로 동작한다.


( 글 수정 중 )

반응형