iOS逆向第四篇(dylib动态库注入和重签名打包)

在以前的文章中已经介绍过砸壳、Tweak创建动态库等逆向开放相关知识,今天主要介绍怎么把一个dylib的动态库注入到第三方项目中、重签名打包实现多开功能。

介绍这部分是为了接下来微信自动抢红包做准备,敬请期待…

我们今天实现一个简单的小功能,在进入微信的登录页面,谈一个框,效果如下:

《iOS逆向第四篇(dylib动态库注入和重签名打包)》 001.jpg

  • 创建Tweak项目

    这里我们以前已经讲过,在这不做详细介绍,可以到我微信公众号: 乐Coding记录中查看。

  • 修改Tweak.xm文件,然后make package编译。

    %hook WCAccountMainLoginViewController
    - (void)viewDidLoad {
        %orig;
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"测试"
                    message:@"你成功了"
                    delegate:self
                    cancelButtonTitle:@"Cancel"
                    otherButtonTitles:@"OK",nil];
        [alert show];
    }
    %end
    
  • 编译成功后在工程的.theos/obj/debug(.theos是个隐藏目录)目录下会找到我们需要的动态库.dylib结尾的文件

  • 修改动态库依赖

    • 查看动态库依赖项
    otool -L WXRedPackage.dylib
    

    ​ 结果信息如下:

    《iOS逆向第四篇(dylib动态库注入和重签名打包)》 002.png

​ 结果中有一段越狱手机中才会用到的CyduaSubstrate库。

我们需要用 libsubstrate.dylib替换这个库。

  • 先查看Theos安装目录/opt/theos/lib中是否有 libsubstrate.dylib文件,如果没有可以到https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 下载。

  • 使用install_name_tool修改动态库的路径,指向 app 二进制文件的同级目录

    install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WXRedPackage.dylib
    
  • 修改后再次查看动态了依赖项

    otool -L WXRedPackage.dylib
    

    执行结果如下,如果原来库文件路径变成了新的相对路径说明成功。

《iOS逆向第四篇(dylib动态库注入和重签名打包)》 003.png

  • 将动态链接库注入二进制文件中

    如果电脑中没有optool可以从https://github.com/alexzielenski/optool下载,因为opool添加了submodule,所以建议使用一下命令clone

    git clone --recursive https://github.com/alexzielenski/optool.git
    

    然后用Xcode打开编译后,把Product目录下的optool二进制文件拷贝到/usr/local/bin目录下。

    • 拷贝libsubstrate.dylib和我们自己编写并修改过的WXRedPackage.dylib拷贝到WeChat.app目录下

    • 修改微信二进制文件加载Load Commands段

      optool install -c load -p "@executable_path/WXRedPackage.dylib" -t WeChat.app/WeChat
      

      执行结果如下:

      《iOS逆向第四篇(dylib动态库注入和重签名打包)》 004.png

  • 重签名打包

    在开始打包之前,请先将 WeChat.app 里面的 Watch 目录删除,这个目录是跟 Watch 有关的,如果不删除的话,在越狱手机上可以,但是我的iPhone6上安装不成功。

    签名可以使用codesign -f -s 证书名字 目标文件命令,打包可以使用xcrun -sdk iphoneos PackageApplication -v WeChat.app -o $(pwd)/WeChat2.ipa命令。下面我们采用一个可视化的工具。

    使用iOS App Signer 他是开源的,大家可以在http://dantheman827.github.io/ios-app-signer/ 找到安装包和github源码链接。

    下载打开软件后如下图:

《iOS逆向第四篇(dylib动态库注入和重签名打包)》 005.png

  • Input File: 我们刚刚修改的微信.app文件 ,下面两个是证书信息。

  • 点击Start打包。

  • 下面可以用iTools或者PP助手安装

    《iOS逆向第四篇(dylib动态库注入和重签名打包)》 006.png

觉得不错请点击下方【喜欢】,为了微博认证也是无奈!还差1651个呢🤣

更多iOS、Swift、iOS逆向最新文章请关注微信公众账号:乐Coding,或者微信扫描下方二维码关注

《iOS逆向第四篇(dylib动态库注入和重签名打包)》 lecoding

icon.jpg

    原文作者:LvesLi
    原文地址: https://www.jianshu.com/p/b1822a77b827
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞