美文网首页iOS 道路之行
3.iOS渗透之逆向WeChat(无需越狱)

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

作者: 清水川崎 | 来源:发表于2018-03-14 20:28 被阅读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

    相关文章

      网友评论

      • 小小冠:楼主。。。坦白讲。我的微信被封了。:cold_sweat:
        小小冠:@清水川崎 嗯嗯。前几天用pp助手下载越狱版微信的。版本:6.6.6 类别:社交 大小:140.91MB 时间:2018-04-25。能把你用的那个越狱版ipa文件也放网盘吗?感谢
        清水川崎:@小小冠 用的好好的。没问题啊。还是用的最新版的微信注入了
      • 大锤爱学习:那个远程控制是什么功能啊?看你文档上没有解释怎么用哦。。
        清水川崎:@Crown_ffdc 不会封!5.7已经测了
        大锤爱学习:@清水川崎 这样啊。跳过微信检测封号 楼主有好的方案吗?或者说这个方案会被封不。。
        清水川崎:@Crown_ffdc 配合Mac电脑使用,然后控制锁屏,网易云音乐上下曲。
      • 馒头压扁就是饼:你好 手机是不是需要越狱才能装上啊
        馒头压扁就是饼:@清水川崎 用越狱的微信ipa 逆向生成的ipa。装不上没越狱的手机。目前我遇到的问题。
        清水川崎:@馒头压扁就是饼 有Xcode按照步骤来,完全没问题
        清水川崎:@馒头压扁就是饼 你不看标题就来问,我最讨厌伸手党!
      • 馒头压扁就是饼:链接打不开了
        清水川崎:@馒头压扁就是饼 已经更新
      • zombieEngineer:有没有代码啊
        清水川崎:@zombieEngineer 代码不能给。还有越狱版的qq也不能打出头文件,你可以classdump试试。不好意思啊。
        zombieEngineer:@清水川崎 直接找越狱的ipa 就可以了,可以私聊发我下代码么?我研究研究,对逆向感点兴趣,谢谢~
        清水川崎:@zombieEngineer 不公开代码是因为,防止腾讯做代码混淆已经加壳。qq已经不能砸壳,打出头文件了。
      • 静若517:完全看不懂
        大锤爱学习:有兴趣可以研究下
        清水川崎:@静若517 这是我们计算机的专业文章。你只需要看最终实现的效果就行了。
      • 42e6f2848772:爱你,胖砸
        清水川崎:@嘻嘻king 加油你是最胖的!

      本文标题:3.iOS渗透之逆向WeChat(无需越狱)

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