IOS逆向工程重签名
前言
一个月前,虾神放出了这篇文章,是关于逆向编程方面的,当时很有兴趣,只是项目紧迫没有时间去研究。最近稍微空闲下来,翻到Kitten的博客想起这件事,于是回头去试试逆向编程。
说实话,我是一个逆向的菜鸟,以前只是了解实现过程:砸壳 -- 注入hook代码 -- 重签名。关于砸壳和注入代码,网上有很多方法和工具,由于没有越狱设备,暂时不去尝试。这里主要说下最简单的重签名。对象还是最近火热的Pokemon Go。
准备
重签名.dylib文件
首先从github上将虾神砸壳过的项目clone下来并解压pokemon_unsigned.zip
,样子大概是这样:
这里先不急打开LocationFaker.xcodeproj
文件编译,就算打开了也会出错,因为这里缺少越狱iosOpenDev
环境。我们可以去官网下载一个安装包。这里我安装的是1.6-2
安装包。
下载下来是一个pkg文件,双击运行,先试着安装。
安装iOSOpenDev-1.6-2.pkg不出意外肯定是安装失败的,官方的说法是先安装MacPorts,再更新 MacPorts,再安装 DPKG 文件....这里介绍一个简单的方法。虽然安装失败,但是你的电脑里还是会存在iosopendevsetup文件夹。全局搜索就能找到这个文件夹。
搜索iosopendevsetup终端cd到/opt/iosopendevsetup/bin
目录下,执行sudo ./iod-setup base
命令就可以成功安装了。
大退xcode,打开新建工程界面就可以发现我们有越狱开发环境了。
回头再打开虾神的项目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就能安装啦。
实现效果
成功运行没闪退!
总结
逆向工程重签名是逆向工程中最简单的一步,即便如此,一套流程走下来还是有很大的收获,总之还是非常有意思的。
我是翻滚的牛宝宝,欢迎大家评论交流~