iOS越狱开发(一)

做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结。个人不推荐使用盗版,这里主要以技术介绍为主。

这个系列里面主要介绍怎样进行越狱开发,涉及到以下几个方面:

(1)主要涉及到越狱市场的建立,在App内部实现ipa的安装和卸载以及更新。参照的对象就是91助手,25pp,同步推那样的应用。建立一个盗版的App Store.当然了,如果通过299刀的企业证书的话,是不需要通过Cydia的,直接通过网页链接就可以实现app的推广,有一定的风险。这里面涉及到一些协议,后面会进行介绍。

(2)在App内部实现壁纸和铃声的替换。这个过程涉及到的东西很多,特别是铃声的替换,iPhone里面非常麻烦;

(3)一些越狱插件的开发,通过里面有些插件非常好用,合理,而且非常美观漂亮。

这里先从App内部安装ipa包开始讲,后面逐步把上面提到的3点全部讲完。

一般情况下安装91助手,同步推这样的应用需要手机越狱,同时安装AppSync,这样才能使用,所以进行开发的必备条件也是如此。

上传的demo工程的地址,我的github链接:https://github.com/easonoutlook/IPAInstaller

之前一直在fork别人的东西,也没做什么贡献,从现在开始,为开发为开源,做一点自己的贡献。

进入正题:

需要的工具和环境:

A. iPhone or iPad越狱,安装AppSync

B. Xcode安装 Command Line Tools

C. 下载最新版本的ldid https://github.com/downloads/rpetrich/ldid/ldid.zip

1、修改SDKSettings.plist文件

我用的是Xcode4.6.3版本,iPhone的版本是6.1.2, 路径为:/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/

将这个目录下的 SDKSettings.plist里面的CODE_SIGNING_REQUIRED置为NO

执行命令为:

转到目录下

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

将原有文件备份

sudo cp SDKSettings.plist SDKSettings.plist.orig

对SDKSettings.plist文件进行编辑

sudo vim SDKSettings.plist

将下面对应的字段改为NO

<key>CODE_SIGNING_REQUIRED</key>

<string>YES</string>  // 默认为YES, 需要改为NO

此操作参考的路径如下:http://kqwd.blog.163.com/blog/static/4122344820117191351263/

2、给工程添加相应的权限,iOS6里面需要赋予权限才可以,iOS5之前不需要此操作

新建一个plist文件,命名为entitlements.

创建一个plist

将plist文件改为:

<?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>com.apple.private.mobileinstall.allowedSPI</key>
        <array>
            <string>Install</string>
            <string>Browse</string>
            <string>Uninstall</string>
            <string>Archive</string>
            <string>RemoveArchive</string>
        </array>
    </dict>
</plist>

将Code Signing 的Code Signing Entilements设置为刚刚创建的entitlements.plist文件

后面还需要一个手续,将生产的app文件用ldid签名。后面再介绍。

3、实现越狱安装的代码:

typedef NSDictionary *(*PMobileInstallationLookup)(NSDictionary *params, id callback_unknown_usage);
NSDictionary *IPAInstalledApps()
{
    void *lib = dlopen("/System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation", RTLD_LAZY);
    if (lib)
    {
        PMobileInstallationLookup pMobileInstallationLookup = (PMobileInstallationLookup)dlsym(lib, "MobileInstallationLookup");
        if (pMobileInstallationLookup)
        {
            NSArray *wanted = nil;//[NSArray arrayWithObjects:@"com.celeware.IPADeploy",@"com.celeware.celedial",nil]; Lookup specified only
            NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"User", @"ApplicationType", wanted, @"BundleIDs",nil];
            NSDictionary *dict = pMobileInstallationLookup(params, NULL);
#ifdef DEBUG
            NSLog(@"%@", dict);
#endif
            return dict;
        }
    }
    return nil;
}

所有代码均在之前的github目录中,可以自行查看。

4、编译生成App文件

因为需要给APP签名加权限,所以不要生成IPA文件,而是生成APP文件。等把签名与权限加好后,再手动用APP制作IPA文件。

在Xcode中选择设备(IOS Device)(图3),编译(Build)(图4)。编译完成后,在工程的Products文件夹中可以看到刚刚编译好的APP文件,右键Show in Finder(图5),就可以在文件夹中显示。将APP复制到一个别的文件夹中,什么地方都可以,后面需要用到。

5、制作ipa文件

将之前提到的ldid下载好后,将ldid文件放到/usr/bin中。

比如在 Download 目录下, sudo -i

然后 cp ldid /usr/bin/即可将文件拷贝到/usr/bin中。

然后对之前生成的文件,进行ldid签名

这个命令中“ldid -S” ,“ldid”与“-S”之间有一个空格。“-S”与“entitlements.xml”之间没有空格。“entitlements.xml”就是上面说到的XML文件,如果你的XML不是这个名,请将命令修改为你的XML文件名即可。

“-Sentitlements.xm”与“ipainstall.app”之间有一个空格。“ipainstall”是刚刚生成的APP文件,如果你的名字不一样,请修改为你的名字。“/“后面和APP的名字是一样的。  如果没有输出错误信息或是卡住(就是敲回车后没反应)就是添加权限成功了。

6、生成ipa文件,安装

新建一个文件夹,命名为“Payload”。将刚刚添加好权限的APP文件放到这个文件夹中。右键“压缩Payload”,得到一个“.zip”文件,将这个ZIP文件的后缀名改为“.ipa”。好了,IPA文件就制作完成了。

然后通过itools安装,测试刚刚生成的文件

整合了很多资源,有些地方弄的比较凌乱,后面加以完善

参考资源链接:

http://since2006.com/blog/240/ios6-mobileinstallationinstall

http://blog.sina.com.cn/s/blog_9cd1705d0101l4bo.html

http://kqwd.blog.163.com/blog/static/4122344820117191351263/

http://blog.csdn.net/linkai5696/article/details/5924356

http://www.yonsm.net/post/553

http://stackoverflow.com/questions/14871748/how-do-i-change-my-applications-entitlements-to-com-apple-backboard-client

http://stackoverflow.com/questions/13817569/how-to-programatically-install-a-ipa-file-in-ios-6/15062538#15062538

http://since2006.com/blog/240/ios6-mobileinstallationinstall

http://hi.baidu.com/prognostic/item/831b622202b2dd0f72863e9c

http://www.vsyo.com/a/t/89895554d4043c5a

http://mobile.dotblogs.com.tw/cmd4shell/archive/2013/03/26/98967.aspx

本文链接:http://www.cnblogs.com/easonoutlook/p/3220429.html

iOS越狱开发(一),布布扣,bubuko.com

时间: 2024-10-10 14:32:25

iOS越狱开发(一)的相关文章

关于ios越狱开发的那些事

也许吧,每每接触某些新东西的时候,都有点犯晕吧,这不是应该要的. 第一次接触ios越狱开发,也是这样吧.这篇主要是从无到有的说一下ios越狱的开发,网上很多的教程大部门都比较旧了吧,放在新设备上总是出现这样那样的问题,使人很是头疼. 从windows转到mac下开发,总有这个那个的不适应.习惯了vs的开发,突然用起了xcode难免有些为难,不是说xcode不好,两者都是非常好用的工具. 当然了,开发越狱程序和日常开发的iOS程序很相似,不过,越狱程序能做更强大的事情.你的设备也必须是要越狱的,你

[iOS越狱开发 之九]使用Theos开发SpringBoard的Tweat

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 前面讲到使用 [iOS越狱开发 之七]使用iOSOpenDev开发SpringBoard的Tweat,非常易用,但必须知道实质还是依靠Theos来创建,所以必须学会用Theos直接创建Tweat. 首先,通过theos/bin/nic.pl生成一个Tweat项目,步骤如下: 1.设置环境变量    export THEOS=/opt/theos 2.终端cd进入打算保存项目的文件夹 3.创建工程,终端输入 $THEOS/b

[iOS越狱开发 之十]dump自己的app

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 之前在[iOS越狱开发 之六]使用class-dump导出Frameworks头文件,通过一个perl脚本来dump出Frameworks的所有头文件,这片帖子主要讲dump一个app的实战,创建一个singleView的app,名称myApp,添加了个MyClass类,立马包含2个方法,一个是在Interface里公开的,另外个方法是非公开的,直接看下图. main.m 里调用公开的showInfo方法(不修改main.

[iOS越狱开发]用theos和iOSOpenDev搭建开发环境

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 越狱开发方法很多,很多比较繁琐,TheOS的出现,可以说是逆天了. TheOS被设计为一个在基于Unix平台(Mac OS X.IOS…)和大多数的Linux平台下开发IOS程序的集成开发环境.说是集成开发环境,其实就是给我们准备好了一些代码模板.预置一些基本的Makefile脚本,我们还是要在Terminal中完成一些关键操作 而iOSOpenDev则集成到xcode里,基于TheOS的开发,编译更方便,不用自己写Mak

ios越狱开发随感

这两天需要看一下某app的view结构,所以需要一些越狱知识,下面对今天的实践做些总结. 越狱开发必须安装,cydia 和iFile,Terminal. Cydia安装越狱插件必备,越狱中的AppStore,iFile文件管理利器,和Mac互传文件,目录管理等.Terminal 就是终端,不过好多命令都没有,今天刚学习越狱第一天没发现什么特别用处,直接用iFile就好了. 附上一篇链接 如何 使用reveal 看其他app view 结构  http://c.blog.sina.com.cn/p

【iOS越狱开发】如何将应用打包成.ipa文件

在项目开发中,我们常常需要将工程文件打包成.ipa文件,提供给越狱的iphone安装. 下面是一种方法: 1.首先应该给工程安装好配置文件(这里不再敖述),在ios device的状态下,运行成功. 2.选择Product->archive,如下图3.点击Distribute按钮,弹出新窗口,选择Export as Xcode Archive,如下: 4.弹出是否保存,点击save.5.选择生成的文件,xxx 13-5-10 下午4.00.xcarchive,右键点击,选择Show Packag

【iOS越狱开发】怎样将应用打包成.ipa文件

在项目开发中.我们经常须要将project文件打包成.ipa文件.提供给越狱的iphone安装. 以下是一种方法: 1.首先应该给project安装好配置文件(这里不再敖述),在ios device的状态下.执行成功. 2.选择Product->archive,例如以下图 3.点击Distributebutton,弹出新窗体,选择Export as Xcode Archive,例如以下: 4.弹出是否保存,点击save. 5.选择生成的文件,xxx 13-5-10 下午4.00.xcarchiv

[iOS越狱开发 之七]使用iOSOpenDev开发SpringBoard的Tweat

个人原创,转帖请注明来源:cnblogs.com/jailbreaker Tweat可以理解为“外 挂”程序,可以做一些hook,给iOS打补丁的功能,这里我们用iOSOpenDev提供的Logos Tweak模版开发. 这篇blog我们hook的是SpringBoard,简称SB,其是iOS中的桌面管理器,之前的帖子在安装完deb之后,我说重启下设备,实际上指的就是重启SB,头文件:https://github.com/thomasfinch/iOS-7-SpringBoard-Headers

[iOS越狱开发 之八]Thoes的Logos简介

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 上一篇帖子,讲到使用iOSOpenDev开发基于Theos的Tweak,功能Hook了SpringBoard的 -(void)applicationDidFinishLaunching:(id)application. 先简单讲一下Hook,Hook中文翻译为“钩子”,非常形象,以之上一篇帖子为例子,我们借助Substrate来Hook的,iOS设备运行到applicationDidFinishLaunching方法时候,