iOS插件tweak编写
文章目录
- 前言
- 一、Reveal的使用
- 下载安装
- 简单使用
- 二、头文件提取
- icdump安装使用
- 三、tweak编写
- Theos安装
- tweak编写
前言
这篇文章介绍了两方面内容:
- Reveal的下载安装与简单使用
- icdump用于头文件提取
- tweak编写
一、Reveal的使用
Reveal可以调试app任意界面。
下载安装
电脑端:
1.官网下载,但是只有试用期
https://revealapp.com/download/
2.使用旧版破解版,下述链接中配有百度网盘旧版
https://juejin.cn/post/6909716520490762248
手机端:
在Cydia应用中搜索Reveal2Loader,进行安装即可。进入设置中,找到Reveal,点击 Reveal,进入 Enabled Applications 打开允许调试的 APP即可
简单使用
电脑端打开Reveal应用,手机端重启需要调试的APP,然后在Reveal应用中选择usb连接的应用图标打开。
图可分为三列,对中间一列可以通过鼠标控制进行旋转,选择目标点击之后,就会在左右跳出相关类。在右边的NSObject中class就是view类,还有上面的View Controller中也说明了是哪个类。
二、头文件提取
通过Reveal获取目标类名之后,需要获取类中方法。class-dump无法应用oc/swift混合开发的情形。目前有工具icdump和resymbol
运行之后,icdump的效果好一点,resymbol提取的话乱码较多。
提取头文件之后就可以获取方法名,为下一步编写tweak做准备。
icdump安装使用
安装以及提取头文件命令如下,executable表示ios app脱壳之后的可执行文件。
pip3 install icdump
readobjc.py executable > headers.txt
三、tweak编写
tweak本质上是iOS平台的动态库,存放于/Library/MobileSubstrate /DynamicLibraries目录下。这个目录下除dylib外还存在着plist与bundle两种格式的文件,plist文件是用来标识该tweak的作用范围,而bundle是tweak所用到的资源文件。
Theos安装
Theos 是一个不需要使用Xcode,就能管理,开发和部署iOS软件的跨平台开发工具
参考下述链接,简单缩短为下述4条命令
http://darren90.github.io/2019/02/12/2019JailBreak/iOS-逆向%3C7%3E-Theos的安装及Tweak项目介绍/
1.安装ldid
brew install ldid
2.修改配置文件~/.bash_profile
export THEOS=/opt/theos
export PATH=$THEOS/bin:$PATH
修改之后,执行source ~/.bash_profile即可。
3.下载theos
git clone --recursive https://github.com/theos/theos.git $THEOS
4.新建tweak项目
命令行下执行
nic.pl
然后选择iphone/tweak即可
接下来在填写选项时,
- package name: 表示插件tweak的包名。
- [iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: 是目标app包名,不可填错。
其他选项可以任意填写或直接回车即可
tweak编写
参考https://www.jianshu.com/p/6c0a4b1492eb,其中介绍了theos的一些语法。
根据Reveal中定位出来的class名字,再配合icdump的结果
选择上图中选中的方法进行修改,目的是不显示文字部分只显示图片部分。
tweak.x代码如下(这里需要注意icdump的结果,在参数部分不一定准确,可以配合IDA或者Hopper查看)
#import <objc/NSObject.h>
#import <Foundation/Foundation.h>
#import <SpringBoard/SpringBoard.h>%hook SOSquareTimelineTextView
- (NSObject *)initWithFrame:(struct CGRect)arg2{return nil;
}%end
%ctor{NSLog(@"ctor执行-------------");
}%dtor{NSLog(@"dtor结束-------------");
}
上述代码是针对OC函数,但是目前swift/oc混合开发情况,对swift函数来编写tweak实现hook,可参考如下链接
https://www.mbo42.com/2018/04/01/hooking-swift-methods/
https://github.com/623637646/SwiftHook
https://kunnan.github.io/2018/06/06/hooking-swift-methods/
然后,在tweak所在目录下,依次执行下述三条命令即可
1. make
2 .make package
3. make install
最后成功去除了文字部分,如下图所示。
iOS插件tweak编写相关推荐
- 使用podspec创建iOS插件
概述 在WWDC 2014全球开发者大会上,苹果开放了动态库.App Extension等全新的功能,这为iOS插件化开发带来了可能.在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文 ...
- ios逆向,tweak简洁使用教程
准备工作: .爱思助手 .一台已越狱的iphone,并已安装cydia . 安装Theos,安装教程就忽略了,Theos安装起来比较麻烦,主要是网络原因,这里提供一份绿色版本 https://down ...
- 浅谈C#中一种类插件系统编写的简单方法(插件间、插件宿主间本身不需要通信)...
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 三年多前还在上研时,用C#+反射机制写过插件系统,后来又用M ...
- Jquery插件的编写和使用
第七章 Jquery插件的编写和使用 插件的定义: 插件也称为扩展,是一种遵循一定规范的应用程序接口编写出来的程序. 下面是Jquery插件的编写很使用:要查看请点击:Jquery插件的编写很 ...
- 微信摇一摇插件ios_微信密友插件ios下载-微信密友ios插件下载6.6.6最新版-西西软件下载...
微信密友ios插件是一款功能强大的苹果版微信密友隐藏软件,该插件支持微信密友隐藏.后台消息推送.群红包自动抢.运动步数修改等功能,功能强大,界面清爽,欢迎下载体验! 微信密友ios插件介绍: 1.Cy ...
- SQLMAP插件tamper编写与使用
今天继续给大家介绍渗透测试相关知识,本文主要内容是SQLMAP插件tamper编写与使用. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次 ...
- 【Gazebo入门教程】第六讲 控制器插件的编写与配置(下)
[Gazebo入门教程]第六讲 控制器插件的编写与配置(下) \qquad 文章目录 [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) 一.系统插件 二.Velodyne传感器插件 1. ...
- 【Gazebo入门教程】第五讲 控制器插件的编写与配置(上)
[Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 文章目录 [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 一.控制插件的使用方法 1. 插件简介 2. 插件编写流程 二.模 ...
- linux hadoop eclipse 安装,linux下安装Hadoopeclipse插件以及编写第一个简单的MapReduce程序...
linux下安装Hadoopeclipse插件以及编写第一个简单的MapReduce程序 Hadoop 安装eclipse这个不难.网上太多的教程,一找一大把.熟悉了之后也不再需要看教程就可以自己安装 ...
- python开发ios插件_[原创]Textobot-换个轻松高效的方式开发iOS越狱插件
许愿:要是段老师的看雪平台能导入头条或者公众号的文章就好了. 导读 0x00.交个朋友 0x01.越狱开发 0x02.Cydia插件体系 0x03.Cydia插件开发 0x04.Textobot插件体 ...
最新文章
- 使用泛型 ,做计算器
- 【Android】startActivityForResult()与onActivityResult()与setResult()参数分析
- wpf ui框架_RapidCAX 开源UI框架
- 批处理之列出目录下所有文件
- proxy aspectj_使用AspectJ,Javassist和Java Proxy进行代码注入的实用介绍
- j2ee 和 j2se_在J2SE应用中模拟CDI的会话和请求范围
- hbuilderx制作简单网页_简单的手机网页制作教程
- 一文讲述G6实现流程图绘制的常用方法
- Zookeeper集群部署及报错分析
- 微软将VB和C#合二为一 年底推出全新平台VS2010
- C笔试题:IP地址(点分十进制)转换为十进制数
- Ng Alain分页控件的使用
- java的框架gwt介绍_GWT Portlets
- BUUCTF MISC刷题
- Python网络爬虫之数据解析(一)
- Excel画横坐标不均分的图表
- 深度优先搜索(DFS)与广度优先搜索(BFS)算法详解
- 基于simulink的双闭环矢量控制的电压型PWM整流器仿真
- 为何选用F1值(调和平均数)衡量P与R?
- 十分钟看懂图像语义分割技术