吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6623|回复: 4
收起左侧

[iOS 转帖] 免iDP编译iPhone app真机执行 .

[复制链接]
小野 发表于 2014-5-27 16:09
因为尝试了很多资料.所以这篇不光是转载了
我把所有尝试方法和最终步骤都记录下来.
网上的资料要不是少步骤要不就是太老
我在IOS SDK 4.1下面测试
环境是
Mac OS X 10.6.4
iPhone 1,1 whited00r 3.1.5(firmware 3.1.3)
iOS SDK 4.1 final
测试下来方法1和方法2都不能通过编译
两种方法结合起来也不行
后来找到方法3
使用方法3终于可以编译通过.产生了release代码
但是复制到iphone上之后只要执行就立刻退出
在ssh下面执行的时候直接返回Killed
查阅之后感觉是签名还是有问题,被SpringBoard直接杀掉了
尝试过在iPhone上执行ldid
但是返回如下的错误
codesign_allocate: for architecture armv6 object: ./test malformed object (unknown load command 4)
util/ldid.cpp(582): _assert(0:WEXITSTATUS(status) == 0)

最终使用如下方法关闭iphone证书检测
sysctl -w security.mac.proc_enforce=0
sysctl -w security.mac.vnode_enforce=0
==========================总结:真正运行自己的app过程=========================
1.iPhone安装openssl以及openssh,这个方便以后连接上来操作.当然用91之类的文件管理也可以将编译后的程序放上来
2.iPhone的ssh默认密码是alpine,不要用passwd去改.直接修改/etc/passwd文件和备份.具体方法这里不说了.
3.修改Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist文件,将CODE_SIGNING_REQUIRED对应的值设置为NO.
4.打开项目,在Xcode右上角的info里面,选择Building项,Configuration选择Release,在Code Signing->Code Signing Identity->Any iOS device设置为Don’t Code Sign
5.这时候项目选择Device就可以正常编译通过了
6.将文件上传,这里使用scp,可以使用其他方法
mac$scp -r [项目名.app] root@[你的iphone的IP地址]/Applications
7.登录iphone进行操作,给程序可执行权限并且重启SpringBoard让程序图标可以出现.
mac$ssh root@[你的iphone的ip地址]
iphone$cd /Applications
iphone$chmod +x [项目名.app]
iphone$killall SpringBoard
8.关闭iphone的合法性检查关闭
iphone$sysctl -w security.mac.proc_enforce=0
iphone$sysctl -w security.mac.vnode_enforce=0
9.执行程序成功
==========================总结:测试过程=========================
1.iPhone安装openssl以及openssh,这个方便以后连接上来操作.当然用91之类的文件管理也可以将编译后的程序放上来
2.iPhone的ssh默认密码是alpine,不要用passwd去改.直接修改/etc/passwd文件和备份.具体方法这里不说了.
3.修改Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist文件,将CODE_SIGNING_REQUIRED对应的值设置为NO.
4.打开项目,在Xcode右上角的info里面,选择Building项,Configuration选择Release,在Code Signing->Code Signing Identity->Any iOS device设置为Don’t Code Sign
5.这时候项目选择Device就可以正常编译通过了
6.在Mac OS X中下载ldid,以下使用mac$标识在mac机执行的指令,iphone$标识在iphone中执行的指令
mac$wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.610.tgz
7.解压这个包并编译
mac$tar -zxf ldid-1.0.610.tgz
mac$cd ldid-1.0.610
mac$g++ -I . -o util/ldid{,.cpp} -x c util/{lookup2,sha1}.c
8.进入[项目目录]/build/Release-iphoneos/
9.使用ldid对应用程序进行签名
mac$ldid -S [项目名.app]/[项目名]
10.将文件上传,这里使用scp,可以使用其他方法
mac$scp -r [项目名.app] root@[你的iphone的IP地址]/Applications
11.登录iphone进行操作,给程序可执行权限并且重启SpringBoard让程序图标可以出现.
mac$ssh root@[你的iphone的ip地址]
iphone$cd /Applications
iphone$chmod +x [项目名.app]
iphone$killall SpringBoard
12.在iphone上执行程序就直接退出了.
13.从手机的Cydia上搜索下载ldid,登录ssh之后执行
iphone$ldid -S [项目名.app]/[项目名]
报错
codesign_allocate: for architecture armv6 object: ./test malformed object (unknown load command 4)
util/ldid.cpp(582): _assert(0:WEXITSTATUS(status) == 0)

14.从cydia的网站找到ldid官方的方法
只能将检查关闭
iphone$sysctl -w security.mac.proc_enforce=0
iphone$sysctl -w security.mac.vnode_enforce=0
15.执行程序成功
==========================方法1:制作自己证书=========================
1. 產生證書
由於 XCode 後面的版本都要求應用程式必須經過簽署,也因此你必須要
多花99美元加入 Developer Program (真是黑呀),反正我又不放到 App Store 賣錢,乾脆自己簽個證書來用不就好了
打開 Key Access 這個工具程式(在應用程式->工具程式內),並建立一個 “iPhone Developer” 名稱的證書(這個名稱不要改,否則你得在專案內改變)
類型選擇”編碼簽名”
輸入憑證資訊
最後選擇存放在”系統”內(不是 “登入”,否則會找不到)
這樣就大功告成了,你已經省下$99了!
2. 專案建立好了後,打開 Project Setting,並在 User-Defined Settings 輸入:
PROVISIONING_PROFILE_ALLOWED = NO
PROVISIONING_PROFILE_REQUIRED = NO
3. 打開 Info.plist,這個檔案主要存放應用程式的相關描述,按右鍵 Add Row,新增 SignerIdentity = “Apple iPhone OS Application Signing” (要一樣的,亂輸好像不行)
11. 選擇要使用的設備,在此我們選擇 Device – iPhone OS 2.2,XCode 會幫我們簽署,按下”允許”(不能按”總是允許”)就可以輸出到你的iPhone了(第一次跑可能會出現 Security policy error,再跑一次
就不會出現了)
==========================方法2:直接生成app=========================
开发安装环境mac OS,并且有wifi,经过越狱(破解)的iphone或者ipod touch.
下面所提到的scp是mac OS的终端命令.
ssh,ldid 和chmod等是iphone的终端命令行,需要安装,cydia等工具
直接进行编译,必会出现错误提示:
CodeSign error: no certificate found in keychain for code signing identity ‘iPhone Developer’
下面我们先跳过Xcode的签名检查.打开工程文件夹下的*.xodeproj为后缀名的文件(右键点击显示包内容”Show Package Contents”),一般会看到三个文件,以文本方式打开project.pbxproj这个文件,
此時, 打開工程文件夾下*.xcodeproj為後綴名的文件(右鍵點擊, 選擇”Show Package Contents”),搜索iPhone Developer,找到后删除,一共有2处,然后保存,重新进入Xcode编译即可生成App程序.生成的结果在build目录下.
把编译好的release for device的程序拷贝到iphone
先进入MyApp.app所在的目录,然后执行如下命令
siu-andrewde-macbook:release-iphoneos siuandrew$ scp -r MyApp.app root@192.168.0.2:/Applications
提示输入密码
root@192.168.0.2′s password:
然后开始拷贝.
拷贝完成后再次登入Iphone:
siu-andrewde-macbook:release-iphoneos siuandrew$ ssh root@192.168.0.2
root@192.168.0.2′s password:
登入后执行签名工作
iPhone:~ root# cd /Applications
iPhone:/Applications root# ldid -S MyApp.app/MyApp
ldid这一步非常重要,注意-S要大写,耐心等待签名结束.
签名完成进行把整个目录权限设置755
iPhone:/Applications root# chmod +x MyApp.app
设置权限这一步也必不可少,或者用chmod -R 755 MyApp.app
上传及签名工作完成,如果iphone 安装了91关机助手,注销并修复图标即可,否则在iphone机子上要删除installation.plist文件
iPhone:~ root# rm /private/var/mobile/Library/Caches/com.apple.mobile.installation.plist
然后重启动手机即可看到程序的图标.
运行你自编译的App程序.
==========================方法3:不签名app,使用ldid=========================
如果你不是iPhone开发者,但是恰好有mac和iphone在身边,又恰好是个喜欢“hello world”的IT民工,那你一定会想在自己的iPhone上hello world一下。由于你只是玩票,所以肯定不会去弄iPhone Development Program ,官方文档自然没有任何供你参考的信息,目前网络上介绍的各种sdk版本的方法大多都已经失效或是混乱,所以发一个简单的说明:
本文测试环境:Snow leopard 10.6.3 + Xcode 3.2.2 + iPhone 3G(3.1.2固件)
前提条件:在Xcode中已经有可以在模拟器上正常运行的Hello World程序 + iPhone已经越狱 + 本身是个没进行过iPhone开发的小白
方案思路:build一个不需要签名的应用,在mac上用ldid伪造签名,通过SSH上传到iPhone上
操作步骤:
sudo vi /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist , 把CODE_SIGNING_REQUIRED对应的值设置为NO。 – 这是告诉Xcode使用这个SDK build时不用必须签名应用;
在Xcode中修改应用的”info”->”build” -> “Release” -> “Code Signing Identity”,设置为”Don’t Code Sign”,选择构建目标为”iPhone Device – [SDK版本] | Release”,build应该提示无错误。(第一步的配置生效需要重启Xcode) – 此步构建了一个没有签名的app,路径为[项目位置]/build/Release-iphoneos/HelloWorld.app
安装ldid
wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.610.tgz
tar -zxf ldid-1.0.610.tgz
cd ldid-1.0.610
g++ -I . -o util/ldid{,.cpp} -x c util/{lookup2,sha1}.c
util/ldid 下面就是我们需要用来伪造签名的ldid程序了
给程序签名
ldid -S [项目位置]/build/Release-iphoneos/HelloWorld.app/HelloWorld (注意这里要写到.app下面的执行文件)
SSH上传到iPhone的/Applications 下面,respring一下就可以看到并使用HelloWorld应用了(SSH应该在大家越狱时都有装,如果没有,到Cydia或Rock中都能装上,不会respring就重启iPhone)
参考资料:
http://bbs.weiphone.com/read-htm-tid-222380.html
http://www.blogjava.net/sealyu/archive/2010/09/14/331968.html
http://blog.robaggio.net/2010/04/idpiphone.html
http://techxter.com/62/code-sign ... cations-using-ldid/
http://www.saurik.com/id/8



点评

发现你做事很细心  发表于 2014-5-27 16:28

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Dlan 发表于 2014-5-27 16:36
感谢楼主分享,话说不玩iso
lwj一辈子 发表于 2014-5-27 17:03
头像被屏蔽
手机号码定位 发表于 2014-11-23 20:34
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表