ipod touch firmware 2.0.1 jail break

프리즌브레이크도 아니면서 왠 탈옥이냐고. ipod touch를 애플의 독점 소프트웨어 감옥에서 탈옥 시켜주기 때문에 jailbreak 라 한다.

요는 이렇다.

ipod touch, iphone은 BSD 커널에 기반한 Darwin 커널을 사용한다. 즉 내부는 유닉스다.
애플에서 배포한 펌웨어는 이 시스템 내부를 예쁜 UI로 싸고, 내부를 들여다 볼 수 없도록 막아놓았다. itunes 에서 저장해둔 복원용 펌웨어를 이용해, 내부를 들여다 볼 수 있게 수정한 펌웨어를 새로 빌드한다.
빌드한 펌웨어를 ipod touch 의 복구 모드를 이용해 기존 펌웨어를 덮어쓴다.
이제 내부가 열린 ipod touch를 가지고 재미나게 논다.

애플이 배포한 펌웨어를 해킹해 새로운 펌웨어를 생성해주는 툴은 해킹 천재들이 만든 winpwn (http://winpwn.com) 을 사용한다. 이 글을 쓰느라 다시 한번 홈페이지를 방문해 보니 엊그제까지만 해도 펌웨어 2.0.1 버전까지 지원 한다고 했는데, 어느새 2.0.2 버전까지 지원을 한다고 바뀌어 있다. winpwn 의 바이너리 버전이 같은걸 보니, 2.0.0, 2.0.1, 2.0.2 펌웨어 모두 크게 변경이 있는건 아닌가 보다. 이거 쓰고 나서 나도 펌웨어를 새로 빌드해 봐야 겠다.  펌웨어를 2.0.2로 업데이트 하고 나서 jail break를 하려고 보니 펌웨어 2.0.2를 지원하는 winpwn은 아직 릴리즈 되지 않았다. 곧 다운로드 가능할 것 같은데 기다리기 힘들면, 대신 quickpwn을 사용하자. http://blog.iphone-dev.org/post/46800837/my-little-pwnies-dressage

해킹된 펌웨어를 빌드해 주는 툴은 여러가지가 있는데,  나는 윈도우에서 사용 가능한 winpwn 을 사용했다. mac 용 툴은 찾아 보시길 바란다. vista 64bit 버전에서 winpwn 을 사용했으며, 32 bit 에서도 물론 잘 동작한다. 원래 32bit 용 어플리케이션이다.

winpwn 의 사용법은 그리 어렵지 않다. 실행해 보면 몇가지 메뉴가 있는데, 이 글에서 사용할 것은 두개밖에 없다. Browse .IPSW 를 눌러서 애플이 배포한 원본 펌웨어를 로드한다. 이건 파일 찾기로 2.0.1 을 하면 itunes 가 복원 모드에서 사용하기 위해 저장해둔 것이 나올것이다. 이걸 사용하면 된다. vista 64bit 버전에서는 c:사용자자기계정AppDataRoamingApple ComputeriTunesiPod Software Updates 디렉토리에 있다. AppData 디렉토리가 안보인다면 제어판의 폴더보기 옵션에서 시스템파일 보기 옵션을 켜면 보일것이다.

애플의 복원 펌웨어이미지 파일을 winpwn이 로드하면 IPSW Builder 메뉴가 활성화 된다. 눌러보면 몇개의 탭을 가진 새창이 하나 뜨는데 이중 첫번째 Applications 탭을 눌러 보자. Cydia, Installer 2.0, YouTube Activation fix 세개의 체크 박스가 있다. Cydia, Installer 2.0 등은 오픈소스, 해킹 소프트웨어들을 설치 할 수 있게 해주는 설치프로그램이다. 펌웨어 2.0.x 대의 AppStore 에 해당한다고 보면 된다. 이 프로그램을 이제 새로 만들 해킹된 펌웨어이미지 파일에 추가를 해주는 것이다. 잘 모른다면 Cydia 를 선택하고 하단의 Build .ipsw 버튼을 누르면 해킹된 펌웨어를 어디에 저장할지 물어보고 해당 디렉토리에 펌웨어를 빌드해 준다. 입맛에 따라 Installer 2.0도 설치하고, Custom Image 탭에서 ipod touch 부트, 복원모드 진입때의 그래픽 이미지를 변경할 수도 있다. Partion Resizer 탭에서 root 파티션의 사이즈를 변경할 수도 있다. ipod touch, iphone은 4G, 8G, 16G 버전에 관계없이 공통으로 300MB를 root 파티션으로 잡고 시스템 라이브러리 및 프로그램들을 여기에 설치하고, 나머지 용량을 data 파티션으로 사용한다고 한다. winpwn 을 사용하면 기본 500MB를 root 파티션으로 잡는다. 해킹된 펌웨어를 사용하여 오픈소스 소프트웨어를 이것저것 설치하다 보면 이 500MB가 부족할 수도 있는데 Partion Resizer 탭에서 이걸 더 늘려줄 수도 있다. 하지만 이건 기본 500MB로 그대로 두고 Cydia 인스톨러에서 BossTool을 설치해서 어플리케이션을 data 파티션에 설치하게 하는게 더 낫다.

이렇게 펌웨어를 빌드한후 이걸 ipod touch에 다시 넣는 과정이 필요하다. winpwn 도움말에는 iPwner 를 누르면 알아서 해준다고 하는데, vista 64bit 버전에서는 이게 잘 안되는 것 같다. 그래서 수동으로 DFU 모드로 들어가서 복구를 해 줬다.

DFU 모드로 들어가기 위해서는 대기 버튼을 계속 눌러서 전원을 끈후, 다시 대기 버튼과 홈 버튼을 계속 눌러서 부팅을 시킨다. 이때 전원이 들어오면 대기 버튼은 떼고 홈 버튼을 10초 정도 계속 누르고 있는다. DFU 모드로 들어가면서 DFU 모드용 usb 드라이버가 OS에 추가로 설치되고 itunes 에서 복원 버튼이 활성화 된다. shift 키를 누른채로 복원 버튼을 클릭하면 펌웨어이미지 파일을 선택할 수 있는데 이때 winpwn 에서 빌드한 펌웨어이미지 파일을 선택해서 복원을 진행시킨다. 전원이 들어왔다고 10초 정도 더 기다리지 않고 바로 홈 버튼을 떼면 일반 복원 모드로 진입을 하게 된다. 이 일반 복원 모드에서 해킹된 펌웨어이미지 파일로 복원을 하려고 하면 알수없는 에러(6) 을 내고 더이상 진행이 되지 않는다. 즉 pda 펌웨어 업데이트 할때 가끔 겪는 벽돌이 된다. ipod touch 가 벽돌이 되는, 사용할 수 없는 상태가 된다는 말이다. 이렇게 되면 애플에서 배포한 복원용 펌웨어이미지 파일을 이용해서 원래대로 돌아 갈 수 있다.

말이 길었는데 간단히 정리하자면,

os의 파일 찾기를 이용해서 itunes 가 저장해둔 복원용 펌웨어이미지 파일을 찾는다.
winpwn에서 Browse .IPSW를 눌러 이 파일을 로드한다
IPSW Builder를 눌러서 Applications 탭에서 Cydia 를 체크하고 Build .ipsw 를 눌러서 해킹된 펌웨어를 얻는다.
DFU 모드로 들어가서 새로 빌드한 해킹된 펌웨어로 복구한다.

winpwn의 readme 를 읽어보면 애플은 2.0.x 대의 펌웨어를 내놓으면서  펌웨어 1.x 대와 비교해 펌웨어 2.0.x의 내부를 완전히 다시 썼다고 한다. 그래서 1.x 대의 어플리케이션이 2.0.x 대에서는 동작하지 않는다. 그러면서 2.0.x 대의 펌웨어에 AppStore를 끼워넣었다. 들어가보면 그닥 유용하지 않은 무료 소프트웨어와 유용해 보이는 유료소프트트웨어를 팔고 있다. iTunes의 어플리케이션 판인 것이다. 1.x 대의 해킹된 펌웨어용 무료 소프트웨어 개발사들이 2.0.x 대의 유료 AppStore 로 들어갔다고 한다. 그래서 현재 Cydia 나 Installer 2.0 에는 설치할 수 있는 프로그램이 아직 많지 않다.
 
하지만 이러한 인스톨러는 여전히 유용하다. 바로 상당수의 오픈소스 소프트웨어들이 건재한 것이다. 특히 위에서 Cydia를 추천한 것은 바로 apt 를 이용한 데비안식 패키지 배포를 하기 때문이다. 우분투나 데비안에서 apt를 이용해 패키지를 관리하는 사람이라면 아주 반가울 것이다. apt-get, apt-cache 등의 명령이 그대로 포팅되어 있다. source list 를 추가하면 개인들이 만든 새로운 프로그램, 테마들도 추가 할 수 있다. open sshd, vsftpd, lighttpd 등의 패키지가 들어 있어서 무선인터넷이 가능한 환경이면 ipod touch 내부로 ssh, sftp, http 접속이 가능하다. 더구나 gcc, java, python, ruby 가 포팅되어 있어서 ipod touch 용 어플리케이션을 개발 할 수 있는 환경을 만들 수 있다. 들고다니는 BSD 박스가 되는 것이다.

사용자 삽입 이미지

이 커널이 OS-X 에 사용된 커널과 같은 버전인지는 나에게 mac 기계가 없어서 모르겠다. vmware 로 OS-X 를 설치해 보려고 했으나 실패했다. 이 터미널 에뮬레이터는 Cydia 에 들어가서 Terminal 패키지를 설치한 건데 ctrl 키나 esc 같은 특수키를 입력할 수가 없다. 그래서 ipod touch 에서 내가 좋아하는 vim을 사용하기 아주 불편하고, 터미널에서 ping 테스트시 ctrl-c 등의 강제 종료가 안된다. 음… 이건 터미널 에뮬레이터의 문제라기 보다는 ipod touch 에 내장된 키보드 문제군. 마우스 제스춰 비슷한 걸로 ctrl, esc 등의 입력이 가능하다. 여기 http://iam312.pe.kr/270 를 참고한다. 그리고 이 터미널 에뮬레이터에서는 한글 입출력이 안된다.  이런 문제점들은 다른 pc에서 ipod touch 로 ssh 접속해서 들어가서 작업하면 된다.

사용자 삽입 이미지

berkeleydb 패키지가 업데이트 되었군. 소스 가져다 삽질 할 필요없이 arm 기계의 빌드된 바이너리를 바로 사용할 수 있다. 데비안, 우분투여 영원하라~ 아래는 같은 업데이트 사항을 Cydia 인스톨러에서 확인한 것이다.
사용자 삽입 이미지

Cydia 인스톨러를 실행할때마다 업데이트 사항을 체크해서 보여주고 바로 업데이트까지 해준다. 우분투의 synaptic 보다는 불편하지만 좋다. ^^

사용자 삽입 이미지

해킹된 펌웨어를 이용할 때의 또 다른 이점은 다양한 테마엔진을 사용할 수 있는 것이다. 애플이 제공하는 테마엔진은 Spring Board 인데, 이를 확장시킨 오픈 소스 진영의 Summer Board 가 있고, 여기에 맞춰 공개된 다양한 테마들이 있다. 위는 Summer Board 에 기능을 더 추가한 Winter Board 라는 테마 엔진의 Buuf2 라는 테마를 적용한 것이다. 개발자가 아니더라도 애플의 감옥에서 ipod touch 를 탈옥 시킬 이유가 여기 있다.

1.x 대의 해킹된 펌웨어를 이용해 개발자를 끌어들여서 2.x 대의 AppStore 를 이용해 유료 어플리케이션 시장을 만든 애플의 능력은 음원을 이용한 시장을 연 iTunes의 충격보다 더하다. 이런 돈을 버는 장을 만드는 능력을 어찌하면 배을 수 있을 까나.

ipod touch firmware 2.0.1 jail break”에 대한 7개의 생각

  1. 안녕하세요
    저는 펌웨어 해킹을 할수 있는 사람을 찾고 있습니다.
    일종의 아르바이트라고도 할 수 있고, 아니면 지속적인 일이 될 수도 있습니다.

    저희들이 하려고 하는 일은
    1. 기계장치에 있는 플래쉬메모리에서 펌웨어를 읽어 BIN 파일을 만들고
    2. 이파일을 디어셈블과 디컴파일을 하여 펌웨어의 일부분을 완벽하게 해석하는 것입니다.(예를 들어 C와 같은 언어로)

    앞단계에서의 1.은 저희들이 할 수 있는데 2. 단계는 고수들의 도움을 바랍니다.
    일의 성공 사례는 충분히 하겠습니다.

  2. 안녕하세요
    앞 글에서 연락처가 빠졌으므로 다시 올립니다.
    저희 회사에서는 펌웨어를 해킹할 수 있는 사람을 찾고 있습니다.
    작업의 형태는 일종의 프리랜서이지만 할 작업은 지속적으로 있기 떄문에 매우 안정적일 것입니다.

    저희회사에서 할려는 일들은
    1. 기계장치에 있는 펌웨어를 읽어 이미지파일(BIN 또는 HEX 파일)을 만들고
    2. 얻어진 파일을 디어셈블러, 디컴파일을 통하여 펌웨어의 특정부분(찾아야 함)을 완벽하게 해석하고
    이를 C와 같은 언어로 논리적으로 해석하는 것입니다.

    1.단계는 저희회사에서 수행할 수 있는데 2.단계는 고수님들의 도움을 바랍니다.
    일의 보수는 충분하니 고수님들의 관심을 부탁드립니다.

    011-408-6862
    myunglae@nate.com

  3. 안녕하세요. 원래 일기장으로 쓰던 홈페이지를 블로그로 전환한지라, 경어도 없고 막 쓰는지라 읽기 좀 불편하실 텐데… 흥미롭게 읽으셨다니 감사합니다.

    예전에 제가 이 글을 쓸 당시 사용한 기기는 아이팟 터치 1세대였구요, 지금은 마눌님이 사용중인지라 제 손에 없네요. 게다가 마눌님은 애플의 정식 펌웨어를 사용중인 관계로 현재의 cydia 인스톨러에서 제공해주는 패키지들이 어느정도 선인지 제가 바로 확인을 할 수가 없어서 확실하지는 않습니다만…. 저 글을 썼을때의 상황을 기준으로 말씀 드리겠습니다.

    데비안식 패키지 관리 툴인 apt 나 dpkg 를 아시는것 같아서 간단하게 설명 드리겠습니다.
    우선은 무선랜을 사용할 수 있는 환경이어야 합니다. 아시다시피 apt 는 네트웍으로 패키지를 받아오기 때문에 반드시 아이팟이 인터넷이 가능한 상태여야 합니다. 그리고 펌웨어를 해킹 하실 때 cydia 인스톨러도 같이 넣어 주셔야 합니다. cydia 인스톨러에 apt가 들어 있습니다.

    python 인터프리터나 gcc를 비롯한 컴파일러들은 기본적으로 설치가 되어 있지 않지만 vi 는 설치 되어 있던것 같습니다. vim 이 아니라 nvi 가 깔려 있던것 같았는데… 안 깔려 있다면 apt-get install vim 하시면 아이팟 터치용으로 빌드된 vim 바이너리 패키지를 가져다 설치 해 줄겁니다. 아, 이때 설치되는 것은 gui 버전이 아닌 터미널 용입니다. 터미널 열고 vi 혹은 vim 하셔야 해요. gui 버전은 그 당시에 없었습니다만, 아마 지금도 없지 않을까 싶습니다.

    혹 apt를 잘 모르시거나 터미널 창에서 타이핑 하기가 불편하시면 cydia 인스톨러를 실행시켜서 하셔도 됩니다. 상당한 분량의 오픈소스 패키지들이 카테고리별로 잘 구분되어 터치 몇번만 하면 원하는 패키지를 설치 하실 수 있습니다. 하지만 cydia 도 우분투의 synaptic 처럼 apt의 gui 프런트엔드이므로 백엔드에서는 apt가 동작합니다. 따라서 이게 제대로 동작하려면 앞서 말씀드린 대로 무선 인터넷이 가능한 상태여야 하구요.

    한가지 덧붙이자면, python 패키지를 설치하게 되면 샘플 코드로 창을 하나 띄우는 예제 스크립트가 들어 있습니다. 직접 실행 시켜 보시면 아시겠지만… 무척 느립니다. ^^;;; 제약된 환경에서 동작하다 보니 아무래도 피씨 쓰듯이는 힘들더라구요.

  4. 우선 너무 늦어서 죄송합니다.
    저는 단순히 해킹툴을 이용하는 사용자일 뿐이구요, 펌웨어를 리버스엔지니어링 할 능력은 없습니다. ^^

    개인 정보가 노출 되어 있어서 댓글을 삭제 할까 하다가 능력되시는 분이 혹 연락처를 보지 않을까 싶어서 그냥 둡니다.
    하시려는 사업 번창 하시길 바랍니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중