안드로이드 앱 모의해킹을 하기 위해 Nox를 사용할 계획이였지만, Nox도 wsl를 이용한 가상화를 사용하기에 이미 Docker를 위한 wsl를 사용 중이라 충돌이 일어나게 된다.

따라서, 별도의 공기계를 구입하여 안드로이드 앱 모의해킹을 하려 한다. 이를 위해서는 루팅이라는 작업을 해야 한다.

루팅

Root는 트리의 일부일뿐만 아니라 사용자가 시스템을 완전히 제어 할 수 있는 권한 (일종의 관리 계정)을 제공하는 유닉스 시스템 계정의 전통적인 이름을 의미합니다.

Android의 운영 체제는 Linux 코어를 기반으로 하며 root라는 사용자(관리자)가 있으며 모든 파일에 무제한으로 액세스 할 수 있으며 수정과 관련된 모든 작업을 수행 할 수 있습니다.

루팅을 하게되면 금융앱 사용불가, 삼성페이 영원히 사용불가이며, 각종 보안 취약점에 놓일수도 있으니 사용하지 않는 공기계나 서브폰으로 시도하세요. 또한 공장초기화가 진행되어 데이터가 모두 날라갑니다

부트로더 해제

부트로더 해제를 하지 않을 시 OEM 잠금해제를 하더라도 다운로드 모드에서는 해제 되지 않은 것으로 되어 있다.

따라서, 다운로드 모드로 접근하게 되면 아래와 같이 경고 문구가 나오는데 부트로더 해제 관련은 디바이스 잠금 해제 모드로 볼륨 상 키를 길게 누르면 부트로더가 해제된다.

다운로드 모드 접근

  • 홈버튼이 있는 기기 : 전원 + 홈 버튼 + 볼륨 하

  • 홈버튼이 없고 빅스비버튼이 있는 기기 : 전원 + 빅스비 + 볼륨 하

  • 홈버튼이 없고 빅스비버튼이 없는 기기 : 전원 + 볼륨 상 + 볼륨 하

  • One Ui 3.0 이상 : USB 연결 상태로 볼륨 하 + 볼륨 상

개발자 모드

설정 > 휴대전화 정보 > 소프트웨어 정보 > 빌드번호 연타

빌드번호를 연타하게 되면 개발자 옵션이 활성화 되었다는 Toast 메세지가 나오게 된다.(저는 이미 활성화 시켰기 때문에 다른 Toast 메세지가 뜨는 겁니다!)

메세지가 뜨고 나서 다시 설정으로 들어가보면 마지막 부분에 개발자 옵션이 나오게 된다. 해당 옵션으로 들어가서 OEM 잠금해제USB 디버깅 옵션을 활성화 해줘야한다.

odin을 통해 이미 펌웨어를 건드리는 경우 OEM 잠금해제가 없을 수 있다. 이런 경우 아래 링크를 통해 따라하면 됩니다!

Frija

루팅 과정에서 사소한 잘못으로 인한 벽돌현상(무한 부팅)이 발생하게 된다. 이를 방지하고, 자신의 버전에 맞는 TWRP를 삽입를 올려야 하기에 이를 사용하게 된다.

Frija라는 툴을 이용하여 기종에 맞는 순정 펌웨어를 받게 된다.

https://github.com/SlackingVeteran/frija/releases/download/v1.4.4/Frija-v1.4.4.zip

클릭하시면 바로 다운받아집니다. 파일을 다운받은후 압축을 푼 뒤, Frija.exe파일을 실행시켜주세요.

실행 시 아래와 같은 경고창과 꺼지는 경우가 있는데

Please make sure microsoft visual c++ 2008 redistributable package (x86) 
and microsoft visual c++ 2010 redistributable package (x86)

이러한 경고창이 뜬다면 아래의 링크를 통해서 버전에 맞게 다운받으시면 됩니다. 위 경고창에서 버전만 다르게 나온다면 구글에 검색하면 마이크로소프트에서 제공하는 파일 받으시면 됩니다!

microsoft visual c++ 2008 redistributable package (x86)

microsoft visual c++ 2010 redistributable package (x86)

Frija.exe파일을 실행하게 되면 아래와 같은 창이 나온다.

  • Model : 설정 > 휴대전화 정보 > 모델번호

  • CSC : 통신사 코드, 모델번호 뒷 자리에 따라 알 수 있다.

    • KT: KTC, 뒷 자리 K일 경우

    • SKT : SKC, 뒷 자리 S일 경우

    • U+ : LUC, 뒷 자리 L일 경우

    • 자급제 : KOO, 뒷 자리 N일 경우

이에 맞게 Check Update를 클릭하여 파일을 다운로드 받으면 됩니다.

odin

이 과정은 순정 펌웨어일 경우 하지 않으셔도 무방합니다.

https://www.osamsung.com/kr/ 공식 페이지에서 odin 프로그램을 다운로드 받고, Frija를 통해 받은 BL, AP, CP, CSC 파일을 아래와 같이 odin을 통해 세팅을 한다.

이 과정은 Frija를 통해 받은 순정 펌웨어를 올리는 과정입니다.

(해당 버전은 odin 3.12 버전으로 set Patition 부분에서 멈추는 현상이 있기에 odin 3.14.4을 이용했습니다.)

잘못된 파일이 들어가지 않았는지 확인을 해보시길 바랍니다.

반드시, 휴대폰에 적용되어 있는 모든 계정을 삭제하고 하시길 바랍니다.

이후, USB 포트를 연결한 상태로 전원을 끄고, 볼륨 하 + 볼륨 상을 동시에 누르고 있으면 Continue에 해당하는 문구대로 하면 아래처럼 다운로드 모드로 들어가게 된다.

이 상태가 되었다면 다시 odin으로 가서 Start 버튼을 누르고 기다리면 완료 odin에는 PASS! 문구가 나오며 스마트폰은 자동으로 공장 초기화가 이루어져 있을 것이다.

그게 아닌 리커버리 모드로 들어가게 되는 경우 볼륨 키와 전원 키를 이용하여 Wipe data/factory reset을 통해 공장 초기화를 해주시면 됩니다.

Magisk

Magisk는 공식 깃허브에서 모든 버전을 쉽게 구할 수 있다. 최선버전의 .apk파일을 다운 받으시면 됩니다.

https://github.com/topjohnwu/Magisk/releases?page=1

다운로드 받은 .apk 파일을 단말기에 넣으면 된다.

스마트폰으로 돌아가 내 파일 > APK 설치 파일을 들어가면 우리가 넣은 Magisk.apk 파일이 보일텐데 설치를 마치면 된다.

Magisk에서 펌웨어 루팅

우리는 순정 펌웨어를 올리기 위해 odin에서 사용한 파일을 다시 활용하겠습니다.

AP_XXXXXXXXXX_YYYYYYYYY_ZZZZZZZZZ_REV00_user_low_ship_meta_OS11.tar.md5

AP에 적용한 파일명을 변경하게 되는데 .tar.md5에서 md5를 삭제한 ~~~~OS11.tar 형태로 만든 이후 단말기로 복사한다.

단말기로 돌아가 Magisk 어플을 키고 아래와 같이 설치 버튼을 클릭합니다.

리커버리 모드 체크하고 다음 버튼을 누릅니다.

다음 버튼을 누르면 설치 방법에서 파일 선택 및 패치를 누릅니다.

누르면 어떤 파일을 선택할 지 탐색기가 나오는데 왼쪽 상단 네비게이션 드로어 버튼을 누르면 목록이 있는데 내 파일로 이동합니다.

내 파일에서 아까 넣어둔 AP.xxx.tar 파일의 디렉토리로 이동해서 클릭하고 설치 클릭합니다.

기다리면 펌웨어의 플래싱 과정을 보여주고 완료된 파일의 위치를 보여주는데 PC로 다시 빼오면 됩니다.

펌웨어 마운트

단말기를 다시 다운로드 모드로 진입시키고, odin을 켜 AP에 추출한 파일을 넣고 Options > Auto Reboot를 해제한다.

Start을 누르고 기다리면 완료가 되어도 Auto Reboot를 껏기에 계속 다운로드 모드에 남게 되는데 볼륨 하 + 전원 키를 통해 재부팅을 한다.

이후 단말기를 킬 볼륨 상 + 전원 키를 통한 부팅을 해야 루팅된 OS로 부팅이 된다.

볼륨 상 + 전원 키를 너무 길게 누르면 리커버리 모드로 가기에 3초~5초만 유지해야 한다. (부팅 화면이 나올 때 바로 때면 된다.)

부팅을 했을 때 루팅이 안되어 있다고 하면 재부팅하면서 위 동작을 반복하면 된다. 루팅된 상태로 부팅을 할 경우 설치한 Magisk가 알아서 쉘 권한 등 대부분 작업을 해준다.

adb를 통해 아래와 같은 결과가 나오면 마무리 되었다고 볼 수 있다.

참고