免越狱tweak应用逆向开发

作者: WillkYang | 来源:发表于2017-02-01 21:40 被阅读2637次
    文章封面~忽略忽略~

    对于已越狱的设备,系统默认安装了mobilesubstrate动态库,提供一个系统级的入侵管道,所有的tweak都可以依赖它来进行开发。而对于没有越狱的手机,我们需要向目标app注入libsubstrate.dylib动态库,才能使程序在运行时加载我们编写的动态库。

    环境准备:
    sudo clone git://github.com/DHowett/theos.git /opt/theos
    
    sudo chmod 777 /opt/theos/bin/ldid
    
    • 配置dpkg-deb下载dm.pl,重命名为dpkg-deb后,放到/opt/theos/bin/
    sudo chmod 777 /opt/theos/bin/dpkg-deb
    

    编译安装 optool 工具,下载之后需要修改项目Build Setting中Base SDK项为当前系统sdk,否则可能编译报错:

    # 因为 optool 添加了 submodule,因为需要使用 --recuresive 选项,将子模块全部 clone 下来
    git clone --recursive https://github.com/alexzielenski/optool.git
    cd optool
    xcodebuild -project optool.xcodeproj -configuration Release ARCHS="x86_64" build
    #编译完成后建议将生成二进制文件放到/usr/local/bin目录下
    

    实现部分:
    1. 在tweak工程目录下编译代码,生成目标库:
    make
    

    可以在./.theos/obj/debug下找到生成的目标库xxx.dylib

    2.修改目标库依赖文件的相对地址:
    otool -L xxx.dylib
    
    修改前依赖库

    查看动态库的依赖库,图中可以看到两个架构的依赖库,其中大部分都是系统库,只有一个需要我们注入的库。由于

    /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate
    

    在实际设备上没有对应的文件,我们需要修改其地址为相对地址:

    install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib xxx.dylib
    

    如果系统显示的是/usr/lib/libsubstrate.dylib而不是/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate的话,使用以下命令:(命令中只有依赖地址不同,@loader_path指明相对地址。)

    install_name_tool -change/usr/lib/libsubstrate.dylib @loader_path/libsubstrate.dylib xxx.dylib
    

    完成之后我们再次查看依赖库:


    修改后依赖库

    可以看到,依赖库加载地址已经成功被修改

    3.注入xxx.dylib到目标应用中

    拷贝libsubstrate.dylib和我们编写的库xxx.dylib到需要hook的应用的zzz.app目录下,修改应用目录下二进制文件的zzz的Load Commands段:

    optool install -c load -p "@executable_path/xxx.dylib" -t ./zzz
    #注:zzz为二进制文件名
    
    4.重签名和打包应用:
    codesign -f -s ‘iPhone Developer: xxx(xxx)’ —entitlements xxx.entitlements zzz.app
    

    此处也可以简单的使用工具一步完成ios-app-signer生成ipa

    ios-app-signer应用截图
    5.使用itunes或pp助手或itool等方法安装食用~

    知识扩展链:

    移动App入侵与逆向破解技术-iOS篇
    免越狱版 iOS 抢红包插件
    iOS微信抢红包Tweak安装教程

    相关文章

      网友评论

      • 60c70272bd4b:您好,问下您这个逆向方法需要ios设备进行越狱操作么?
      • 布丶Ding:Incompatible library version: WeChat requires version 1.0.0 or later, but WeChatRedEnvelop.dylib provides version 0.0.0,闪退会报这个错,这个dylib的版本要怎么修改呢
      • smooth_lgh:在tweak工程目录下编译代码,生成目标库: make ?
      • smooth_lgh:optool:依赖注入工具 这里你没有细讲
        WillkYang:@做一只会思考的piger 这个在环境准备里边写了的。点击会跳转到工具的地址
      • iOS小王子:小哥,跟着你的步骤来了一次,打包进去闪退啊。是怎么回事。。。
        WillkYang:@iOS小王子 libsubstrate.dylib拷贝进去了吧,你手机连接xcode看一下应用的crash日志。
        iOS小王子:@WillkYang tweak直接安装在越狱机上是ok的。然后按照你的文章修改了相对地址, 用签名工具签名,装在非越狱机上,能安装,就是打开就闪退。我现在是定位不到哪一步出了问题。希望能帮助解决,先谢过了。
        WillkYang:先使用codesign —verify xxx.app看看app签名是否成功
        你是使用的什么签名方法。tweak是否确定没有问题?

      本文标题:免越狱tweak应用逆向开发

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