美文网首页iOS DeveloperiOS程序员的业余沙龙iOS开发者
初涉iOS逆向工程:免越狱修改微信(外观篇)

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

作者: Taag | 来源:发表于2018-04-17 22:57 被阅读4182次

版权声明:本文为博主原创文章,未经博主允许也可以转载,欢迎转载,随便转载。

美国学者埃德加·戴尔(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/


开整


一 . 最终效果展示

聊天界面 发现界面 我的界面 朋友圈界面


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

  ●        清醒的头脑

  ●        开发者账号(或证书)

  ●        Macbook

  ●        Xcode for mac

  ●        Reveal for mac

  ●        PlistEdit Pro for mac


三 . 具体实现步骤

1.下载开源项目IPAPatch ;下载地址:百度网盘 密码: wu1m;

2.打开Reveal,依次点击菜单栏 Help → Show Reveal Library in Finder → iOS Library ,  在iOS Library里拿到集成文件RevealServer.framework (懒人入口:百度网盘 密码: 2uxr),并将此集成文件移动到IPAPatch/Assets/Frameworks文件夹里;

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

4.修改文件并保存;

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

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

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

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

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

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

再重复第七步即可。


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

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

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

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

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

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;)。

贴上代码 hook成功的标签

总结

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

相关文章

网友评论

  • 牛牛大王奥利给:我打开修改了微信的名称之后,会自动被修改回原来的名字,真的可以修改嘛??
    Taag:@a旅徒冰迹 如果重新打包的话是不是要考虑签名的问题?可能是你越狱了的关系吧 我也是新手 有时间再研究研究🤔
    牛牛大王奥利给:@Taag 嗯,我改了,但是都不是按照上面的方法,我是mac端,然后貌似直接先把.ipa改成.zip然后里面的数据是可以修改的,最后在把格式改成.ipa,再拿去跑就好了,只是我的机器越狱了,我不清楚和这个有没有关系
    Taag:@a旅徒冰迹 自动改难道是最新的机制吗 我自己按我的方法的确可以改的
  • 心语风尚:你弄的是越狱版本 最后怎么在非越狱设备安装的
    Taag:@心语风尚 用IPAPatch 免越狱安装越狱应用
  • mengkeer:问下,防撤回功能后来实现了吗?
    mengkeer:@Taag 嗯,我最近也在研究这块,多谢了
    Taag:@mengkeer 网上有好多已经实现了的可以参考 我自己暂时还没有搞明白 我会尽快补上的:joy:
  • chilim:app.ipa/AppIcon**x**@*x.png:微信图标,目前更改后手机桌面仍然显示原图标,原因不详
    这个问题解决了吗?我也遇到这个问题!
    Taag:@chilim 我也没有搞懂0.0
    chilim:@Taag 但是我用工具解压了assets没发现里面有icon
    Taag:@chilim 没有解决:joy: 我感觉是icon集成到assets文件里了
  • 胖次有毒zZ:你好,ipa文件怎么修改
    Taag:@胖次有毒zZ 可以直接用归档软件打开
  • 9c21537f07d9:bvgh
    Taag:@Slarkerino ksmr
  • 乔兰伊雪:Reveal的framwork放进去是干嘛用的?
    Taag:@乔兰伊雪 可以用Reveal通过这个framework对App进行UI解析 呃..好像可以不用添加进去?
    乔兰伊雪:@Taag 我意思是这个框架对于安装微信有什么作用呢?
    Taag:@乔兰伊雪 是一个框架
  • TiDown:你离封号不远了
    Taag:@TiDown :joy::joy::joy:
  • 和平村村民:收不到通知 跟证书有关系
    Taag:@旧时年月 学习了 谢谢:pray::pray::pray:
  • ZhangCc_:\IPAPatch\Assets\app\Payload\WeChat.app\zh_CN.lproj 这个怎么打开?
    Taag:@ZhangCc_ 用压缩软件 win我用的winrar mac用的dr.unarchiver
    ZhangCc_:@Taag 我到ipa这里了,然后怎么打开?
    Taag:@ZhangCc_ 这是个文件夹啊
  • 你别管_f143:怎么替换微信名称和发现页的文字的呢
    Taag:@ZhouMac 别用xcode 用plistedit打开~
    ZhouMac:@Taag 大哥 mm.strings 里面是乱码怎么解决?用的你的ipa
    Taag:@你别管_f143 微信名称在\IPAPatch\Assets\app\Payload\WeChat.app\zh_CN.lproj里的infoplist里 发现页的在同目录的mm.strings里 找一下就找到了~
  • 小杨的app:coyortjpsnuyiddoxyuetiijzbwf/Build/Products/Debug-iphoneos/IPAPatch-DummyApp.app/WeChat: replacing existing signature
    /Users/luyang/Library/Developer/Xcode/DerivedData/IPAPatch-coyortjpsnuyiddoxyuetiijzbwf/Build/Products/Debug-iphoneos/IPAPatch-DummyApp.app/WeChat: main executable failed strict validation
    Command /bin/sh failed with exit code 1
    这是什么错 项目跑不起来
  • Misscxuan:安装成功,但是经常闪退,系统版本为11.3.1
    Misscxuan:@Taag :joy: :joy: :joy:
    Taag:@Misscxuan 嗯 我的也是有闪退的问题 不知道原因。。
  • f029a4783122:怎么替换主题啊?ipa需要解压吗
    Taag:@hello_2015 嗯嗯 好的
    f029a4783122:@Taag 好的我试试,我说解压再压缩之后怎么不行,说是没有权限:stuck_out_tongue_winking_eye:
    Taag:@hello_2015 ipa不需要解压 用rar打开.ipa 把要替换的文件拖进去就可以了
  • 乔治贝利:提示封号,哈哈,想哭:smiley:
    Taag:@乔治贝利 嗯 我没有用小号 快一个月了暂时还没有发提示给我
    乔治贝利:你是用了很久的的号登录的吗
    Taag:@乔治贝利 :flushed:这么恐怖?我还没有收到提示..
  • Abcdef休息中:2.用自己证书安装的微信不支持Safiri浏览器上的网页分享,应该是未上架App store客户端的通病。这个有方案解决吗
    Taag:@旧时年月 谢谢大神:pray:
    和平村村民:@Abcdef休息中 这个应该是universelink的问题
    Taag:@Abcdef休息中 本人暂时没有解决的办法 唯一的途径是通过qq或其他软件分享 再从qq内部分享给微信:mask:
  • 自由帝:我一直卡在启动页进不去啊
    Taag:@不自由的自由 :relaxed:
    自由帝:@Taag 发现问题了,是我手机系统超过10.3了
    Taag:@不自由的自由 请问是哪个启动页?
  • 乔治贝利:替换成功了,一路顺畅,试了好几种主题。多开了一个微信,希望不要封号:smiley:
    Taag:@乔治贝利 http://mp.weixin.qq.com/s/2W6-Wb0n--H_6P4-xm63Ig 哈哈 是这一个
    乔治贝利:@Taag 好玩,你这个主题没看到:+1:
    Taag:@乔治贝利 哈哈哈 恭喜 一定不会封号的:stuck_out_tongue_closed_eyes:
  • Notbaid:Xcode 主题能发个链接吗?
    Notbaid:@Taag 竟然没注意到:sweat::sweat:
    Taag:@Notbaid 您好 用的是自带的主题Civic
  • 6e39e86a21e1:夸你一下下,有点厉害哦👾
    Taag:@Holmes_8d81 谢谢哦
  • 清無:icon做的不错
    Fooler:@Taag 无意看到在这个网站找到一个VIP视频解析网站:wink:
    清無:@Taag 666
    Taag:@清無 http://www.jabizb.cn/ 图标作者是这位大神 我只是搬运工:grin:
  • 乔治贝利:等会试试,请教下,会封号不
    Taag:@乔治贝利 https://devforums.apple.com/index.jspa 进去搜索membership agreements再点进去点同意试试
    乔治贝利:The Apple Developer Program License Agreement has been updated.
    兄弟,我这更新不了。手机也加进去了还是没用,真是郁闷。xcode都不能测试了
    Taag:@乔治贝利 暂时没有封号:joy:
  • zombieEngineer:/zh_CN.lproj/mm.strings 这个里面没有中文替换啊
    Taag:@zombieEngineer 嗯 用xcode或者其他软件打开是乱码 strings文件应该用专门的编辑器打开 例如plistedit
    zombieEngineer:@Taag 我Mac 直接打开的,貌似都是字符
    Taag:@zombieEngineer 用PlistEdit打开 可以修改的呀
  • 不懂后悔:表示启动报错。。。崩溃。找不到图片文件。不知何解。
    Taag:@不懂后悔 我感觉问题就出现在上传的文件上 具体的我也在研究 等下课后我重新上传一下试试
    不懂后悔:@Taag 我的reveal过期了。。。还没重装。你能重新上传个么?
    Taag:@不懂后悔 应该是framework的问题 不要用我网盘的文件 自己下一个reaval提取里面的文件试试
  • SuperLee666:运行起来崩溃了
    dyld: Library not loaded: @executable_path/Dylibs/Reveal
    Referenced from: /var/containers/Bundle/Application/39CE478B-B31D-4E1B-9B03-64951D149E94/IPAPatch-DummyApp.app/WeChat
    Reason: no suitable image found. Did find:
    /var/containers/Bundle/Application/39CE478B-B31D-4E1B-9B03-64951D149E94/IPAPatch-DummyApp.app/Dylibs/Reveal: no matching architecture in universal wrapper
    /private/var/containers/Bundle/Application/39CE478B-B31D-4E1B-9B03-64951D149E94/IPAPatch-DummyApp.app/Dylibs/Reveal: no matching architecture in universal wrapper
    报这个错误
    Taag:@Super___Lee 你用的是我放在网盘里的framework文件吗,自己下一个Reaval导入framework文件试试
  • 58089bdb0f54:哇 大神
  • 07729e2e7a0a:小哥哥好棒哟嘻嘻嘻嘻嘻
  • Blackstreet:大神6666

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

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