文章目录

  • 安装brew
  • 添加环境变量
  • 安装 theos
  • 如果递归安装报错 443 没有权限下载,请查看我写的这篇文章,可以帮你分开下载子模块
  • 新建theos项目
  • usb ssh登录手机root账户
  • 获取app的bundleID
  • 执行theos指令nic.pl
  • hook功能选择tweek
  • 设置hook文件
    • 设置makefile文件
  • 使用frida脱壳app
  • 使用frida脱壳成功以后获得脱壳后使用class-dump导出.h头文件
  • 使用Reveal 定位要改的视图class名字
  • 把hook代码写入带app中
  • 把上面的编译安装操作编写成sh脚本
  • 添加环境变量的方法:
  • 删除掉hook代码

安装brew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

使用brew安装 ldid

brew install ldid

添加环境变量

 open ~/.zshrc

注意,mac新版系统环境变量不再是~/.bash_profile

在文件里添加一行,新建环境变量THEOS,让这个变量等于你硬盘下存储theos的文件路径,例如我存到下面的路径里,PATH是把theos安装文件夹下的bin当做默认可执行目录,在任意位置都能执行theos文件夹下bin下的文件,
因为这个bin目录下的nic.pl会创建文件到bin目录下,并且bin目录下不允许用nic.pl创建文件,所以要把bin目录添加的PATH环境变量,这样就可以在其他文件夹下执行bin下的文件nic.pl了

export THEOS=/Volumes/SN7501T/越狱相关代码/theos
export PATH=$THEOS/bin:$PATH
冒号:$PATH是引用以前的PATH值,冒号是添加
把冒号左边的添加到PATH里面,如果不加:$PATH,就会把$PATH覆盖

让文件~/.zshrc生效

source ~/.zshrc

安装 theos

使用递归下载 git clone --recursive加github地址 加刚才的环境变量$THEOS,把theos 下载到你的硬盘上

 git clone --recursive  git@github.com:theos/theos.git $THEOS

如果递归安装报错 443 没有权限下载,请查看我写的这篇文章,可以帮你分开下载子模块

git clone --recursive递归下载github出现443子模块无权限下载的解决方法
安装完以后,因为上面设置了环境变量$PATH,所以现在在任何目录下,都可以执行nic.pl指令,注意这个指令不要再theos文件夹下执行

新建theos项目

安装好以后执行在任意目录下执行.theos/bin目录下不能执行这条命令,会提示在你其他目录新建项目

nic.pl

出现下面界面代表已经安装成功

usb ssh登录手机root账户

运行要hook的app ,例如下面这个app neteasemusic

cycript -p neteasemusic

获取app的bundleID

[NSBundle mainBundle].bundleIdentifier

获得id :com.netease.cloudmusic

执行theos指令nic.pl

在mac端新建一个文件夹,在里面输入命令

nic.pl

会列出一个列表

tdw@tdwdeMini-m1 hook % nic.pl
NIC 2.0 - New Instance Creator
------------------------------[1.] iphone/activator_event[2.] iphone/activator_listener[3.] iphone/application_modern[4.] iphone/application_swift[5.] iphone/control_center_module-11up[6.] iphone/cydget[7.] iphone/flipswitch_switch[8.] iphone/framework[9.] iphone/library[10.] iphone/notification_center_widget[11.] iphone/notification_center_widget-7up[12.] iphone/preference_bundle_modern[13.] iphone/theme[14.] iphone/tool[15.] iphone/tool_swift[16.] iphone/tweak[17.] iphone/tweak_with_simple_preferences[18.] iphone/xpc_service[19.] iphone/xpc_service_modern
Choose a Template (required):

hook功能选择tweek

选择 iphone/tweak的位置 输入16

Project Name (required): 是自己起的项目名: music
Package Name 是你自己起的bundle名字
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: 这个输入上面用cycript获取的要破解的app的bundleID
下面的都输入回车就行了,显示如下,出现Done.代表新建项目完成

Project Name (required): music //自己起的项目名
Package Name [com.yourcompany.music]: com.tdw.music //自己起的包名
Author/Maintainer Name [谭迪文]:
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.netease.cloudmusic //app原来的bundle ID
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:
Instantiating iphone/tweak in music/...
Done.

建立好以后这个文件夹是这样出来4个文件,如下图:

设置hook文件

设置makefile文件

用Sublime Text打开Makefile文件,添加2个环境变量,因为用usb链接的,所以就填写localhost的本机ip:127.0.0.1 ,端口是usb映射的端口,我映射的是20000

export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=20000


也可以把这两行添加到环境变量里,这样就不需要每次makefile都添加这2行了

open ~/.zshrc

然后再里面添加这2行,再让文件生效

source ~/.zshrc

修改
打开Tweak.x文件,把里面开头结尾的注释符号手动去掉,然后选择objective-C查看文件,如下图

使用frida脱壳app

我写的这篇文章内容详细写了如何脱壳
ios脱壳工具frida使用教程和各种踩坑总结(app store可用脱壳)
是否需要脱壳,请直接查看上面这篇文章最下面,使用otool macho-文件名 -l | grep crypt 指令查看app是否加密
使用frida之后会在frida-ios-dump-master文件夹下获得.ipa文件如下图
把.ipa文件重命名为.zip文件,然后解压缩,如下图

在解压缩之后的文件夹下会找到脱壳后的包.
用终端进入这个包的目录,执行命令

class-dump -H 包名 -o 导出目录名

例如:
class-dump -H neteasemusic -o headers

使用frida脱壳成功以后获得脱壳后使用class-dump导出.h头文件

我在下面这篇文章中写了如何使用class-dump导出.h文件
ios逆向工具Class-dump的安装和导出.h文件的教程
执行class-dump后,会在包的目录下找到,我们导出的目录headers,里面有这个app的.h头文件,如下图:

使用Reveal 定位要改的视图class名字

reveal的使用教程请查看我写的下面这篇文章
ios逆向视图查看器Reveal安装和使用教程
例如,我要改的视图是这个class: NMHomeBannerEntityCell

我把上面用class-dump导出的.h文件中找到这个.h文件,把所有.h文件的文件夹拖拽进Sublime Text中,然后command+p,搜索:NMHomeBannerEntityCell.
查找到NMHomeBannerEntityCell.h文件
在里面,找到,我要改的方法,例如我修改init方法

- (id)initWithFrame:(struct CGRect)arg1;

我把,类名NMDiscoveryBannerView,复制进theos创建的Tweak.x文件中的%hook 后面,代表要hook的class名,删掉文件中的其他方法,再复制刚才.h文件中要改的方法名,在这个方法名,写入你自己要修改的方法.我在下面方法里面添加一个红色的view,在里面加了一个label文字

%hook NMDiscoveryBannerView
- (id)initWithFrame:(struct CGRect)arg1{return nil;
}
%end

把hook代码写入带app中

确保此时 usb连接越狱手机的root账户没有断开,如果断开重新连接
.在mac上theos创建的Makefile文件所在的项目文件夹下,终端执行 make编译文件

make

执行生成deb包的指令make package包含了 make的编译操作,所以第一步make可以省略

 make package

安装到手机中

make install

会提示是否安装输入yes
安装完以后会在手机目录下出现两个文件,文件名字就是你起的项目名,例如下图用ifunbox查看多了2个文件:
music.dylib
music.plist

每次启动app都会加载这2个文件,执行自己hook代码代替原来app的方法

把上面的编译安装操作编写成sh脚本

make clean是清除之前编译结果,要不然如果代码没改变,就不会重新编译.
把下面的代码存入到 .sh文件中,例如保存成:theos.sh
debug 版本

make clean && make package && make install

release 版本

make clean && make package debug=0 && make install

然后把这个theos.sh的文件所在路径添加到环境变量中,就可以在任何地方执行这个theos.sh文件

添加环境变量的方法:

open ~/.zshrc

然后在里面添加一行,例如theos.sh文件的所在位置是JailBreak

export PATH="JailBreak:$PATH"

然后让.zshrc文件生效

source ~/.zshrc

删除掉hook代码

删掉 手机目录 Device/Library/MobileSubstrate/DynamicLibraries 下面的上面2个文件,启动app的时候就不会加载hook代码,而是变成默认的app

ios逆向工具theos安装和使用tweak替换和卸载相关推荐

  1. iOS逆向工具-Theos

    阅读此文前,请确保iOS设备已越狱,否则一切都是空谈! 1.环境安装 a.指定xcode(根据自己xcode路径来): sudo xcode-select -s/Applications/Xcode. ...

  2. ios逆向工具MonkeyDev简介

    MonkeyDev简介 虽然是美国的苹果开发的操作系统,但是要论越狱iPhone和逆向分析来说,那国内远胜于米国了,可能是国内很多相关的灰色产业链吧.在之前,我们想动态调试一个没有源码的应用程序,通常 ...

  3. ios逆向学习环境安装(一)

    1.Xcode 历届版本:https://developer.apple.com/documentation/xcode-release-notes AppStore中搜并安装XCode & ...

  4. ios逆向工具Class-dump的安装和导出.h文件的教程

    目录 官网文件安装方法 运行报错 Cannot find offset for address xxx in stringAtAddress: 解决运行报错的版本下载地址: 获取app文件 class ...

  5. IOS逆向之frida安装

    首先手机要越狱,这个就不说了,博主就是咸鱼搞了个160的苹果6, 自己刷到苹果6支持最新的12.5.7版本后越狱: 谁让他低版本,不支持 CrackerXI砸壳呢,当时你要是使用 frida-ios- ...

  6. 安卓逆向工具apkide安装

    https://down.52pojie.cn/Tools/Android_Tools/ 下载完 解压即可使用 可以进行逆向分析,搜索等操作

  7. 2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程——使用theos tweak 注入hook修改游戏执行代码上传动态头像

    2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程--使用theos tweak 注入hook修改游戏执行代码上传动态头像 开篇 需求&最终效果 环境要求与即将使用的 ...

  8. iOS逆向工程之Theos

    iOS逆向工程之Theos 如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,T ...

  9. IOS逆向学习-Tweak

    IOS逆向学习-Tweak 1. theos指令及可能遇到问题 2. thes的实战练习 2.1 将桌面的更新数字去掉 2.2. 给微信发现界面增加两行功能 2.2.1 hook代码语法知识 2.2. ...

  10. 逆向工具安装使用测试

    传统的对iOS逆向的工具要使用到下面很多: otool keychain-dumper sqlite dumpdecrypted class-dump-z Theos 但国外有很多团队研发了很多优秀的 ...

最新文章

  1. 智源社区2022新版体验:订阅讲座日历、关注顶尖专家、开启个人频道
  2. ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
  3. Android5.1.1 - zygote中获取系统服务时抛出异常
  4. Understanding CMS GC Logs--转载
  5. 描述最常用的5种http方法的用途_对不起,来晚了,这可能是设计模式讲的最通俗易懂的文章(收藏)
  6. 结对编程前对队友程序的分析与对比总结
  7. 【算法竞赛学习】金融风控之贷款违约预测-赛题理解
  8. 结构与算法(05):二叉树与多叉树
  9. php中文字怎么上下居中,CSS怎么设置垂直居中?
  10. Google常用搜索技巧
  11. Linux chapter 6
  12. Mysql 主从复制简易操作指南
  13. 算法7-16:弗洛伊德最短路径算法
  14. Python函数必须先定义、后调用(函数调用函数例外)
  15. 利用scrapy爬取新浪体育新闻的小例子
  16. vscode怎么运行代码HTML 怎么在vscode编写HTML代码
  17. 爪哇国新游记之二十四----二叉树
  18. uniapp 网易云音乐app项目总结
  19. YOLOv5、v7改进之二十六:改进特征融合网络PANet为ASFF自适应特征融合网络
  20. java系统随机产生10道加法运算,用户进行答题,答对一道题加10分,答错不加分

热门文章

  1. 用python完成最基础ems项目
  2. 高等数学:极限与连续
  3. C语言麻将递归,一个简洁明了的递归函数——判断[麻将]的和牌
  4. 2022-2028年中国农业观光园行业发展战略规划及投资方向研究报告
  5. win7安装cad2006启动后提示计算机中丢失ac1st16.dll
  6. allow php templates,PHP 返利网 自动返利支持多个电商网站 源码+程序
  7. Unity3D视频教程-传智-专题视频课程
  8. 微型计算机软件系统分为哪些类,系统软件包括哪四类
  9. 破解/忘记Win7密码
  10. 科学家被称为计算机之父,被称为“计算机之父”,他超前的思维揭开计算机处理信息的本质!...