iOS 道路之行

3.iOS渗透之逆向WeChat(无需越狱)

2018-03-14  本文已影响993人  清水川崎

微信作为一款大部分人重度使用的app,自然而然会有特别多的人对它有研究兴趣,我也不例外。好在今天终于成功了。实现了自动抢红包、虚拟定位、消息防撤回、修改运动步数。对我来说,抢红包是一个非常实用的功能,防撤回对付一些很烦的人也非常有用。
那么我们开始吧。

1.准备工作
首先我们需要准备如下工具:
(1)砸了壳的原版微信安装包(ipa格式)
(2)iOS重签名工具
(3)开发者账号,是否付费无所谓
砸壳app的ipa安装包很好找到,你有闲心可以去我前面的章节寻找怎么砸壳,如果没有你去装一个pp助手电脑版下载一个越狱应用就行。
PP助手越狱应用

下完以后放到你的Mac上。
使用iOS重签名工具是因为,我们修改了微信以后,它不再带有苹果的授权证书,自然无法安装和运行。所以我们需要签上我们自己的开发者证书。


iOS重签名工具

开发者账号自然是为了能有开发者证书,所以才准备的。

2.代码编写

我们需要用cycript对微信各功能的UI元素进行动态分析,分析出哪一个功能用了哪些class,再配合class-dump打出来的头文件进行验证,最后利用ida pro的静态分析它的具体实现内容,利用hook技术写出dylib。这个过程非常繁琐,这里我直接丢出已经生成好的dylib。


dylib

dylib又叫动态注入库,它可以使用工具直接注入到微信app的二进制文件中。
其实,ipa安装包本质是一种苹果设立的压缩包格式,完全可以解压。
解压以后,长下面那个样子


ipa解压

起到重要作用的就是Payload文件夹中的文件。


Payload
Payload文件中的这个文件,本质也是一个压缩包
二进制压缩包
图中那个红色标注的名为WeChat才是实际运行在iOS平台上面的app程序主体。
而我们则是需要将dylib注入到里面去。
3.开始注入

我们利用自动注入脚本进行注入。
首先我们打开iTerm进入到脚本目录


脚本目录

脚本代码如下:

# !/bin/bash
# 使用  ./autoInsertDylib.sh  ipa文件路径  dylib文件路径  eg: ./autoInsertDylib.sh wechat.ipa robot.dylib

shell_path="$(dirname "$0")"

SOURCEIPA="$1"
DYLIB="$2"
LIBSUBSTRATE="${shell_path}/libsubstrate.dylib"

temp_dir="${shell_path}/tweak-temp-tk"
ipa_bundle_path="${temp_dir}/${SOURCEIPA##*/}"
libsubstrate_path="${temp_dir}/${LIBSUBSTRATE##*/}"
dylib_path="${temp_dir}/${DYLIB##*/}"

framework_path="${app_bundle_path}/${framework_name}.framework"
rm -rf ${shell_path}/../Products/*
mkdir ${shell_path}/../Products/
if [ ! -d ${temp_dir} ]; then
    # echo "创建 ${temp_dir}"
    mkdir ${temp_dir}
fi

cp "$SOURCEIPA" "$DYLIB" "$LIBSUBSTRATE" ${temp_dir}

# cd "$shell_path"

echo "开始注入dylib >>> \n\n\n"
# echo "正将" ${SOURCEIPA##*/} ${DYLIB##*/} ${LIBSUBSTRATE##*/}  "拷贝至/tweak-temp-tk"

otool -L ${dylib_path} > ${temp_dir}/depend.log
grep "/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate" ${temp_dir}/depend.log >${temp_dir}/grep_result.log
if [ $? -eq 0 ]; then
    # echo "发现有 ${DYLIB##*/} 依赖于 CydiaSubstrate, 正将其替换为 libsubstrate"
    install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib ${dylib_path}

# else
    # echo "没有发现依赖于CydiaSubstrate"
fi

# echo "解压" ${SOURCEIPA##*/}

unzip -qo "$ipa_bundle_path" -d ${shell_path}/extracted

APPLICATION=$(ls "${shell_path}/extracted/Payload/")
app_path="${shell_path}/extracted/Payload/${APPLICATION}"

# cp -R ${app_path} ./

# rm -rf ~/Desktop/temp/extracted/Payload/$APPLICATION/*Watch*
cp "${shell_path}/popup_close_btn.png" ${app_path}
cp ${dylib_path} ${libsubstrate_path} ${app_path}

# echo "删除" ${APPLICATION##*/} "中 watch 相关文件"

rm -rf ${app_path}/*watch* ${app_path}/*Watch*

# echo "注入" ${DYLIB##*/} "到" $APPLICATION
${shell_path}/insert_dylib  @executable_path/${DYLIB##*/} ${app_path}/${APPLICATION%.*} > ${temp_dir}/insert_dylib.log

echo "注入成功 !!!"

rm -rf ${app_path}/${APPLICATION%.*}
mv ${app_path}/${APPLICATION%.*}_patched ${app_path}/${APPLICATION%.*}

cp -R ${app_path} ${shell_path}/../Products/${APPLICATION}

# echo "删除临时文件 >>>"
rm -rf ${shell_path}/extracted ${temp_dir}

# echo "打开 tweak-temp-tk 文件夹"
open ${shell_path}/../Products/
# open /Applications/iOS\ App\ Signer.app

autoInsertDylib.sh
好在已经写好了,我们直接使用即可
格式如下:
./autoInsertDylib.sh ipa文件路径 dylib文件路径
我这里命令为
./Others/autoInsertDylib.sh ./wejalibreak.ipa ./robot.dylib
读者根据自己的情况自行调节
注入完后以后,Products文件夹会自动打开,里面就是生成好的Payload文件夹中的二进制文件压缩包。
二进制文件压缩包
4.重新签名并打包

这里我们需要先用Xcode新建一个项目,设置一下下面三个地方


新建项目并设置

设置完以后,我们用数据线将iPhone和Mac连接,并真机调试这个项目,目的是为了将我们这个项目的证书导入到我们的iPhone中,方便安装我们修改好的微信。
调试完成以后,我们就可以进行重签名。


重签名设置
这里设置必须和上面那个新建项目保持一致。设置ok以后,我们点击start会提示选择输出ipa安装包的位置,我们任意选择一个就行了。
生成以后的新安装包,我们就可以安装到我们的手机了。

我们打开Xcode,点击Window即可看到如下选项


真机和模拟器管理
我们点击+号即可安装我们重新生成的微信安装包
安装ipa
这时,你的iPhone上面会有两个微信。
截图
新出现的微信可以和原来的共存,你可以进去以后,点设置会多出一个Plugin选项。
Plugin
Plugin
到此,我们逆向微信完成。

看看效果


防撤回
运动步数修改
虚拟定位
抢红包功能也没问题,就不截gif了。
教程所涉及的重签名工具,脚本,以及dylib动态注入库,请到如下链接下载。而砸壳的原版app,请自行下载pp助手电脑版下载即可。

https://pan.baidu.com/s/19BwaXeJCOnvgpsfIKu7Flw 密码:EkP5

上一篇 下一篇

猜你喜欢

热点阅读