IT/互联网Mac·iOS开发生活和工作

iOS逆向:实现功能最全的微信插件

2019-07-23  本文已影响82人  腾飞tengfei

对于iOS开发者来说,iOS逆向工程并不陌生。本文主讲的是逆向微信,实现目前较全的实用的功能:“自动抢红包,修改微信运动步数,伪定位(朋友圈和附近的人),屏蔽消息和群消息,过滤群,防撤回消息和信息内容页的背景透明等”。

免责声明

tweak

tweak 定义是:对复杂的系统—通常是电子设备—进行微调或修改来增强其功能。而在 iOS 当中,tweak 是指那些能够增强其它进程功能的 dylib。可以将 tweak 理解为一个外挂,只不过这个外挂是以动态链接库的方式注入到目标应用当中。我们已经了解外挂其实就是用来作一些原本的应用无法做到的事情。

安装 theos

theos 是一个越狱开发工具包,它可以生成 iOS 越狱APP以及tweak等程序的框架,并提供makefile来编译、打包和安装。

export THEOS=/opt/theos
# 如果之前已经安装过 theos,请先删除,然后下载最新版
rm -rf $THEOS
sudo git clone --recursive https://github.com/theos/theos.git $THEOS

ldid是用于对 iOS 可执行文具进行签名的工具,可以在越狱 iOS 中替换 Xcode 自带的签名工具。

http://joedj.net/ldid 下载,将其移动到 /opt/theos/bin 目录下,然后设置可执行权限。

cd <下载ldid的目录>
sudo mv ldid /opt/theos/bin
sudo chmod 777 /opt/theos/bin/ldid

Hook常用工具

获取砸壳版本的微信

将 Cluth 仓库 clone 到本地:

$ git clone https://github.com/KJCracks/Clutch
$ cd Clutch

使用 Xcode 进行构建,得到可执行文件:

$ xcodebuild -project Clutch.xcodeproj -configuration Release ARCHS="armv7s arm64" build

将可执行文件 clutch 拷贝到手机上:

$ scp Clutch/clutch root@<your.device.ip>:/usr/bin/

先 ssh 到越狱手机上,然后查看当前安装的应用:

$ ssh root@<your.device.ip>
$ clutch -I

# Installed apps:
# 1: WeChat <com.tencent.xin>
# 2: DingTalk <com.laiwang.DingTalk>

开始砸壳

$ clutch -d com.tencent.xin

# com.tencent.xin contains watchOS 2 compatible application. It's not possible to dump watchOS 2 apps with Clutch 2.0.4 at this moment.
# Zipping WeChat.app
# Swapping architectures..
# ASLR slide: 0xb3000
# ...
# writing new checksum
# DONE: /private/var/mobile/Documents/Dumped/com.tencent.xin-iOS9.0-(Clutch-2.0.4).ipa
# Finished dumping com.tencent.xin in 76.9 seconds

将砸完壳的ipa包拷回电脑上

$ mv /private/var/mobile/Documents/Dumped/com.tencent.xin-iOS9.0-\(Clutch-2.0.4\).ipa /private/var/mobile/Documents/Dumped/wechat.ipa
$ scp root@<your.device.ip>:/private/var/mobile/Documents/Dumped/wechat.ipa ~/Desktop

微信插件开发

注入库和重签名打包

$ cd /Users/dyf/Desktop/XApleSysCalcService
$ make
$ cp .theos/obj/debug/XApleSysCalcService.dylib ~/Desktop 

# 直接打开目录,拷贝或拖动dylib库至桌面
# $ open .theos/obj/debug/
$ lipo libsubstrate.dylib -remove armv7 -output ./libsubstrate.dylib
$ lipo -info libsubstrate.dylib
$ lipo XApleSysCalcService -remove armv7 -output ./XApleSysCalcService
$ lipo -info XApleSysCalcService
$ otool -L XApleSysCalcService
$ install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/XApleSysSubstr XApleSysCalcService
$ otool -L XApleSysCalcService
$ /Users/dyf/Desktop/WeChat_tweak/Hook-Tools/optool install -c load -p "@executable_path/XApleSysCalcService" -t ./WeChat
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/PlugIns/WeChatShareExtensionNew.appex
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/PlugIns/WeChatSiriExtension.appex
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/PlugIns/WeChatSiriExtensionUI.appex
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/Frameworks/mars.framework
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/Frameworks/MMCommon.framework
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/Frameworks/WCDB.framework
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/Frameworks/MultiMedia.framework
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/XApleSysCalcService 
$ codesign -f -s "iPhone Distribution: XXX (5WQHRCQ7JQ)" Payload/WeChat.app/XApleSysSubstr
$ ./DYFCodesign.sh /Users/dyf/Desktop/Payload "iPhone Distribution: XXX (5WQHRCQ7JQ)" /Users/dyf/Desktop/wcp_adhoc.mobileprovision
$ xcrun -sdk iphoneos PackageApplication -v Payload/WeChat.app -o ~/Desktop/WeChat_New.ipa

iOS逆向交流

参考文章

技术交流群(群号:155353383)

欢迎加入技术交流群,一起探讨技术问题。


群号:155353383

如果你觉得能帮助到你,请去Github项目给一颗小星星。谢谢!(If you think it can help you, please go to the github project and give it a star. Thanks!)

上一篇下一篇

猜你喜欢

热点阅读