안드로이드 앱을 디버깅 하기 위해서는 아래 두 개의 조건 중 최소 한 개를 만족해야한다.
- 앱의 AndroidManifest.xml의 android:debuggable 값이 “true”일 것.
- 기기의 ro.debuggable이 1로 되있을 것.
AndroidManifest의 플래그의 경우 대부분의 프로덕션 앱은 false로 되어있다. apktool등으로 디컴파일 후 매니페스트를 수정하고 다시 빌드할 수도 있지만, 만약 앱에 안티디버깅 등의 보호 조치가 되어있다면 이것부터 깨야하니 힘들다. 또한 빌드 후 실행 과정에서 무결성 검사에서 걸릴 수도 있다.
매니페스트 수정이 안되더라도 한 가지 방법이 있다. 휴대폰의 시스템 프로퍼티 값 중 ro.debuggable이라는 값이 있는데, 이 값이 1로 되있으면 매니페스트의 플래그 값을 쿨하게 씹고 디버깅이 가능해진다.당연히 기기는 루팅이 되어있어야한다.
오늘은 Magisk로 루팅된 기기에서 이 값을 변경하는 방법을 알아보겠다. 테스트 환경은 다음과 같다.
- 갤럭시 S21 5G (SM-G991N)
- 안드로이드 14
- Magisk v27
MagiskHidePropsConf 모듈 설치
위 레포지토리의 릴리즈 에서 모듈을 받아준다. 글 작성 시점 기준 최신 버전은 v6.1.2이다.
README와 설명에 더이상 업데이트를 하지 않는다고 되어있지만, 여전히 최신 안드로이드 및 Magisk에서 작동하는걸 확인했다.
다운받은 zip 파일을 Magisk 모듈로 설치한 다음, 재부팅 해주자.
ADB 연결해서 작업하기
재부팅 후, 기기를 usb로 데스크탑과 연결한다. adb를 준비한다. 이 글을 읽고있다면 adb 사용법 및 연결법은 다 알고있을테니 설명하지 않는다.
C:\Users\admin\testdir>adb shell
o1s:/ $ su
adb 쉘로 접속한 다음 su를 입력하여 root로 전환한다. $가 #으로 바뀐것을 확인하자.
props를 입력하면 아까 설치한 모듈이 실행된다.
o1s:/ # props
Loading... Please wait.
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
Updating fingerprints list
=====================================
No connection.
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
Select an option below.
=====================================
1 - Edit device fingerprint
2 - Force BASIC key attestation
3 - Device simulation (disabled)
4 - Edit MagiskHide props (active)
5 - Add/edit custom props
6 - Delete prop values
7 - Script settings
8 - Collect logs
u - Perform module update check
r - Reset all options/settings
b - Reboot device
e - Exit
See the module readme or the
support thread @ XDA for details.
Enter your desired option: 5
잠시 기다리면 이런 옵션 선택 화면이 나오는데 5를 입력하여준다.
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
Custom props
Select an option below:
=====================================
Set or edit custom prop values for your device.
Currently no custom props set.
Please add one by selecting
"New custom prop" below.
n - New custom prop
b - Go back to main menu
e - Exit
See the module readme or the
support thread @ XDA for details.
Enter your desired option: n
프롭을 새로 만들기 위해서 n을 입력한다.
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
New custom prop
=====================================
Enter the prop to set. Example:
ro.sf.lcd_density
b - Go back
e - Exit
Enter your desired option: ro.debuggable
ro.debuggable을 입력한다.
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
ro.debuggable
=====================================
ro.debuggable is
one of the sensitive props that can be
set by the MagiskHide props option.
Are you sure you want to proceed?
y - Yes
n - No
e - Exit
Enter your desired option: y
진짜 바꿀거냐고 물어보는데 y를 눌러 계속 진행
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
ro.debuggable
=====================================
Enter the value you want to set
ro.debuggable to,
or select from the options below.
The currently set value is:
0
Please enter the new value.
b - Go back
e - Exit
Enter your desired option: 1
1로 바꿔야 하니까 1입력.
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
ro.debuggable
=====================================
This will set ro.debuggable to:
1
Pick an option below to change
what boot stage the prop will
be set in, or set/reset a delay:
1 - Default (current)
2 - post-fs-data
3 - late_start service
4 - Both boot stages
d - Delay
Do you want to continue?
Enter y(es), n(o), e(xit)
or an option from above: y
뭐라뭐라 뜨는데 그냥 y눌러서 계속 진행한다.
Working. Please wait...
Working. Please wait...
Working. Please wait...
Working. Please wait...
Working. Please wait...
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
Reboot - ro.debuggable
=====================================
Reboot for changes to take effect.
Do you want to reboot now (y/n)?
Enter y(es), n(o) or e(xit): y
Rebooting...
재부팅을 해야지 값이 적용된다고 한다. y를 눌러서 재부팅.
결과 확인
C:\Users\admin\testdir>adb shell
o1s:/ $ su
o1s:/ # getprop ro.debuggable
1
재부팅 후 쉘에서 getprop ro.debuggable을 입력해보면 1이 나온다.
이 값은 재부팅 해도 유지되니, 혹시 되돌리고 싶다면 위와 같은 방법으로 0으로 세팅하면 된다.
댓글