티스토리 뷰

아직 정리가 덜돼고 확인된 내용이 적어 문제가 발생할수 있음에도 불구하고 많은 분들이 비공개글을 언제 공개할예정인지 문의를 주셔서 간략하게 나마 공개해놓습니다.

# 테스트환경
xcode v3.1.3 , iPod Touch 2nd with Jailbreak + mobile installation patch , iPhone OS 3.0

# iPhone OS 2.2.1의 경우 코드사인 부분을 무력화시키는 옵션을 적용함으로 터치에 어플리케이션을 올릴수 있었습니다. 이것을 하지 않으면 아예 디바이스를 타겟으로 빌드가 되지 않았습니다. 빌드가 되고 터치에 어플리케이션이 올라간후 어플리케이션이 실행될때 코드사인이 되지 않은 어플리케이션이므로 mobile installation의 패치도 필요했습니다. iPhone OS 3.0과 xcode v3.1.3에서는 예전 방법이 모두 막혀 사용이 불가했습니다. 하지만 새로운 방법이 이미 나와있었습니다.

# mobile installation patch : 인증되지 않은 어플리케이션들을 터치나 아이폰위에서 실행되게 해주는 패치입니다. 쉽게 말하면 터치를 해킹하는것은 터치 내부로 접속할수 있는 통로를 만드는 행위이고, mobile installation patch를 설치하는것은 인증되지 않은 즉 인터넷에서 다운 받는 불법 크랙된 터치 어플을 실행할수 있게 패치해주는 것입니다. 이 패치는 실제로 이런용도로 사용되기 때문에 문제가 될 소지가 매우 크며 이는 개인의 선택과 책임이므로 이와 관련한 질문은 삼가하여 주시기 바랍니다.

# 이글의 목적은 매년 $100을 지불하여 애플에 정식 개발자 등록이 힘든 학생들이나 아직 공부삼아 어플을 만드는 대상을 위해 제작한 글이며, 이렇게 흥미를 쌓은후 실력이 어느정도 되면 정식으로 개발자등록을 하길 바라는 마음에서 작성된 글입니다. 글을 퍼가 다른곳에 게시하지 마시길 바랍니다. 저작권과 관련된 문제 발생시 이와 관련된 글은 모두 삭제하도록 하겠습니다.

# 시작

1. 자신의 iPod Touch 또는 iPhone을 jail breaking 합니다. 이방법은 인터넷에서 쉽게 찾을수 있으니 이에 대한 부분은 질문을 삼가해주세요.. ^^; jail breaking 후 인증되지 않은 어플리케이션이 터치상에서 돌아갈수록 있도록 mobile installation patch를 해야 합니다. OS 3.0에서는 Installd Patch 라는 이름으로 바뀌었습니다. Cydia에서 http://iphone.org.hk/apt/ 를 source 탭에서 추가해줍니다. Installd Patch라는 패키지를 찾아 설치합니다.

2. 개인 서명 파일을 생성합니다. 이내용은 예전 2.2.1 버전용 글에도 실려있으므로 생략합니다. 이름은 아무거나 해도 상관 없습니다. 저는 iPhone Developer 라는 이름으로 개인서명파일을 생성했습니다.

3. xcode에서 자신의 프로젝트를 연후 Project -> Edit Project Settings 에서 Code Signing Identity 란에 위에서 생성한 임의로 서명파일의 이름 iPhone Developer 를 적어줍니다. 이 작업은 다른 프로젝트를 생성할 경우에도 다시 해줘야 합니다.

4. 터미널을 엽니다.

5. 임의의 경로에 script 라는 패치 파일을 하나 생성합니다.
프롬프트에서 vi script 라고 치면 script라는 파일 생성이 시작됩니다.
아래의 코드를 붙여넣기 합니다. cmd + v

#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "\x8f\x2a\x00\x00" >> working
dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support

위파일을 저장하기 위해 ESC를 누른후 :wq 를 눌러 저장하고 vi를 종료합니다.
위코드는 xcode의 빌드 플러그인 파일에 바이너리 모드로 크랙을 하는것으로서 빌드시 인증서를 체크하는 부분을 무력화시키게 됩니다.

6. 위에서 생성한 파일에 실행권한을 부여 합니다.
chmod 777 script

7. 이 크랙 파일을 실행합니다.
./script

8. 위 파일을 실행하면 아래와 같은 메세지가 보여집니다.

255+0 records in
255+0 records out
127500 bytes transferred in 0.035658 secs (3575647 bytes/sec)
191056+0 records in
191056+0 records out
191056 bytes transferred in 1.782819 secs (107165 bytes/sec)

패 치가 성공적으로 진행되었습니다. 여기까지만 진행하고 프로젝트에서 빌드 대상을 Device로 선택한후 빌드하면 터치에 어플리케이션 빌드후 터치로 어플리케이션이 탑재되고 실행도 됩니다. 만약 Debug모드로 디버깅시에 오류가 발생하거나 디버그 메세지들이 제대로 표시가 되지 않는 다면 아래 과정을 진행합니다.

9. mkdir /Developer/iphoneentitlements30

10. cd /Developer/iphoneentitlements30

11. curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt

12. mv gen_entitlements.txt gen_entitlements.py

13. chmod 777 gen_entitlements.py

14. xcode의 Project -> New Build Phase -> New Run Script Build Phase 선택후 아래 코드를 입력합니다.

export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
 /Developer/iphoneentitlements30/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
 codesign -f -s "iPhone developer" --resource-rules "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/ResourceRules.plist" \
   --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"  "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi

이 과정도 매프로젝트 생성시마다 해줘야 합니다.

# 예전처럼 프로젝트 파일의 plist.info 파일에 수정하는 부분은 필요없습니다.
# 많은 분들이 비공개글을 열어달라고 하셔서 대략적인 내용만 적어 공개글로 전환했습니다.
# 아이폰 프로그래밍을 하기위해 xcode와 objective-c 그리고 터미널과 Mac OSX환경에 익숙해진 분이라면 아주 쉽게 따라할수 있을겁니다. 나중에 시간이 날때 세세한 스크린샷을 첨부하도록 하겠습니다.
# script파일과 gen_entitlements.txt 파일은 아래 첨부파일로 첨부하겠습니다.



출처: http://www.hyemi.org/21256#comment_21295


'my Programing > iPhone' 카테고리의 다른 글

iPhone SDK 구버젼 받기 ...  (0) 2010.07.03
peakPowerForChannel  (0) 2010.01.28
drawSolidPoly  (0) 2010.01.27
UIAcceleration  (0) 2010.01.20
아이폰 개발자 등록없이 앱 올리기 ...펌  (0) 2010.01.18
댓글