이번 글은 좀 짧은것 같아서 전체 복사해 왔는데 그래도 기네요..
출처)
http://blog.naver.com/dowkim10/120120031591
---------------------------------------------------------------------
본인은 z4root를 통하여 루팅한것은 아니지만, 요즈음은 이 툴을 통하여 루팅을 많이 하는것 같다.
하지만, 사람들은 z4root이 어떤 메커니즘을 사용하여 루팅되는지에 대해서는 잘 모르는것 같다. (사실 이부분은 공개된 내용이 아니라서 인터넷을 뒤져도 잘 안나온다)
이클레어 시절 갤럭시s를 제외한 폰에서 exploit을 사용한 루팅툴이 Universal Android root 어플이었다.
exploit의 경우 hotplug 취약성( 일반 user 에서 super user 권한 스키립트 실행)을 사용한 루팅이었지만, 커널이 업데이트되면서 점차 루팅이 불가능 하게 되었다.
현재 프로요에서 많이 사용하는 z4root 는 rageagainstthecage-arm5.bin 을 이용한 것인데, adb의 취약성 및 RLIMIT_NPROC의 문제점을 이용한 것이다.
(제작자인 Sebastian Krahmer가 이전 버전의 exploit도 만든것 같음)
파일 다운로드
http://www.joeyconway.com/epic/root/rageagainstthecage-arm5.bin
- adb push rageagainstthecage-arm5.bin /sdcard/
- adb shell
$ mkdir /skttmp/tmp
$ cd /skttmp/tmp
$ cat /sdcard/rageagainstthecage-arm5.bin > rageagainstthecage-arm5.bin
$ chmod 755 rageagainstthecage-arm5.bin
$ ./rageagainstthecage-arm5.bin
adb가 끊길때까지 기다린다.
- adb kill-server
- adb devices (to verify the connection)
- adb shell
이때 root인 #이 뜬다.
rageagainstthecage-arm5.bin 를 실행시키면 무제한적으로 프로세스를 생성(fork)시키면서 결구 RLIMIT_NPROC까지 만나게 되면서 더이상 프로세서가 생성이 안된다.
이때, adb가 root로 재실행되면서 shell 접속시 root의 권한을 얻게된다. (원래는 shell권한을 얻어야 되나, max proc의 갯수로 인해 setuid가 fail이 되기 때문이다.)
특징
- 특별히 시스템의 위해적 요소는 없는것으로 보이며, 영구루팅이 아니라면 리부팅시 시스템의 어떠한 변화도 없다.
- temporary(임시) rooting의 경우 아주 많은 프로세서가 생겨져 있으므로 리소스의 낭비와 폰이 느려질수 있다. (리부팅하면 되니 특별히 상관은 없다)
- permanat(영구) rooting의 겨우 su, superuser.apk가 /system에 설치된다.
- ./rageagainstthecage-arm5.bin가 항상 성공하는 것은 아닌것 같다. (이런경우는 다시 시도하면 될듯)
- adb의 취약성을 이용하는 것이므로 설정에서 USB debbugging이 체크되어 있어야 한다.
- 이것도 exploit과 마찬가지로 안드로이드의 취약성을 이용한 것이므로, 곧 막힐것이다. (이전버전은 커널이 수정되었고, 이번 버전은 adb가 수정될 것으로 보인다.)
저도 그냥 가져다만 써서 원리까지는 자세히 몰랐네요
이런글은 노하우로 고고싱 ㅎㅎ
p.s 자유게시판에서 묻히는게 안타까워서 노하우 게시판으로 옮겨두었는데, 기분 나쁘시면 쪽지주세요 다시 옮겨드릴게요 ^^;;