引言:

说起与「尝鲜派 iBeta」得渊源,还是要从「尝鲜派 iBeta」的 logo 说起,当时「尝鲜派 iBeta」发起人 Sunbelife 说要创建一个能够提供 Apple 用户便利的网站,我当时负责制作「尝鲜派 iBeta」的 logo。不过后来呢,忙学业上的事情,「尝鲜派 iBeta」那块就没有管,现在大学考上了,有时间了,便加入开发组,与另外几位朋友负责开发新版本的「尝鲜派 iBeta」。

他们分别是:

  1. 0xJacky (主程序开发)
  2. Hintay(开发者)
  3. Sunbelife(创始人)
  4. Hexwell (就是我啦,负责主程序开发)

Github 的「尝鲜派 iBeta」的私库

QQ截图20190617021524.png

总之,非常荣幸能够加入「尝鲜派 iBeta」,利用我的能力为广大 Apple 用户提供便利。当然!希望「尝鲜派 iBeta」越办越好~

前言:笔者这两天在调试一个由 ThinkPHP 开发的站点,在 Windows 下部署一切没有问题,但是当部署到 Linux 系统的 ECS 上就出现了:ThinkPHP —— 找不到模板的错误。

笔者呢,也是研究了好久,其实这个错误的原因是因为 Linux 上对于大小写区分很敏感,Windows 则不然,因此,想要解决这个错误的方法也很简单。但是每个人都有不同的错误原因,所以还是需要自己排查,仔细看下报错时候输出的报错信息。

如果你不知道如何打开 ThinkPHP 的 debug 模式,你需要在你的项目入口处,加入代码:

define('APP_DEBUG',true);

解决方案:

1. 针对使用了省略方法方法来渲染页面的,例如下面的代码。
this->display();

你应该仔细检查你的方法名是否大小写是否正确,因为 ThinkPHP 会默认渲染以方法名命名的页面。简单地说,就是,你的目录下有一个文件为 index.php,那么你在 Controller 中,想要渲染这个页面,你就应该将方法像下面这么写。

function index()
{
this->display();
}

而不是像下面这么写。

function Index()
{
this->display();
}

2. 针对方法名正确,但是还是提示无法找到模板的同学,你应该仔细查看你的 Controller 文件,看看有没有在哪个地方调用了 display 方法,检查名称是否跟你目录的文件名称一致。

3. 如果还是不行,那你应该检查你的伪静态规则,检查是否设置了伪静态,如果你不会撰写伪静态,你可以去查下资料,笔者就不在这赘述了。

其它的原因也是有可能的,只不过笔者还没有遇到,如有同学遇到,欢迎评论提供解决方案。

前言:最近阿里云的某些境外服务器被出口运营商限制,导致笔者的博客不能够正常在境内被访问。咨询相关阿里云工程师得知,当前它们也未收到任何消息,什么时候恢复它们也不清楚。

阿里云工程师给我的解决方案:

QQ截图20190612161630.png

归纳总结下就是:

  1. 在出现问题的 ECS 服务器上次创建自定义镜像
  2. 新购一台 ECS
  3. 恢复镜像到新购的 ECS 上
  4. 配置服务器上的相关文件
  5. 恢复访问服务

笔者最近在研究如何让 APP 以 ROOT 权限在 iOS 12 上运行,实现沙盒逃逸 (Sandbox Escape),但是奈何国内外资料都过于古老,不是无法运行,就是拿不到权限,因此特写此文章,帮助之前跟我一样迷茫的同学。

引言

该篇博文适用范围:尝试了国内外的资料,利用 fake bash 方法想要实现 ROOT 提权,但是却遇到 “此应用需要更新以在 iOS 11 上运行” 的问题。

首先,在 Github 上有一个作者开源了一个 shell 脚本 —— App2Deb ,它可以自动打包 IPA 为 DEB 文件,并且能够实现 iOS 12 上 ROOT 权限运行。这样子就解决了我们 iOS 12 上 ROOT 权限的问题,但是该问题解决了又来了另外一个问题,因为笔者的项目中使用了 KeyChain 相关的内容,由于该脚本过于简单,并未针对 Apple 的重签名政策进行特定设置。因此,在研究了该脚本之后,对其进行了补充。

N-App2Deb

App2Deb 原为 的一个自动打包 ipa 文件为 deb,并且能将打包后的 APP 安装至 /Applications 下,以 root 权限运行的 shell 脚本。但是该作者的脚本过于简单,并未针对 Apple 的重签名政策进行设置。例如 KeyChain 等。因此,笔者将该脚本进行扩充,目前增加了 KeyChain 访问,并将该脚本改名为:N-App2Deb

适用范围

  • 你的 APP 内部涉及了与 KeyChain 相关的操作,例如 RSA 加密便用到了 SecKeyRef ,而 SecKeyRef 则涉及了 KeyChain

如何使用

首先我们要明白,以 KeyChain 为例子,每一个涉及了 KeyChain 的 APP,都会在 IPA 目录内生产一个 embedded.mobileprovision 该文件中包含了各种 APP 相关的头信息,例如 keychain-access-groups 等等。

如果你想要使用 N-App2Deb 脚本,请将该脚本 fork 至 你的仓库,修改 Resources 目录下的 entitlements.xml 并添加 embedded.mobileprovision 中相关头文件信息。

代码示例

  1. 首先用 ATOM 等任意代码编辑器打开 embedded.mobileprovision 复制该文件下 KeyChain 相关的头信息
    <dict>
    <key>application-identifier</key>
    <string>2AMH2MYA4V.devs.nactro.achelper</string>
    <key>keychain-access-groups</key>
    <array>
    <string>2AMH2MYA4V.*</string>
    </array>
    <key>get-task-allow</key>
    <false/>
    <key>com.apple.developer.team-identifier</key>
    <string>2AMH2MYA4V</string>
    </dict>
  1. 将该头信息复制到 entitlements.xml 下,完整的 entitlements.xml 应该如下所示
<?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.security.no-container</key>
    <true/>
    <key>com.apple.private.skip-library-validation</key>
    <true/>
    <key>get-task-allow</key>
    <true/>
    <key>platform-application</key>
    <true/>
    <key>application-identifier</key>
    <string>2AMH2MYA4V.devs.nactro.achelper</string>
    <key>keychain-access-groups</key>
    <array>
    <string>2AMH2MYA4V.*</string>
    </array>
    <key>com.apple.developer.team-identifier</key>
    <string>2AMH2MYA4V</string>
</dict>
</plist>

至此,你可以使用 N-App2Deb 打包 IPA 文件为 DEB,并安装到你的 iPhone

dpkg -i [Your Package Name]

使用方法与 App2Deb 一致

App2Deb [Your IPA Path]

值得注意的是,不要忘记替换 InstallApp2deb 文件中相关的下载链接为你自己仓库的地址。

Github 地址:N-App2Deb