您的位置:首页 > 其它

Xcode 真机测试破解方法(转加修改)xcode 4.0(4.3) 通过

2012-08-16 21:07 274 查看
1.创建证书

创建证书的过程比较简单,打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone
Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以。



2.修改Xcode的配置文件和二进制文件

下面的步骤稍微有点繁琐,您应该了解UNIX命令行的基本操作,并了解一种命令行文本编辑器,本文使用的是vim。尽管这里会给出完整的代码,但是关于修改和保存代码的基本操作,不再赘述。下面的操作请先将Xcode按Command+Q完全关闭

(1)修改配置文件

进入目录并备份原文件(4.1和4.2在这里主要的差别是SDK的目录名不同)



(Xcode4.1请执行)cd
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/




(Xcode4.2请执行)
cd
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/



sudo cp SDKSettings.plist
SDKSettings.plist.orig


进行编辑



sudo vim SDKSettings.plist


将以下两段中的YES改为NO

<key>CODE_SIGNING_REQUIRED</key>

<string>YES</string>



<key>ENTITLEMENTS_REQUIRED</key>

<string>YES</string>

下面修改另外一个文件

进入目录并备份原文件



cd
/Developer/Platforms/iPhoneOS.platform/




sudo cp Info.plist Info.plist.orig


进行编辑



sudo vi Info.plist


将全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,网上的大部分文章说有2处,但我找到了3处,可能是Xcode
4.1要多一处?(Xcode
4.2也有三处)
总之都改掉了。提示:在在vim中输入/要搜索的内容来搜索,按n键是搜索下一处。

(2)二进制补丁

#在桌面上建立script这个脚本



cd ~/Desktop




vim script


#(Xcode
4.1执行)
在编辑器中输入如下内容



#!/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 "xc3x26x00x00" >>
working




/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


#(Xcode
4.2执行)
在编辑器中输入如下内容



#!/bin/bash




cd
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS\
Build\ System\
Support.xcplugin/Contents/MacOS/




dd if=iPhoneOS\ Build\ System\ Support of=working bs=500
count=255




printf "xc3x26x00x00" >>
working




/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


保存并退出。(4.1和4.2在这里的区别也是目录名不同,就是代码中绿色的部分。4.1是Plug-ins而4.2是PrivatePlugIns

授予这个脚本执行权限并执行它



chmod 777 script




./script


正常的话应该输出(具体的数字可能有差别)



231+1 records in




231+1 records out




115904 bytes transferred in 0.001738 secs (66694555
bytes/sec)


至此,对SDK中配置文件和二进制文件的修改就完成了

3.准备自定义的生成后脚本

连接互联网后执行



mkdir /Developer/iphoneentitlements401




cd /Developer/iphoneentitlements401




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



mv gen_entitlements.txt
gen_entitlements.py




chmod 777 gen_entitlements.py


如果您已经联网,则请直接转到步骤4,如果您没有联网,那么请手动创建/Developer/iphoneentitlements401/gen_entitlements.py并授予其执行权限,这个文件的内容为

#!/usr/bin/env python

import sys

import struct

if len(sys.argv) != 3:

print "Usage: %s appname dest_file.xcent" %
sys.argv[0]

sys.exit(-1)

APPNAME = sys.argv[1]

DEST = sys.argv[2]

if not DEST.endswith('.xml') and not
DEST.endswith('.xcent'):

print "Dest must be .xml (for ldid) or .xcent (for
codesign)"

sys.exit(-1)

entitlements = """

<?xml version="1.0"
encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>application-identifier</key>

<string>%s</string>

<key>get-task-allow</key>

<true/>

</dict>

</plist>

""" % APPNAME

f = open(DEST,'w')

if DEST.endswith('.xcent'):

f.write("\xfa\xde\x71\x71")

f.write(struct.pack('>L', len(entitlements) +
8))

f.write(entitlements)

f.close()

4.修改工程设置


特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。



这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。

(1)禁用Xcode自动的签名操作

将工程配置中所有的Code Signing选项全部设为Don't Code
Sign,如图。可能需要先点击“All”让这个选项显示出来



(2)添加自定义的生成后脚本

在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run
Script,输入以下脚本



export
CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate




if [ "${PLATFORM_NAME}" == "iphoneos" ];
then




/Developer/iphoneentitlements401/gen_entitlements.py
"my.company.${PROJECT_NAME}"
"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";




codesign -f -s "iPhone Developer" --entitlements
"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"
"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"




fi
注意我的机器上是iphoneentitlements30,你可以看看自己机器上是什么

如图所示:


至此配置全部完成,下面就可以插上iPhone,重新选择生成目标来测试一下在线调试了!如果是第一次使用该设备调试,请先在Organizer中将设备切换为开发模式,具体操作请见常见问题5。

5.旁门左道生成IPA文件

如果我的程序调试好了,怎么才能发给别人用呢?正常情况下IPA文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小trick来完成这个操作了。

先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是



/Users/你都用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos


很纠结吧~这个目录下有个.app的文件,就是生成的程序了。把这个.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),发生了什么?哈哈,它就这样变成.ipa了!

把这个.ipa发给朋友,大家就可以跟您一起分享这个程序了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: