IOS逆向工程重签名

作者: o翻滚的牛宝宝o | 来源:发表于2016-08-04 15:26 被阅读1511次

前言


一个月前,虾神放出了这篇文章,是关于逆向编程方面的,当时很有兴趣,只是项目紧迫没有时间去研究。最近稍微空闲下来,翻到Kitten的博客想起这件事,于是回头去试试逆向编程。

说实话,我是一个逆向的菜鸟,以前只是了解实现过程:砸壳 -- 注入hook代码 -- 重签名。关于砸壳和注入代码,网上有很多方法和工具,由于没有越狱设备,暂时不去尝试。这里主要说下最简单的重签名。对象还是最近火热的Pokemon Go。

准备

  • 虾神的项目
  • 参考博客(少走很多弯路)
  • 肯定很多人都不知道自己做的app的签名过程,这篇博客很详细得说明了这一过程。博客(耐心看有好处)

重签名.dylib文件


首先从github上将虾神砸壳过的项目clone下来并解压pokemon_unsigned.zip,样子大概是这样:

项目文件 pokemongo 包里的内容

这里先不急打开LocationFaker.xcodeproj文件编译,就算打开了也会出错,因为这里缺少越狱iosOpenDev环境。我们可以去官网下载一个安装包。这里我安装的是1.6-2安装包。

iosOpenDev

下载下来是一个pkg文件,双击运行,先试着安装。

安装iOSOpenDev-1.6-2.pkg

不出意外肯定是安装失败的,官方的说法是先安装MacPorts,再更新 MacPorts,再安装 DPKG 文件....这里介绍一个简单的方法。虽然安装失败,但是你的电脑里还是会存在iosopendevsetup文件夹。全局搜索就能找到这个文件夹。

搜索iosopendevsetup

终端cd到/opt/iosopendevsetup/bin目录下,执行sudo ./iod-setup base命令就可以成功安装了。
大退xcode,打开新建工程界面就可以发现我们有越狱开发环境了。

iOSOpenDev环境安装成功

回头再打开虾神的项目LocationFaker.xcodeproj,配置下证书和描述文件

配置证书和描述文件

这里有几点要注意:

  • 配置的描述文件最好使用通配符 “*” 的描述文件,这样你就不用改 plist文件中的bundle id了。
  • 选择了形如iOS Team Provisioning Profiel:com.kittenyang.pokemonHook这样的描述文件,那么你需要一并修改包内容里面 info.plist的 Bundle ID 为 com.kittenyang.pokemonHook
  • 描述文件在 Xcode - Preference - Account - 选择一个 Team - View Details - 找到描述文件右键 Show In Finder.
  • 拷贝出你准备用来签名的描述文件,改名成 embedded.mobileprovision到包pokemongo.app内容里面。
  • 下载开发者证书备用。
通配符描述文件 重签名证书下载

一切就绪就编译吧,我这边是success,成功编译。在项目中LatestBuild里找到刚才编译的LocationFaker.dylib,改名为libLocationFaker.dylib扔到pokemongo.app包里,覆盖原来文件。包重签名就这样完成了。

重签名.ipa文件


这里我选择用iReSign来重签名。首先要得到一个.ipa,这个ipa文件就是原来项目中的那个包pokemongo.app
把pokemongo.app拖入iTunes的资料库,就会自动生成.ipa文件。如果不知道iTunes的资料库的路径,就全局搜索pokemongo.ipa就好。

打开iReSign,填写ipa路径、mobileprovision(刚才的描述文件路径)和证书路径(备用的证书),其他空着,重新签名。成功后会获得pokemongo-resigned.ipa,把pokemongo-resigned.ipa拖入iTools就能安装啦。

Paste_Image.png

实现效果


成功运行没闪退!

总结


逆向工程重签名是逆向工程中最简单的一步,即便如此,一套流程走下来还是有很大的收获,总之还是非常有意思的。

我是翻滚的牛宝宝,欢迎大家评论交流~

相关文章

网友评论

  • GJCode:您好,请教下,我每一步按照您的流程来,然后点击重新签名后,一直处于 Entitlements generate 状态,左边菊花一直再转,等了有段时间了,请问下,这个是为什么呢
  • 凛华夜子:楼主你好 我想问下重签名过程中 添加自己手机udid后 理论上只需要下载新的描述文件mobileprovison就行了的话 那distribution.cer这个要不要重下或者处理呢
    o翻滚的牛宝宝o:@凛华夜子 cer文件不用进行更新。。。。mobileprovison更新就好了
    凛华夜子:@o翻滚的牛宝宝o 噢噢那就是除了mobileprovison cer文件也要进行更新.... 我以为那个跟设备也有关系么
    o翻滚的牛宝宝o:@凛华夜子 如果只是想类似于真机调试的话,就不需要distribution.cer,只需要mobileprovison和develop.cer。

本文标题:IOS逆向工程重签名

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