今天在整理东西的时候,无意间发现一个逆向微信的功能清单,想起来原来自己曾经还学过一些 iOS 逆向工程的皮毛知识。
![6302-c57787193e147020.jpeg](https://i-blog.csdnimg.cn/blog_migrate/8f86e23a91b4a4246f06252a3e3ad1ed.webp?x-image-process=image/format,png)
虽然答应了朋友最终没实现,但我还是想分享下我的经验和想法,最后顺便再看看【微信群 id】长什么样子的。
话不多说,开启本文的主旨:iOS 逆向开发的先导篇 —— tweak 编写之前的准备。
现在网上太多有关逆向微信的帖子了。我总不能和他们一样,也是说说什么是逆向,什么是 tweak之类的,这也太入俗套了。本文的顺序是:
- 要逆向微信,首先考虑的是如何注入我们编写的动态库和重签名,所以先从编写 Script 脚本开始;
- 如何利用 xcode 调试和执行 Script 在非越狱手机上安装微信;
- 编写 tweak 代码,生成动态库,来点实在的功能,如:防撤销等功能;
- 整理下工具以供开发使用。
编写 Script 脚本
#!/bin/bash
# 利用开发者证书申请一个 id
BUNDLEIDENTIFIER=com.meishu.ye
APPLICATIONIDENTIFIER=***.${BUNDLEIDENTIFIER}
WECHATFILEPATH=/Users/****/git/jailbreak/6.5.3/WeChat2
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib ./Debug-iphoneos/bot.dylib
ls
ORIGINDIR=$(pwd)
cp ./Debug-iphoneos/bot.dylib bot.dylib
cp ./libsubstrate.dylib libsubstrate.dylib
cp ./FontAwesome.otf FontAwesome.otf
cp ./WechatIMG1.png WechatIMG1.png
LIBNAME=$(find bot.dylib)
LIBSUBNAME=$(find libsubstrate.dylib)
FONTNAME=$(find FontAwesome.otf)
WECHATIMG1=$(find WechatIMG1.png)
# $(find *.dylib)
TEMPDIR=$(mktemp -d)
# 0.get argv
if [ x$1 != x ]
then
BUNDLEIDENTIFIER=$1
fi
# 1.unzip ipa
unzip -qo ${WECHATFILEPATH}/WeChat.ipa -d $TEMPDIR
# 2.copy files
cp ${WECHATFILEPATH}/embedded.mobileprovision $TEMPDIR/
cp ${WECHATFILEPATH}/entitlements.plist $TEMPDIR/
cp ${LIBNAME} $TEMPDIR/
cp ${LIBSUBNAME} $TEMPDIR/
cp ${FONTNAME} $TEMPDIR/
cp ${WECHATIMG1} $TEMPDIR/
# 2.1 rm origin WeChat 1月22日 begin
# rm $TEMPDIR/Payload/WeChat.app/WeChat
# cp ${WECHATFILEPATH}/WeChat $TEMPDIR/Payload/WeChat.app/
# 2.1 rm origin WeChat 1月22日 end
# 3.resign
cd $TEMPDIR
plutil -replace application-identifier -string ${APPLICATIONIDENTIFIER} entitlements.plist
plutil -replace CFBundleIdentifier -string ${BUNDLEIDENTIFIER} Payload/WeChat.app/Info.plist
mv ${FONTNAME} Payload/WeChat.app/
mv ${LIBNAME} Payload/WeChat.app/
mv ${LIBSUBNAME} Payload/WeChat.app/
#${WECHATFILEPATH}/insert_dylib --all-yes @executable_path/${LIBSUBNAME} Payload/WeChat.app/WeChat
#mv Payload/WeChat.app/WeChat_patched Payload/WeChat.app/WeChat
#chmod +x Payload/WeChat.app/WeChat
${WECHATFILEPATH}/insert_dylib --all-yes @executable_path/${LIBNAME} Payload/WeChat.app/WeChat
${WECHATFILEPATH}/optool i