nPlayer Lite插件打包

前言

在nPlayer Lite去广告中,我们聊到可以在越狱手机上,使用插件开发的形式,清除app中的广告。那么,怎么样才能将编写的插件提取,和项目一起打包,然后在非越狱手机上运行呢?

准备工作

1.对nPlayer程序进行脱壳

脱壳后的cryptid

之前已经写过一篇脱壳文章,这里就不阐述了。

2.获取授权文件

当我们改动项目后,我们需要对项目重新签名并打包。因此,我们需要获取苹果官方提供的授权文件(免费的是没法重签名的)。我们可以在apple developer中下载用来重签名的. mobileprovision文件。或者,使用xcode编写一个项目,然后在生成的生成的.app中,获取embedded.mobileprovision文件。

创建一个项目

可以使用Debug或者Release配置描述证书,我这边为了方便测试,使用的是Debug环境

获取描述文件

3.下载insert_dylib

使用tweak创建的插件(动态库),都是独立于nPlayer程序。插件是通过Cydia中的Cydia Substrate程序,将动态库和nPlayer绑定到一起。但是我们知道,真机是没有Cydia软件的,因此,我们需要将生成的插件,注入到项目中。
下载后,将insert_dylib编译后的mach-o文件,拖拽到/usr/local/bin/目录下,目的是方便在终端中直接敲出
insert_dylib命令

4.下载ios-app-signer

在我们破坏原来的文件内容后,如果需要打包到真机设备上的,都是需要重新签名。ios-app-signer是一款开源的图形化签名工具,非常使用方便。
下载源码后,使用xcode打开。然后在编译之前选择编译的环境为Release,之后就可以生成一个用于签名打包的app。

编译环境

当然,也可以不使用Release,这就像iOS开发的时候做选择.

开始编译

1.获取.app文件

  • 在脱壳的时候如果使用的是Clutch,直接解压就可以获得.app文件。
  • 如果使用dumpdecrypted工具进行脱壳,首先需要将iPhone上的app安装目录拖拽到Mac本地,并且使用脱壳后的mach-o文件,替换未脱壳的mach-o文件。
    获取nPlayer安装目录

    保存.app文件到本地

将上面获得的embedded.mobileprovision文件放入到.app文件夹中,方便签名工具的打包。

2.找到使用tweak编写的动态库

获取动态库

tweakplayer.dylib文件拖拽到需要打包的.app

3.在nPlayer中插入动态库

如果需要nPlayer mach-o文件,在执行的时候,执行tweak编写的动态库,就需要将tweakplayer.dylib插入到nPlayer mach-o文件中。

插入动态库

  • @executable_path:代表当前可执行文件所在的目录
  • --weak:表示如果当前动态库不存在,程序运行的时候也不崩溃
  • --all-yes:表示需要输入是否确定的时候一直输入yes

使用otool -L nPlayer或者MachOView中,我们可以查看是否插入成功

otool查看

在MachOView下的Load Commonds下查看:


MachOView查看

4.修改tweakplayer所需要依赖库的路径

我们在上面插入了tweakplayer.dylib后,需要确认,tweakplayer.dylib是否需要除了系统之外的mach-o文件

查找需要的mach-o文件

可以发现,tweakplayer动态库需要使用Cydia提供的CydiaSubstrate。这也是我前面提到在越狱手机上,用来联系动态库和应用程序之前的桥梁。所以,我们需要将CydiaSubstrate拖拽到应用程序(.app)中,并将tweakplayer动态库所需要的mach-o文件修改为当前动态库所在的路径。

5.修改tweakplayer依赖库路径

使用install_name_tool -change 原始路径 修改路径 mach-o文件

修改路径

打包并运行ipa

在上面步骤中,我们已经将embedded.mobileprovision文件放入到.app文件夹中。因此,我们可以使用ios-app-signer将程序重新签名打包,这样就会生成一个ipa文件

重新签名打包

使用pp助手,或者iFunBox将ipa文件安装到本地

备注

因为我是使用DEBUG开发测试环境,所以在动态库签名这里省略了,如果是正式环境,请使用如下步骤:


签名打包
// 查看可用证书
security find-identity -v -p codesigning

// 进行签名
codesign -fs   证书ID   xxx.dylib

你可能感兴趣的:(nPlayer Lite插件打包)