IOS逆向工程重签名

前言


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

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

准备

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

重签名.dylib文件


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

IOS逆向工程重签名_第1张图片
项目文件
IOS逆向工程重签名_第2张图片
pokemongo 包里的内容

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

IOS逆向工程重签名_第3张图片
iosOpenDev

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

IOS逆向工程重签名_第4张图片
安装iOSOpenDev-1.6-2.pkg

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

IOS逆向工程重签名_第5张图片
搜索iosopendevsetup

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

IOS逆向工程重签名_第6张图片
iOSOpenDev环境安装成功

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

IOS逆向工程重签名_第7张图片
配置证书和描述文件

这里有几点要注意:

  • 配置的描述文件最好使用通配符 “*” 的描述文件,这样你就不用改 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内容里面。
  • 下载开发者证书备用。
IOS逆向工程重签名_第8张图片
通配符描述文件
IOS逆向工程重签名_第9张图片
重签名证书下载

一切就绪就编译吧,我这边是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就能安装啦。

IOS逆向工程重签名_第10张图片
Paste_Image.png

实现效果


IOS逆向工程重签名_第11张图片
成功运行没闪退!

总结


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

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

你可能感兴趣的:(IOS逆向工程重签名)