zoukankan      html  css  js  c++  java
  • 免越狱tweak应用逆向开发

    文章封面~忽略忽略~

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

    访问:http://www.jianshu.com/p/cd1f8ae46a3c获得更好的阅读体验~

    环境准备:
    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安装教程

  • 相关阅读:
    oracle 同义词
    Git分支操作
    [转]Hibernate状态 (merge,attachDirty,attachClean)
    [转]对jQuery的事件绑定的一些思考
    [转]为什么用Spring来管理Hibernate?
    [转]spring注入静态bean
    ajax 请求调用问题
    Java常用开发组件介绍
    Spring @Value SpEl 知识点小记
    radio中最佳解决方案
  • 原文地址:https://www.cnblogs.com/yate1996/p/6376008.html
Copyright © 2011-2022 走看看