안드로이드 루팅 탐지 방법
모바일 보안 회사에 있었고, 실제로 금융, 증권, 공공 기관에서도 루팅된 폰을 차단하도록 하고 있습니다.
왜냐하면 당연히 보안문제겠죠 ^^
루팅을 탐지하는 방법에는 여러가지가 있습니다.
제가 알고 있는 방식중에 몇 개를 소개해드리고자 합니다.
1. SU 명령어로 확인
유닉스, 사용자라면 SU 의 명령어 의미를 알고 계실 겁니다.
안드로이드도 리눅스 기반으로 이루어진 운영체제라서 SU명령어가 실행 가능한데요.
SU 실행이 된다면 루팅이 되어있다고 할 수 있습니다.
아래 예제를 잠깐 보시면 Runtime.getRumtime().exec() API를 이용하여 SU 명령어를 실행하는 것을 아실 수 있습니다.
try
{
Runtime.getRuntime().exec(
"su"
);
}
catch
( Exception e) {
//Exception이 발생한다면 Rooting이 되지 않은 것으로 확인
}
2. 프로세스 리스트로 확인
ps 명령어로 확인을 할 수 있는데요.
Runtime.getRuntime().exec(
"ps"
)
를 이용해서 Rooting관련 프로세스의 목록 여부를 확인할 수 있습니다.
3.루팅 관련 어플 확인
루팅 관련 어플에는 KingRoot, spapaRoot, TowelRoot 등등 다양한 루팅어플들이 존재하는데요.
어플이 설치이 설치됬을 경우 루팅으로 체크합니다. 관련 예제는 하단에 첨부할게요 ^^
4.SU파일 존재 유무 확인
안드로이드에서 루팅이 됬으면 su파일이 남게됩니다.
예를들어 /system/bin/디렉토리에 su파일이 존재 하게 되는 것이죠.
예 제
체크할 목록
/system/bin/su
/system/xbin/su
/system/app/SuperUser.apk
/data/data/com.noshufou.android.su
/sbin/su
체크할 목록을 위에 소스 path인자로 주게되면 Rooting 확인이 됩니다. 회사에 있을 때 마시멜로우에서는 ps 명령어를 실행할 경우 Exception이 발생했는데요 마시멜로우 이전 버전에서는 잘 동작할 것같습니다.
위의 다섯가지 패턴말고도 다양한 패턴이 존재합니다. 회사에 입사하고 루팅탐지가 안된다고 요청이 많이와서, 관련 루팅앱을 설치하여 분석한 적도 있는데요. 위의 예제는 단순한 예제이고 루팅탐지를 정말 만들고 싶다면 SU파일의 위치, 루팅 관련 PKG를 모아서 추가하셔야 합니다.
즐거운 하루되세요 !~
'Android' 카테고리의 다른 글
(EditText) addTextChangedListener 통해 이벤트 받아오기 (2) | 2016.04.25 |
---|---|
디바이스(Device) 화면 크기 구하기 (0) | 2016.04.25 |
(Method)onWindowFocusChanged (0) | 2016.04.25 |
RecycleView 란? (0) | 2016.04.24 |
안드로이드 루팅이란 ? (0) | 2016.02.27 |