美文网首页Swift&Objective-CiOS DeveloperiOS 技术文档收录
越狱开发整理文档(二)iOSOpenDev和MacPort配置

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

作者: NBeanN | 来源:发表于2017-02-20 10:37 被阅读275次

    上一篇文章简单说了一下使用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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ipaqwttx.html