사람들은 안드로이드를 adb라는 디버그를 이용해서 접근하는 것 같다. 난 솔직히 안드로이드 SDK를 깔고 싶은 생각이 없어서 무조건 안드로이드 자체에서 모든 것이 해결될 수 있도록 지향하고 있는데, 그것을 가능하게 해주는 것이 바로 Android 자체에 telnet 데몬을 올리는 일이다. Busybox를 깔면 아주 쉽게 telnet 데몬이 올라간다. 다만, telnetd의 실행시에 기본으로 깔린 sh는 칼라도 보여주지 않고 심심하기 그지 없다. 따라서, 보다 좋은 환경구축을 위해서 loging shell을 지정해줄 필요가 있다. Ubuntu에서 man page를 보면 telnet의 -l 옵션을 아래와 같이 정의하고 있다. 당근, 안드로이드에는 default가 없으니 설정해 주는 것지 맞지 않을까?

-L loginprg  This option may be used to specify a different login program.  By default, /usr/lib/telnetlogin is used.




 1. su로 root 권한 획득
 2. busybox 안에 telnetd 실행 : "telnetd -l  /system/xbin/bash"

 telnetd 와 bash와 같은 shell은 어디에 있는지 알아서 설정을 하자. 내 경우는 터미널 에뮬레이터로 실행을 하여 루트쉘에서 위의 명령어를 실행하여 telnetd를 돌린후 일반 pc에서 telnet으로 안드로이드 장비에 접속하여 하고싶은 짓을 하면서 논다. ^^

 

Connecting to 192.168.10.100:23...

Connection established.

Escape character is '^@]'.


 

/ # whoami

whoami: unknown uid 0
/ # echo $PATH 

/system/xbin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin


 보면 바로 root로 접근하고 있음을 알수 있다. 인증 절차 같은 번거로운(?) 짓은 없다. 아마, busybox의 telnetd는 그런 것을 다 생략하게 되어 있는 듯. 

  그리고 나서 잘 봐야 하는 것이 바로 PATH 부분이다. 안드로이드에 기본적으로 깔려 있는 애들이 toolbox인 것 같은데, 얘네들은 명령어가 아주 제한적이다. 그래서 busybox를 깔았는데.. 덮어서 깔았다면 별 문제가 없겠지만, 나처럼 분리해서 깔았다면 busybox의 프로그램들이 toolbox의 프로그램보다 먼저 실행될 수 있도록 설정을 해주는 것이 중요하다. path를 toolbox의 /system/bin 보다 busybox의 /system/xbin이 빨리오게 설정한다.  내경우엔 에뮬레이터에서 이미 이렇게 설정이 되어 있다. telnetd를 띄울 상태의 path가 자동으로 도는 듯.. bash 쉘로 로그인 했다면 간단하게 아래의 명령어로 path 설정에 대해서 확인 해 볼 수 있다.

/ # echo $PATH
/system/xbin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin

 
 이렇게 붙이고 나서 system 폴더에 접근을 해서 수정하거나 지울려고 덤비면 readonly 상태임을 강조한다. 루트익스플로어에서는 read/write로 쉽게 설정을 바꿔줄 수 있지만, 수동으로 하고 있으니 이 부분은 아래 명령어로 수정해야 한다. mount 명령을 실행하면 현재 마운트 된 파티션들이 쏟아져 나오는 데 그중 system만 read/write로 remount를 시켜주면 된다. 

/system/app # rm DualClock.apk

rm: remove 'DualClock.apk'? y

rm: can't remove 'DualClock.apk': Read-only file system

/system/app # mount | grep system

/dev/block/stl9 on /system type rfs (ro,relatime,vfat,log_off,check=no,gid/uid/rwx,iocharset=utf8)


/system/app # mount -w -o remount /dev/block/stl9 /system


/system/app # mount | grep system

/dev/block/stl9 on /system type rfs (rw,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8)


Posted by 4D 트랙백 0 : 댓글 0

댓글을 달아 주세요


Connected by DNS server, DNS service