루팅한 안드로이드 스마트폰에 대한 이야기다 


안드로이드 어플중에 루팅 여부를 체크해서 사용에 제한을 거는 어플들이 있다.
내 기기를 내가 관리자 모드로 사용하겠다는데 왜 태클을 거는지 이해할수가 없다.
보안상의 이유가 있다고 하더라도,
루팅은 개인이 선택해야할 선택사항이지 강제적으로 막는 건 개인의 자유를 침해하는 거라고 본다.
개인 소유의 PC를 관리자 모드로 쓰겠다는데 아무도 간섭하지 않는 것 처럼 말이다.
보안과 관련되 이유도 실은 동의하기 어렵다.
해킹을 당한하면 어차피 주요 정보들은 루팅여부와는 관계 없이 억세스 가능한 데이터들이다.
예를 들면 주소록, 메일, 문서들 같은거...
이런 건 보잘것 없는 게임에서조차도 이미 권한을 요구하고 있고 많은 사람들은 이를 허용하고 있다.


아무튼,
이런 제한을 회피하기 위해 SuperSU의 루트 모드를 껐다 켰다 하면서 어플을 사용하는데,
이것도 참 귀찮은 일이다.
클릭 몇번 더 하는 것조차 귀찮다.
단 한번의 터치로 루트 모드를 감췄다가 어플 실행하고 다시 루트 모드로 원복하고 싶다.


역시나 이런 생각을 가진 유저들은 이미 존재했고,
Tasker 라는 어플을 이미 잘 사용하고 있다는 정보를 얻었다. 
특정 이벤트시에 트리거를 발생시키는 어플인데 그 응용범위가 상당히 광범위한듯 하다.
이런 어플이 있는지도 몰랐다니...


하지만, 막강한 기능에도 썩 내키지 않았다.
유료 어플인지라 이거 하나 때문에 구매하긴 좀 그렇고....
프로세스가 상주하는 것도 개인적으로 별로 좋아하지 않는다. (배터리 소모, 성능 저하, 그냥 싫음)
거기다 또한가지.... 이것만으로 루트 모드를 껐다 켰다하는 건 불가능 하다.
애초에 SuperSU가 그런 부가 기능을 가지고 있지 않아서(오직 UI로만 On/Off 가능) SuperSU를 개조(?)한 어플을 사용해야 한단다.
SuperSU 개발 페이지를나 도움말을 봐도 역시나 커맨드로 입력 가능한 옵션이나 파라메터 같은 건 없었다.
사실 가장 내키지 않았던 건 관련 내용이 검색 결과 네이버 카페에 있어서 로그인해서 가입 보기가 귀찮았기 때문이다.


결국 shell script를 이용해서 직접 루트 모드를 감추고 해당 어플을 실행한 후 다시 루트 모드로 원복하는 매우매우 간단한 스크립트를 작성하기로 했다.
이렇게 만든 스크립트는 홈 화면에 ShortCut을 만들지 못한다는 문제가 있다.
이런걸 해주는 어플도 몇 있지만 업데이트 상태라든가 안정성면에서 썩 좋아 보이질 않아서 포기...
그냥 script들이 있는 폴더를 Root Browser 에서 제공하는 Folder ShortCut 위젯으로 홈화면에 넣는 방식과
Wigetsoid를 쓰는 방식 두가지로 사용하기로 했다.
Wigetsoid는 Notification bar나 웨젯에 커맨드 입력이 가능 하다. (현재로선 이 보다 더 깔끔한 방법은 없는 듯)








구체적인 내용은 아래와 같다.
이런 류의 고민을 하는 분들은 참고하시길 바라며,
정확한 정보는 BusyBoxAndroid Debug Bridge를 살펴 보길 바란다.



루트 모드를 감추기 위해 가장 간단무식한 방법인 su 파일의 이름을 변경하는 방식으로 했다.
이를 위해선 시스템 폴더를 쓰기 가능 모드로 바꾸어야 하는데 따로 스크립트를 만들었다.
따로 만들면....
리마운트 하기 전엔 자연스럽게 동작이 안되니까...
모르는 사람이 만져도 어플 실행이 안되는 부가 효과(?)가 있다.
Wigetsoid를 쓴다면 위젯이나 Notification bar에 커맨드를 넣어도 될거다... 아마도...

mount -o rw,remount 디바이스 /system


디바이스를 확인하기위해 터미널에서 mount 명령을 넣어본다.
(터미널 애뮬레이터 어플를 설치하거나 PC 에 연결해서 adb shell을 쓰자)
목록을 잘 들여다 보면 /system 폴더의 디바이스명을 찾을수 있다.



파일 이름 바꾸는건 mv 명령을 쓰면 되고
어플 실행은 Activity Manager 를 쓴다

mv /system/xbin/su /system/xbin/su1234567
am start -W -a android.intent.action.MAIN -n 패키지명/.클래스명
mv /system/xbin/su1234567 /system/xbin/su


Root Browser로 /data/app 폴더를 들어가면 apk 파일들이 쭉~ 나오는데,
어플의 아이콘이 보이므로 해당 패키지명을 짐작할수 있다. (-숫자.apk 제외한 이름)
클래스명은 apk를 열어 보면 AndroidManifest.xml 파일이 있고 거기에 activity class로 명시되어 있다.

AndroidManifest.xml이 바이너리 형태로 인코딩 되어 있다면 그냥 텍스트로 열어선확인이 불가능한데
how-to-view-androidmanifest-xml-from-apk-file에 여러가지 방법이 있으니 맘에 드는 방법을 써서 알아내자.
(stackoverflow는 google 검색에 버금가는 참으로 고마운 사이트다)








위 스크립트를 응용하면 게임의 멀티 계정 운용이나 백업에 특정 어플을 쓸 필요가 없다.
해당 파일 찾아서 cp 명령 같은걸로 덮어씌우거나 데이터를 옮기는 스크립트를 짜면 되니까...


당연히 루팅 여부를 감지하는 방식에 따라 위의 방법으로 회피가 안될 수도 있다.
하지만... 기껏 해야 몇몇 파일의 존재 여부를 검색하는 정도일 것이므로
해당 검색 파일을 찾아 마찬가지로 바꾸면 문제 없을 것으로 예상한다.
그래도 안된다면 구글신에게 물어보면 그만이다. 
  

넥서스S 기준입니다.
이해를 위한 간단한 설명일 뿐, 정확하지는 않습니다.
[정식] 넥서스S 카페에 같은 내용을 올렸습니다.



1. 롬과 커널

MS사의  윈도우즈가 PC의 운영체제(OS)인것처럼 안드로이드는 스마트폰의 운영체제(OS)입니다.
이 안드로이드는 윈도우즈와 달리 설치시에 롬이란 놈을 사용하는데 Read Only Memory 와는 다른 의미로 쓰입니다.
일종의 설치 파일과 같은 개념으로 롬에는 OS의 핵심 부분인 커널(윈도우즈에도 있음)과 OS에 필요한 각종 파일들이 들어갑니다.
정리하면 커널이 OS의 핵심이고. 롬은 커널과 기타 덜 핵심적인 어플이나 파일들이 들어가 있는 겁니다.

2. 루팅

순정 상태의 안드로이드 폰은 관리자 권한 없는 PC와 비슷합니다.
시스템 내부적인 기능에 대해선 조작이 아예 불가능 합니다.
루팅은 이 관리자 권한 (root 권한)을 부여 해서 안드로이드 OS의 모든 기능을 쓸 수 있게 하는 겁니다.
대신 이 root 권한을 요구 할땐 항상 물어보는 확인 절차를 거칩니다.
이런 root 권한을 부여하기위한 슈퍼유저 어플을 설치하는 것이 루팅입니다. 
현재 진저브레드 2.3.4 기준으로 슈퍼 유저 어플은 일반적인 어플 설치 방법으로는 설치가 안됩니다. (부트로더-CWM 리커버리 에서 설치해야 합니다.)
슈퍼유저 어플에서 알림창이 떠서 물어 본다면 꼭 내용을 읽고 필요한 것만 OK를 누르셔야 합니다.
아무생각없이 OK 클릭을 해버리면 PC 사용시에 인터넷이나 메일에서 아무거나 클릭하면 안된다는 것 보다 더 심각한 상황을 초래할 수 있습니다.

3. 부트로더 언락(부트로더 따기)

전원을 켜면 가장 먼져 실행이 되는 부분이 부트로더 입니다. 또 여기에서 운연체제(OS)를 시작합니다.
OS가 시작되기 전인 부트로더에서 작업을 해야 OS를 바꿀 수가 있다는 얘기입니다.
통상 이곳에서의 작업을 수월하게 하기위해 Clock Work Mod 를 설치하는데,
이는 기존의 리커버리를 덮어 씌우는 것으로 그냥 덮어 씌울 수는 없습니다.
쓰지 못하도록 잠그어 놓았기 때문입니다.
부트로더 언락이라는 행위를 해야 부트로더의 데이터를 바꾸는 작업 즉 CWM 리커버리를 설치할 수 있습니다.
일반적인 커스텀 롬 설치의 시작은 부트로더를 따고 기존의 리커버리를 CWM 리커버리로 바꾸는 겁니다.
주의할점은 부트로더를 따면 모든 데이터가 싹 지워집니다. PC에 미리 백업해야 합니다. 반대로 잠글때는 지워지지 않습니다.

4. 커스텀 롬 올리기

커스톰 롬(혹은 커널)을 올린 다는 것은 운영체제를 설치한다는 말입니다.
부트로더를 따고 CWM 리커버리를 설치 해서 CWM 리커버리를 사용하여 롬을 설치 합니다.
커널을 바꾸고 싶다면 롬 설치후 다른 커널을 설치 합니다. (롬 안에 커널이 들어가 있으므로 커널을 나중에 설치해야 겠죠)
이 일련의 작업들은 루팅과는 상관 없는 이야기입니다.
단지 대부분의 커스텀 롬에 루팅이 포함 돠어 있고, 그런 커스텀 롬을 올리면 루팅이 되어버리니 커스톰롬=루팅 처럼 느껴질 뿐입니다.

5. 언루팅

루팅이 꺼려지는 가장 큰 이유는 은행 어플을 못쓰기 때문입니다.
은행 관련 어플에서 당신의 폰이 루팅 폰인지 아닌지 확인 하는 방법은 (현재까지 알려진 바로는...)
슈퍼유저 어플과 그와 관련된 파일이 존재하는지 확인하는 겁니다.
따라서 그 파일들을 지우고 슈퍼 유저 어플을 삭제 하면 은행 어플 사용이 가능합니다.
대신 이렇게 지워지면 언루팅이 되는 것이죠. 티타늄 백업 같은 걸 못씁니다.
부트로더가 따였는지의 여부는 어플에서는 알 방도가 없습니다. (현재까지 알려진 바로는...)


  
안드로이드에서 커스텀 롬을 설치하기 껄끄러운 가장 큰 이유는 은행 관련 어플들을 쓸수 없어서입니다.

루팅한 폰이 보안이 취약하다는 이유에서 막아논 것인데 (일부 그렇지 않은 은행도 있음)

개인적으로는 동의하기 힘든 부분입니다.

보안에 취약해지는 건 사용자의 잘못, 혹은 OS 자체의 결함을 디비 파서 발생하는 것이지 루팅을 했느냐 안했느냐에 달린 것이 아닙니다.

사용자의 잘못이나 OS의 취약점이라면 루팅을 했건 안했건 보안에 문제가 있는 건 똑같고 정도의 차이도 없습니다.

오히려 커스텀 롬 올리고 루팅해서 만질 정도면 기기나 OS에 대해 어느정도는 이해를 하고 있는 것이므로 사용자의 잘못으로 보안이 취약해질 가능성이 더 줄어든다고 봅니다. 

음 이건 다음 기회에 포스팅 하기로 하고..... (언젠가는....)



다시 주제로 돌아가서, 커스텀 롬을 쓰면서 은행 어플들 돌리려면 롬을 올리고 설정을 마친 후 언루팅을 하면 됩니다.

몇몇 루팅시에만 가능한 어플들을 못쓰겠지만... 이것들은 대부분 자주 쓸 필요가 없거나 새로운 롬을 갈아탈때 쓰는 어플이 대다수 입니다. 

결국 필요하면 또 루팅하면 된다는 뜻입니다.



넥서스 S 진저브레드 2.3.4 기준 언루팅 방법 ( 다른 기종은 안써봐서 모릅니다.... )

1. 루트 익스플로러로 아래 항목을 
존재한다면 삭제합니다.

data/data/com.noshufou.android.su
system/bin/su
system/sbin/su
system/xbin/su
system/app/superuser.apk

이중 하나라도 삭제하면 superuser가 실행이 안되니 모두 삭제하기전까진 루트 익스플로러를 종료하면 안됩니다. 그럴땐 다시 루팅해서 superuser 권한을 얻어 삭제를 해야 합니다.

2. 삭제를 마쳤으면 설정-어플리케이션-어플리케이션 관리에서 superuser를 삭제 합니다



다시 루팅하는 방법

1. superuser 설치파일을 다운로드 (xda-forum  ef 버전을 받습니다.)
(마켓에서 어플을 받아도 되는데 이부분이 현재는 잘 동작이 안됩니다.)

2. 리커버리 모드에서 install from zip 으로 설치



현재 스맛폰에 공인인증서를 안넣고 다녀서..... 완벽히 확인은 못했습니다만, 어플 실행은 잘됩니다.
 
  

NexusS 커널,롬 설치

Posted by NUL 스맛폰 : 2011. 4. 29. 19:17

넥서스-S 자체가 최신 OS에다가 최적화도 잘되어 있고 불필요한 앱들도 거의 없어서 이걸 굳이 할생각은 없었는데

Ad Hoc을 써 보려고 삽질 하다보니, 현 안드로이드 운영체제에서는 방법이 없고,

커스텀 롬을 설치하니까 되더라... 라는 정보를 보고 시도 했습니다.
(결과는 실패지만, 아직 테스트를 별로 못해 본터라 더 해보고 따로 포스팅할 생각입니다. 물론 바빠서 못할 가능성도 크죠;)

롬 설치는 아래 블로그에 아주 자세하게 설명되어 있습니다.
커널은 다른 작업 필요 없이 롬 설치 후 리커버리 모드에서 zip으로로 설치하면 됩니다.

http://iamxeph.blog.me/10107065715

전 서둘러서 하다가 백업을 빼먹고 해서 그간 설치한 앱/음악이 몽땅 날라갔습니다...
중요한 것들은 거의 구글 동기화되는지라 타격은 없긴 한데, 다운로드하는 시간을 날린 셈입니다.

백업에 주의 !!!

롬 Nexus S - UD 3.3.0 
커널 Netarchy Nexus - 1.3.0.6-cfs-2.3.3 (CM7 Compatible) 
커널 Netarchy Nexus (30-Apr-2011) Stable: 1.3.0.2 Testing: 1.3.0.8 for 2.3.4

설치한지 아직 24시간도 안됐지만...
순정 넥서스-S보다 살짝 빠른 느낌이 듭니다. (거의 차이 없음)
몇몇 편리한 부분이 있고요 

편리한 부분
1. 음악 재생시 볼륨키로 이전/다음 조작 가능
2. 전원 OFF시 메뉴가 추가 됨 (사용자 지정 가능)
3. 홈페이지 7개 고정 (전 적은게 좋은데.....)
4. 빈 화면 더블 클릭시 하단에 홈페이지들이 출력
5. 상단 상태바에 컨트롤들 추가됨 (wifi, GPS, 볼륨 동기화 등등등)
6. 세부적인 설정등(너무 많아 설명하기 곤란...)

시간이 없어서.... 여기까지만 씁니다.




추가 (2011-05-04)

Lock Sceen 상태에서의 패턴 입력이나, 알람 발생시 불안정합니다.
이게 커널을 덮어 씌어서 그런건지 롬 자체의 불안정인지는 모르겠지만
결국 지웠습니다. 저 전력 세팅을 해보려고요.
결과는...... 전압을 낮추면 불안정해서..... 원복하고 그냥 사용 중입니다... ;


  
 «이전 1  다음»