ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iPhone] 해킹한 아이폰에 개발하기
    case Computer : 2011. 8. 7. 22:29
    해킹한 아이폰에 개발하기 위해서 일단 당연히 Xcode가 있어야 된다.
    XCode는 현재까지 나온 4.1버전 까지 가능하다.
    또한  개발한 어플을 올릴 해킹한 아이폰이 필요하다.

    원래 아이폰을 개발하기 위해서는 프로비저닝이라는 인증서가 필요하다.
    이걸 사는 값이 1년에 10만원인거다.

    그래서 먼저 가짜 인증서를 생성해야된다.
    생성방법은 인터넷이 많다.

    인증서 생성
    http://web2db.tistory.com/tag/%EC%95%84%EC%9D%B4%ED%8F%B0%EA%B0%9C%EB%B0%9C


    그리고 나서 XCode 설정을 한다.
    영어가 좀 되시는 분은 아래 사이트에 들어가셔서 보면 된다.

    XCode 설정
    http://www.alexwhittemore.com/?p=398 

    아래는 영어가 조금 힘겨운 분들은 위해 적어놓습니다.

    기본적으로 현재 사용하는 Mac에 Xcode가 설치되어 있어야합니다.
    그리고 해킹한 아이폰에는 AppSync 가 설치 되어 있어야 합니다.
    (Cydia에서 패키지에 AppSync가 설치되있지 않다면 설치하세요)


    1. 맥에서 응용프로그램 > 유틸리티 > 터미널 을 접속합니다.
       터미널에서 다음과 같이 입력합니다.
       

      cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk
      sudo cp SDKSettings.plist SDKSettings.plist.orig    ## 혹시 모르기때문에 원본을 백업해둡니다.
      sudo vi SDKSettings.plist   ## 해당 파일을 수정을 위해 연다.


    2. 해당 파일에서  아래에 같은 부분을 찾는다.



        

    1. 맥에서 응용프로그램 > 유틸리티 > 터미널 을 접속합니다.
       터미널에서 다음과 같이 입력합니다
      1. cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk
      2. sudo cp SDKSettings.plist SDKSettings.plist.orig
      3. sudo vi SDKSettings.plist
      그리고 다음과 같은 부분을 찾는다. 
      1. <key>CODE_SIGNING_REQUIRED</key>
      2. <string>YES</string>

      그리고 YES부분을 NO로 수정한다.
       같은 파일에서 다시 아래와 같은 부분을 찾은후, YES부분을 No로 수정한다.

      1. <key>ENTITLEMENTS_REQUIRED</key>
      2. <string>YES</string>

      수정을 다했으면 저장하고 나온다.
      vi 저장 방법 : Esc 누르고 wq! 입력후 엔터 혹은 shift + zz 입력


    2. 저장하고 나기 터미널로 돌아왔으면 아래와 같이 info.plist 파일을 연다.
      1. cd /Developer/Platforms/iPhoneOS.platform/
      2. sudo cp Info.plist Info.plist.orig
      3. sudo vi Info.plist

      info.plist에서 아래부분을 찾아 수정한다.
      아래와 같은 부분이 2곳이 존재하기 때문에 2곳 전부 수정한다.

      1. <key>CODE_SIGN_CONTEXT_CLASS</key>
      2. <string>XCiPhoneOSCodeSignContext</string>

      위에 <string> ...</string> 부분을 ...
      아래 내용으로 수정한다.
      수정후 저장하고 빠져나온다. 

      1. <string>XCCodeSignContext</string>
    3. 이제부터가 진짜 XCode 패치 부분이다.
      아래와 같이 터미널에 입력한다.
      1. cd ~/Desktop
      2. vi script

      아래와 같이 파일에 입력한다.
      vi 에 입력하기위해서는 i 를 누르면 된다.

      1. #!/bin/bash
      2. cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
      3. dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
      4. printf "\xc3\x26\x00\x00" >> working
      5. /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
      6. /bin/mv working iPhoneOS\ Build\ System\ Support
      7. chmod a+x iPhoneOS\ Build\ System\ Support

      저장후 나와서 해당 script 파일의 권한을 777로 부여하고 실행한다.

      1. chmod 777 script
      2. ./script

      실행하면 아래와 같이 보인다.

      1. $ ./script
      2. 223+1 records in
      3. 223+1 records out
      4. 111648 bytes transferred in 0.002678 secs (41692099 bytes/sec)

    4. xcode를 실행하고 프로젝트를 생성한다.
      프로젝트 클릭 > PROJECT > Build Settings > Code Signing  부분을 모두 Don't Code Sign 으로 변경한다.
      해당 작업은 프로젝트 생성시 마다 매번 해주어야 한다.


      Screen shot 2010-01-11 at 1.05.42 AM

      Should look like this







    5. 다시 터미널로 돌아와서 아래와 같이 입력한다.
      1. mkdir /Developer/iphoneentitlements401
      2. cd /Developer/iphoneentitlements401
      3. mv gen_entitlements.txt gen_entitlements.py
      4. chmod 777 gen_entitlements.py
    6. Just hit cancel.

      XCode에서 Window > Organizer 클릭 하고 iPhone을 컴퓨터와 연결한다. 화면에 iPhone 디바이스를 사용하위기해 "Use For Development" 클릭한다. 얼마후에 프로비저닝을 검사하기위한 로그인 프롬프트가 열리면 취소를 누른다.
      그리고 Organizer를 나간다





    프로젝트를 클릭하고 TARGETS > Build Phases 에서 AddBuild Phase > Add Run Script 클릭 후 내용을 아래 내용을 입력한다.  그리고 3번째 줄에 "my.company" 부분은 자신의 프로젝트 생성시에 입력한 Company Identifier를 입력한다.
    해당 작업은 프로젝트 생성시 마다 매번 해주어야 한다.

    1. export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    2. if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    3. /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    4. codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    5. fi


    이로써 모든 작업은 끝났다. 
    프로젝트를 생성하고 자신의 디바이스를 선택하고 올려보자! 

    *혹시나 오해하시는 분들을 위해 위 방법을 사용해서 개발을 해도 정식 앱스토어에는 올릴수 없습니다.
    앱스토어에 올리기 위한 방법은 정식 프로비저닝을 구매하시고 하셔야됩니다. 
     
    반응형

    'case Computer :' 카테고리의 다른 글

    Leet (="1337")  (0) 2011.10.18
    노트북 한/영 키 전환이 되지 않을 때!  (0) 2011.08.17
    [iPhone/iPad] Gyroscope 센서 사용  (1) 2011.07.20
    tar 분할 및 분할 압축  (1) 2011.06.01
    [GEA] Spring 적용시에 error  (0) 2011.06.01

    댓글

Designed by Tistory.