转载

初涉iOS逆向工程:免越狱修改微信(外观篇)

美国学者埃德加·戴尔(Edgar Dale)1946年提出了“学习金字塔”(Cone of Learning)的理论。他提到:学习效果在50%以上的,都是主动学习包括讨论、实践和讲授。我希望能通过做笔记的方式,巩固自己学过的知识,以及分享这些知识给其他对此感兴趣的人。

前言

微信成立七年多了,主界面也一直没有变过,和刚推出一样的简洁,纯粹。 但是看久了这个唯一的主题,总会有一些眼腻。偶然在网上看到了美化版的微信,而这些“分身版”、“美化版”的客户端预留了大量高危接口,一不注意手机就会中招(详情参考 :微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析),于是生出了自己捣鼓的念头。刚开始的时候什么都不懂,做了一大堆无用功,写下来避免更多人重蹈覆辙。

iMazing导入(失败)

之前在Mac上用iMazing改过几个小游戏的数据,所以我先试着从iMazing导出,结果发现导出的.imazingapp文件只有几份简单的数据(猜测是没受签名保护的文件),根本没有能修改的东西,心态崩了。

PP/爱思助手导入(失败)

这是网上出现最多的方法,在PP助手上下载正版ipa,提取其中的文件,发现朋友圈的颜色在其根目录下的color.css文件中。直接用记事本打开随便修改几个RGB颜色,保存。导入到手机时出现验证失败的提示,很明显是签名的问题。网上对这个问题的说法不一,个人觉得是版本的问题 。到这篇文章完成之前iOS 11.2  仍然不能越狱,第三方助手工具也没有找到此版本对应的漏洞,所以不支持导入修改过的ipa,心态继续崩。

IPAPatch导入(成功)

此方法涉及到了精彩的iOS逆向工程,感谢Naituw大神带我打开了新世界的大门。

IPAPatch是什么?

GitHub用户Naituw表示之前开源的关闭 Facebook for iOS 的 HTTPS 证书校验的方法操作太过繁琐,为了进一步简化调试、验证操作,研发了IPAPatch,它可以提供一个简单的方法来修补iOS应用程序,且不需要越狱。

IPAPatch 可以做什么呢?

和 "HackingFacebook" 类似,"IPAPatch" 主要可以在第三方的 IPA 文件上 "添加" 自己的代码,但过程有很大不同:

大神Github:https://github.com/Naituw/

开整

一 . 最终效果展示

初涉iOS逆向工程:免越狱修改微信(外观篇)

聊天界面

初涉iOS逆向工程:免越狱修改微信(外观篇)

发现界面

初涉iOS逆向工程:免越狱修改微信(外观篇)

我的界面

初涉iOS逆向工程:免越狱修改微信(外观篇)

朋友圈界面

二 . 需要准备的工具及设备

  • 清醒的头脑

  • 开发者账号(或证书)

  • Macbook

  • Xcode for mac

  • Reveal for mac

  • PlistEdit Pro for mac

三 . 具体实现步骤

1.下载开源项目IPAPatch 

2.打开Reveal,依次点击菜单栏 Help → Show Reveal Library in Finder → iOS Library ,  在iOS Library里拿到集成文件RevealServer.framework ,并将此集成文件移动到IPAPatch/Assets/Frameworks文件夹里;

初涉iOS逆向工程:免越狱修改微信(外观篇)

初涉iOS逆向工程:免越狱修改微信(外观篇)

3.准备一个解密过的 微信.ipa 文件。可以自行砸壳,因为身边没有越狱的手机,所以我是在PP助手下载的越狱版。放上已破壳6.6.6版本:百度网盘 密码: ipyj;

4.修改文件并保存;

5.将 微信.ipa 重命名为 app.ipa,替换文件夹IPAPatch/Assets里的模板文件app.ipa;

初涉iOS逆向工程:免越狱修改微信(外观篇)

6.打开IPAPatch.xcodeproj文件,点击左上角项目栏的三角形感叹号移动界面至Show the Issue navigator,再点击进入左侧 IPAPatch-DummyApp 标签,在右边的详细信息里配置Bundle Identifier和开发者证书。其中Display Name更改后会作为前缀添加到更改后的App上;

初涉iOS逆向工程:免越狱修改微信(外观篇)

7.连接iPhone,趁电脑不注意,迅速点击左上角的运行按钮,稍等片刻,将自动将此App安装到手机上;

上面的操作其实很简单,关键性的编译、执行以及注入步骤都已经由大神写进了patch.sh的脚本里,编译运行时,所有操作都是全自动完成的。

Build Succeed后,激起了我修改更多数据的兴趣,刚好又在网上找到了另一个大神制作的一大堆iOS主题包。传送门:JaBi扎比-美化、多开、神器、录屏、下载

随便下载一个主题替换包,能替换的东西基本上已经全部包含在里面了。解压后将要替换的文件拖入之前的app.ipa里,等待文件替换完成。

再重复第七步即可。

简单介绍一下部分替换文件,有待继续挖掘

app.ipa/AppIcon**x**@*x.png:微信图标,目前更改后手机桌面仍然显示原图标,原因不详

app.ipa/Expression_**@2x.png :老掉牙的表情

初涉iOS逆向工程:免越狱修改微信(外观篇)

app.ipa/zh_CN.lproj/InfoPlist.strings :包含微信的名称、以及发现页的几项文字(朋友圈、扫一扫)

初涉iOS逆向工程:免越狱修改微信(外观篇)

app.ipa/zh_CN.lproj/mm.strings:大部分文字选项都在这个文件里,都可以修改,随便修改了两项 

初涉iOS逆向工程:免越狱修改微信(外观篇)

初涉iOS逆向工程:免越狱修改微信(外观篇)

app.ipa/Assets.car:大多数图标文件集成在这个文件里

app.ipa/in.caf :消息铃声

四.遇到的几项问题以及注意事项

  1. 个人描述证书只有七天的期限,七天后需要重新安装。

  2. 用自己证书安装的微信不支持Safiri浏览器上的网页分享,应该是未上架App store客户端的通病。

  3. 有时候不推送通知,或只通知一次,原因不详。

  4. 解压后的IPAPatch文件只能用Xcode运行一次,第二次运行会出现“apple match-o linker error”,此问题还没有找到解决办法,望各路大神指点一二。

  5. 第一次进入微信或者结束进程后再打开微信会有hock成功的提示。此提示可以在IPAPatchEntry.mm文件里更改(alertControllerWithTitle;message;alertControlleraddAction;)。

初涉iOS逆向工程:免越狱修改微信(外观篇)

贴上代码

初涉iOS逆向工程:免越狱修改微信(外观篇)

hook成功的标签

总结

这篇文章只记录了如何修改App的外观,其他的例如防撤回、自动抢红包以及隐藏小红点等功能性模块涉及到了更多Objective-C方面的知识,本人刚接触OC,尚未弄懂其深邃的语法,在接下来的日子里我会继续向深层次探索,并将其记录在我的下篇文章里。

正文到此结束
Loading...