아직 정리가 덜돼고 확인된 내용이 적어 문제가 발생할수 있음에도 불구하고 많은 분들이 비공개글을 언제 공개할예정인지 문의를 주셔서 간략하게 나마 공개해놓습니다.
# 테스트환경
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 파일은 아래 첨부파일로 첨부하겠습니다.
그제 어제 오늘 이 문제로 씨름씨름 하고 있는데 SDK Version이 예전 버전이라 위에 적은 부분에서 막혔는데,
오늘 다시 와서 보니. 마치 제 마음을 아는것철머 SDK 최신 버전으로 올려주셨네요. 감사합니다. 학생이라 배우는 중인데 큰 도움이 될거 같습니다.
근데.. 따라 하는 중에 Installd Patch를 install 하는데, [ the requested modifications cannot be applied due to required dependencies or conflicts that cannot be automatically found or fixed ] 라는 NOTE 가 나오면서 설치가 되지 않네요.. 무엇인 문제인지 지금 찾고 있는데 잘 모르겠습니다. 해킹이 잘 안 된건지? 아니면 버전에 문제가 있는건지.....ㅠ.ㅠ
위에 전찬섭님 올려주신 글에서 [ Cydia에서 http://iphone.org.hk/apt/ 를 source 탭에서 추가해줍니다 ] 이 부분이 막히신 분이 있으실거 같아 글 올립니다. 알고보면 너무 쉬운데, 모르면 또 해메게 되는 부분이라.. 저 같은 초보는 해맸거든요.
무선환경이 조성된 곳에서 해킹한 아이팟의 Cydia에 접속해서 아이팟 하단의 Tab bar에서 4번째에 있는 "manage"에 들어가고, "SOURCE"에 들어 갑니다. 그리고 우측 상단에 "Edit" 터치 -> 왼쪽 상단에 "Add"터치 - > http://iphone.org.hk/apt/를 적고 들어가서 install하면 됩니다. ^^
똑같이 했는데 계속 빌드 에러 나서 하루 정도 소비했는데 혹시 저 같은 분이 있을까봐 글남깁니다. 맥 재부팅 한번 하니까 되네요~_~;;;
그리고 좋은 글 감사합니다.ㅋ
ㅠ.ㅠ 스크립트 돌리고 재부팅 해봤는데.... 프로젝트를 띄워서 GO~ 하면 Xcode가 그냥 종료 되 버립니다.
낭패네요... 벌써 몇번 SDK를 재설치 해봤는 스크립트만 돌리면 그래요. SDK 3.1입니다.
xcode가 강제 종료된다는건 아마도 스크립트에 정확한 명령어를 입력하지 않아 패치가 제대로 되지 않은것 같습니다. 그래서 xcode가 그냥 꺼져버리는것 같습니다. 그리고 정식 맥이 아니고 해킨인경우에도 이런 문제가 발생할 가능성이 있습니다. 어떤 에러 메세지가 뜬다면 어떻게 대처할지 생각해볼수 있지만 강제 종료 되버린다면 문제점을 찾기가 쉽지 않을것 같네요.. 차근 차근 다시 해보셔야 할것 같은데...
Xcode를 다시 설치하면 정상이네요... 정식 맥입니다.
엡 스토어에 올릴께 아니라 업무하면서 개인적으로 쓸 프로그램을 만들어 보려고 하는건데... 이런 난관이 있었네요.
일반적으로 크랙된 ipa를 넣는 것처럼 하면 될꺼다라는 막연한 생각에 시작했는데 그게 아니였나보네요.
그냥 맥에서 ipa를 만들어서 해킹팟에 싱크로 넣을 수는 없나요?
해킹 터치(OS 3.1.2) + Xcode 3.1.4 Codesign by pass [정리중] <== 이 글은 공개 안하시나요?
iPhone이랑 Xcode 버전을 downgrade해야 하나...고민 중입니다.
너무 너무 감사해요. very thank you. 非常感谢。 болишое спасибо. どうもありがとう。
어제 애쓰다가 잘 안됐어요.(영문 참고). 오늘 아침 겨우 성공. 넘 기뻐. 흑흑....
무심결에 어제 요청한 페이지 올라보니 이 글 공개 되였더군요. 좀 아쉽지만. 늦은 감은 .. 어제 공개 되였더라면...
하지만 정말 감사합니다. 무엇보다도 관심 돌려줘서요. 또 영문 리해 잘 안되고 그대로 따라한거 이글 보면서 좀 더 자세히 알게 되였습니다.
무엇보다 코멘트가 마음 드셔요. 좀 간단하긴 하지만 간결하니 리해하기 더 쉽구요.
앞으로 많은 도움 부탁드립니다. 기대하면서... 아이폰 개발 왕초보이거든요.... ~~~~~~~~~~~~~~~~~