Swift&Objective-CiOS DeveloperiOS 技术文档收录

越狱开发整理文档(二)iOSOpenDev和MacPort配置

2017-02-20  本文已影响275人  NBeanN

上一篇文章简单说了一下使用Tweak开发一个简单的越狱工程,但是在MakeFile里面开发对于习惯了正向开发的程序员始终是觉得别扭,还好有iOSOpenDev和MacPort,才能够在XCode上愉快的进行越狱开发。

一、配置MacPort

1.从官网下载MacPort

找到对应于自己电脑系统版本的MacPort下载就行。

下载完成安装即可。

注意:版本下错了MacPort会安装不成功;

电脑以后有更新的话可以执行sudo port -v self update下载更新

【注意】macPort安装特别卡,一种解决办法是开启VPN,一种就是执行命令行,具体可以看这篇文章 。但是macPort不是必须安装,除非你需要执行port相关指令。

二、配置iOSOpenDev

1.从官网下载iOSOpenDev最新版本

或者使用命令

git clone -b stableversion https://github.com/haorenqq/theos/ $THEOS

下载兼容iosopendev的版本

2.配置相关文件

下载压缩包 解压得到几个文件

iPhoneOS开头的四个文件放到/应用程序/Xcode/Content/Developer/Platforms/IphoneOS.platform/Developer/Library/Xcode/Specifications文件夹下(如果没有,请自己创建一个),

iPhone Simulator 开头的另外四个文件放入/应用程序/Xcode/Content/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications文件夹下(如果没有,请同样创建一个)。

另外在/应用程序/Xcode/Content/Developer/Platforms/iPhoneSimulator.platform/Developer/文件夹下创建usr文件夹,usr文件夹下再创建一个名为bin的文件夹

3.如果安装失败 请继续以下步骤!

安装失败后,我们进入系统根目录的opt文件夹,会发现已经有了iosopendevsetup文件夹,我们在iosopendevsetup/bin看到有一个脚本iod-setup。终端运行

sudo ./iod-setup base

sudo ./iod-setup sdk -sdk iphoneos

完全关闭Xcode重新打开,新建工程,显示下图就成功了。

安装成功

三、开始编程

1.选择上图中的LogosTweak

项目结构

2.配置运行环境ip

输入手机ip

注:手机和电脑必须在同一个wifi下,上面输入自己手机的ip;

3.导入对应的系统库,最基础的库,UIKit和Foundation

点击+号搜索导入

库文件

4.开发文件编辑

tweak

打开这个文件,是不是很眼熟,对,就是上一篇文章提到的Tweak开发。

注:你可以在这个文档里写代码,也可以在下面的.mm文件中写代码,删除.xm都没关系,因为写在xm里的代码在运行之后会在mm文件中自动生成对应的代码。但是在xm中编写代码并不会有XCode关联代码,所以在mm中写代码更爽。

5.下面代码都放在mm中[手机运行最先走的是这个方法]

#import <UIKit/UIKit>

#import <Foundation/Foundation.h>

#import <substrate.h>

static void (* original_applicationDidFinishLaunching)(id self, SEL _cmd, UIApplication * application);

static void replace_applicationDidFinishLaunching(id self, SEL _cmd, UIApplication * application)

{

original_applicationDidFinishLaunching(self,_cmd, application);

//在这里编码

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:@"First Blood" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alert show];

}

//最先走这个方法

__attribute__((constructor)) static void _log_UIApplicationMain(){//initialize

MSHookMessageEx(objc_getClass("SpringBoard"), @selector(applicationDidFinishLaunching:), (IMP)&replace_applicationDidFinishLaunching, (IMP *)&original_applicationDidFinishLaunching);

}

6.编译运行

编译运行

或者使用快捷键commond+shift+i

注:一定要选择在真机下运行,不然会有报错,不在真机下运行的打包发到手机也没用。

如果都没有报错,恭喜你成功了。

7.常见报错处理。

问题:Undefined symbols for architecture arm64:"_OBJC_CLASS_$_UIAlertView", referenced from:objc-class-ref in firstTweak.o

解决方案:导入UIKit库文件,上面说过导库。

问题:Undefined symbols for architecture arm64:"_MSHookMessageEx", referenced from:_log_UIApplicationMain() in firstTweak.o

ld: symbol(s) not found for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决方案:导入libsubstrate.dylib库文件【注意路径】

选择addother 搜索libsub 这个路径下的

问题:CodeSign error: code signing is required for product type 'Dynamic Library' in SDK 'iOS 9.3'

解决方案:找到Xcode的安装目录【电脑中的应用程序右键显示包内容】目录:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/SDKSettings.plist拷贝出来,然后找到文件中的DefaultProperties属性中的CODE_SIGNING_REQUIRED设置为NO,拷贝回去替换掉。重启Xcode重新运行【Commond+Shift+i】。

注:一定要选择在真机下运行,不然会有报错,不在真机下运行的打包发到手机也没用。

修改

然后你就可以看到手机黑屏然后开启,然后就弹出框啦!First Blood!

如果还不行的话,下一篇文章将讲述另一种打包的方法,上面这个方法可能对一些机器不太适用,下面的文章屡试不爽,只是稍有点麻烦。由于篇幅问题,放在下一篇中。

参考文章:https://github.com/jackrex/FakeWeChatLoc

http://www.blogfshare.com/iosopendev.html

http://www.cnblogs.com/isItOk/p/5645292.html

站在巨人的肩膀上才有这些总结

菜鸟走向大牛,大家共同前进,如果觉得不错,请给个赞/关注。

一起交流学习,有问题随时欢迎联系,邮箱:383708669@qq.com

上一篇下一篇

猜你喜欢

热点阅读