ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드] 루팅 체크하는 로직
    프로그래밍/안드로이드 2019. 8. 9. 17:44

    루팅

    루팅은 루트(root)권한을 얻는 것을 말한다. 여기서 말하는 root는 리눅스 시스템에서 최고 권한을 가진 사용자를 말하는데 일반 사용자들은 그러한 권한들이 없다. 루팅을 하게되면 하드웨어에서 여러가지 조작이 가능하게 되는데 예를 들어 기본적으로 설치가 되어있는 통신사 앱을 삭제할 수 있으며 전원 버튼을 다른 버튼으로 설정한다는 등의 하드웨어를 조작할 수도 있다. 하지만 만일 악성 바이러스에 걸리게 된다면 그에 대한 책임은 본인이 스스로가 져야한다.

     

    1
    2
    3
    4
    5
    try{
        Runtime.getRuntime().exec("su");
    catch (Exception ex){
        System.out.println("루팅 안되어 있어욥..")
     

    보통은 위의 방식대로 한다. 

    자바에는 Runtime 객체가 있는데 운영체제에 대한 정보를 제공해준다. getRuntime() - runtime object의 레퍼런스를 반환하며 exec() 는 명령을 실행시키고, 실행시킨 프로세스의 레퍼런스를 반환한다. 여기서 su는 리눅스 시스템에서 루트권한 접속을 의미하는데 try catch문안에서 제대로 작동을 하지 않는다면 루팅이 되어있지 않다는 말이 된다.

     

    위의 코드로 체크하는 경우가 있지만 변조 탐지 기법을 우회하는 방법이 계속해서 나타나고 있으므로 안심하기에는 어렵다.루팅 체크을 할때 생성되는 파일 디렉터리나 패키지를 확인하거나 프로세스를 체크하고 파일을 체크해보는 등의 시도를 해야한다.

    '프로그래밍 > 안드로이드' 카테고리의 다른 글

    안드로이드 용어 정리  (0) 2019.09.09
    안드로이드 Context란?  (0) 2019.08.19
Designed by Tistory.