ios逆向工具theos安装和使用tweak替换和卸载
文章目录
- 安装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替换和卸载相关推荐
- iOS逆向工具-Theos
阅读此文前,请确保iOS设备已越狱,否则一切都是空谈! 1.环境安装 a.指定xcode(根据自己xcode路径来): sudo xcode-select -s/Applications/Xcode. ...
- ios逆向工具MonkeyDev简介
MonkeyDev简介 虽然是美国的苹果开发的操作系统,但是要论越狱iPhone和逆向分析来说,那国内远胜于米国了,可能是国内很多相关的灰色产业链吧.在之前,我们想动态调试一个没有源码的应用程序,通常 ...
- ios逆向学习环境安装(一)
1.Xcode 历届版本:https://developer.apple.com/documentation/xcode-release-notes AppStore中搜并安装XCode & ...
- ios逆向工具Class-dump的安装和导出.h文件的教程
目录 官网文件安装方法 运行报错 Cannot find offset for address xxx in stringAtAddress: 解决运行报错的版本下载地址: 获取app文件 class ...
- IOS逆向之frida安装
首先手机要越狱,这个就不说了,博主就是咸鱼搞了个160的苹果6, 自己刷到苹果6支持最新的12.5.7版本后越狱: 谁让他低版本,不支持 CrackerXI砸壳呢,当时你要是使用 frida-ios- ...
- 安卓逆向工具apkide安装
https://down.52pojie.cn/Tools/Android_Tools/ 下载完 解压即可使用 可以进行逆向分析,搜索等操作
- 2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程——使用theos tweak 注入hook修改游戏执行代码上传动态头像
2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程--使用theos tweak 注入hook修改游戏执行代码上传动态头像 开篇 需求&最终效果 环境要求与即将使用的 ...
- iOS逆向工程之Theos
iOS逆向工程之Theos 如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,T ...
- IOS逆向学习-Tweak
IOS逆向学习-Tweak 1. theos指令及可能遇到问题 2. thes的实战练习 2.1 将桌面的更新数字去掉 2.2. 给微信发现界面增加两行功能 2.2.1 hook代码语法知识 2.2. ...
- 逆向工具安装使用测试
传统的对iOS逆向的工具要使用到下面很多: otool keychain-dumper sqlite dumpdecrypted class-dump-z Theos 但国外有很多团队研发了很多优秀的 ...
最新文章
- 智源社区2022新版体验:订阅讲座日历、关注顶尖专家、开启个人频道
- ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
- Android5.1.1 - zygote中获取系统服务时抛出异常
- Understanding CMS GC Logs--转载
- 描述最常用的5种http方法的用途_对不起,来晚了,这可能是设计模式讲的最通俗易懂的文章(收藏)
- 结对编程前对队友程序的分析与对比总结
- 【算法竞赛学习】金融风控之贷款违约预测-赛题理解
- 结构与算法(05):二叉树与多叉树
- php中文字怎么上下居中,CSS怎么设置垂直居中?
- Google常用搜索技巧
- Linux chapter 6
- Mysql 主从复制简易操作指南
- 算法7-16:弗洛伊德最短路径算法
- Python函数必须先定义、后调用(函数调用函数例外)
- 利用scrapy爬取新浪体育新闻的小例子
- vscode怎么运行代码HTML 怎么在vscode编写HTML代码
- 爪哇国新游记之二十四----二叉树
- uniapp 网易云音乐app项目总结
- YOLOv5、v7改进之二十六:改进特征融合网络PANet为ASFF自适应特征融合网络
- java系统随机产生10道加法运算,用户进行答题,答对一道题加10分,答错不加分
热门文章
- 用python完成最基础ems项目
- 高等数学:极限与连续
- C语言麻将递归,一个简洁明了的递归函数——判断[麻将]的和牌
- 2022-2028年中国农业观光园行业发展战略规划及投资方向研究报告
- win7安装cad2006启动后提示计算机中丢失ac1st16.dll
- allow php templates,PHP 返利网 自动返利支持多个电商网站 源码+程序
- Unity3D视频教程-传智-专题视频课程
- 微型计算机软件系统分为哪些类,系统软件包括哪四类
- 破解/忘记Win7密码
- 科学家被称为计算机之父,被称为“计算机之父”,他超前的思维揭开计算机处理信息的本质!...