1、查看《iOS逆向 开发工具》 Theos的使用方法做准备工作;
2、创建tweak工程,实现在屏幕上添加弹框(越狱手机);
3、Logos语法。
完成该工程,我们可以实现在任意地方添加我们想要的功能。任性,吼吼。

###一、给屏幕添加弹框
项目目录:/Users/yanghaibo/Documents/iOS逆向/Theos/

1、创建tweak工程,进入工程目录执行命令:

/opt/theos/bin/nic.pl

会出现列表:

NIC 2.0 - New Instance Creator
------------------------------[1.] iphone/activator_event[2.] iphone/application_modern[3.] iphone/application_swift[4.] iphone/cydget[5.] iphone/flipswitch_switch[6.] iphone/framework[7.] iphone/ios7_notification_center_widget[8.] iphone/library[9.] iphone/notification_center_widget[10.] iphone/preference_bundle_modern[11.] iphone/tool[12.] iphone/tool_swift[13.] iphone/tweak[14.] iphone/xpc_service
Choose a Template (required):

2、选择13创建一个tweak工程;
3、输入tweak的工程名称Project Name: first
4、输入deb包的名字,Package Name: com.yahibo.first
5、输入tweak作者的名称,Author: yahibo
6、输入作用对象的bundle identifier: com.apple.springboard
7、安装完成后需要重启应用,以进程名表示 命令:使用空格
项目创建完成如下:

8、修改Tweak.xm文件

%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application{%orig;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我来了,哈哈哈" delegate:nil cancelButtonTitle:@"不见" otherButtonTitles:@"好的", nil];[alert show];
}%end

9、修改Makefile文件,指定设备IP,指定处理器架构,指定SDK版本,导入framework,多个framework 空格添加。

THEOS_DEVICE_IP = 192.168.0.105
ARCHS = armv7 arm64
TARGET = iphone:latest:8.0include $(THEOS)/makefiles/common.mkTWEAK_NAME = first
first_FILES = Tweak.xm
first_FRAMEWORKS = UIKitinclude $(THEOS_MAKE_PATH)/tweak.mkafter-install::install.exec "killall -9 SpringBoard"

10、配置完后终端进入工程文件执行安装命令:

make package install

执行如下:

手机端显示如下:


以上大功告成,完成了锁屏状态下加弹框。

11、工程被打包到:./packages/com.yahibo.first_0.0.1-23+debug_iphoneos-arm.deb中,可使用dpkg 查看deb包信息:

dpkg -I ./packages/com.yahibo.first_0.0.1-23+debug_iphoneos-arm.deb

12、在Cydia应用中搜索syslogd to/var/log/syslog并安装;搜索Core Utilities并安装,安装后可以使用tail命令查看文件。
13、项目打包成一个.dylib动态库在越狱手机/Library/MobileSubstrate/DynamicLibraries/目录下。

修改内容需要清除包

make clean
rm -rf packages

重启SpringBoard杀死进程会自动重启

killall -9 SpringBoard

卸载动态库:

make package uninstall

###二、常用的Logos语法简介

1、%hook指定需要hook的类名,以%end结尾。

%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application{%orig;//执行原始操作UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我来了,哈哈哈" delegate:nil cancelButtonTitle:@"不见" otherButtonTitles:@"好的", nil];[alert show];
}%end

示例代码为钩住SpringBoard类的applicationDidFinishLaunching函数,先执行原始操作,再显示弹框。

2、%log用来打印log的,将信息输入到syslog中,格式%log([(<type><expr>,...)])

%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application{%orig;//执行原始操作%log((NSString *)@"iOSRE",(NSString *)@"Debug");
}
%end

3、%orig执行被hook函数的原始代码,类似于super.method功能,如果去掉,原始代码不会执行。还可以使用该函数更改原始函数的参数:

%hook SBLockScreenDateViewController
-(void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2{%orig(@"hello I am hibo",arg2);
}
%end

4、%group该指令用于%hook的分组,%group后边跟的是组名,%group也是必须以%end结尾,其中可以包含多个%hook

5、%init该指令用来初始化某个%group,一个group只有被初始化后才可生效,init必须在hook中进行执行。

6、%ctor tweak的构造器,用来初始化,如果不显式定义,Theos就会自动生成一个%ctor,并在其中调用%init(_ungrouped).如:%ctor { %init(_ungrouped)}

7、%new该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。

8、%c该指令用来获取一个类的名称,类似于objc_getClass

从越狱手机中我们可以拿到苹果设备的桌面程序SpringBoard.app,砸壳后获取到SpringBoard对应的头文件。根据头文件我们可以大致猜测到类及类方法的作用,因此使用以上方法,我们也可以更改其他一些显示,修改桌面时间文本、颜色、电池状态、电量,当然这些可能没有实用价值,我们只是通过这种方式来进一步了解逆向。
苹果设备桌面头文件

Theos-tweak工程相关推荐

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

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

  2. iOS逆向工具-Theos

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

  3. 20、Theos越狱调试Wallet

    前面的总结中使用砸壳重签后的App进行调试,本篇在越狱环境下不重签App进行调试,但是还是需要砸壳获取Headers. 一.Cycript 1.1 在越狱环境中使用Cycript 在越狱环境上,安装C ...

  4. Theos(六):官方文档

    目录 Home(主页) Installation(安装) Installation iOS(iOS 平台上的安装) Installation macOS(macOS 平台上的安装) Installat ...

  5. ios逆向,tweak简洁使用教程

    准备工作: .爱思助手 .一台已越狱的iphone,并已安装cydia . 安装Theos,安装教程就忽略了,Theos安装起来比较麻烦,主要是网络原因,这里提供一份绿色版本 https://down ...

  6. android ios 逆向工程,iOS逆向工程(七):使用Theos逆向项目

    使用Theos逆向项目 一.Theos是什么? Theos是一套跨平台的开发工具,用于在不使用Xcode的情况下开发.部署iOS插件,大多数插件开发人员都使用Theos. Theos工具套件包含一些重 ...

  7. Theos(五):.deb 与 dm.pl

    目录 Linux 免费发行版本:Ubuntu.CentOS.Debian .deb 文件结构 dpkg 与 APT Cydia 安装和卸载 .deb 包的过程 Theos 的 dm.pl 脚本 Lin ...

  8. Theos(一):简介 安装

    目录 Theos 简介 Theos 安装 Theos 的目录结构 Tweak 工程的目录结构 Tweak 插件加载图片资源 Tweak 插件的实现原理 补充:Q & A 其他注意点 Theos ...

  9. tweak 项目 快速搭建CocoaAsyncSocket(建连、断开、重连、心跳、通用请求)

    前言 GitHub http请求: 每次更新数据都要向对应的端口发送一次请求,之后返回数据之后关闭连接 长连接 客户端和服务器一直连着,当有数据更新的时候,服务器会直接发给客户端,不需要客户端主动请求 ...

  10. ios越狱python插件_基于Theos越狱开发

    前言: theos是国外大牛开发的越狱编译平台,通过命令行可以快速的生成例子,其最有意思的当属tweak插件的开发,其Logus的语法简洁明了,是越狱中HOOK的绝佳神器,下面就来一步步揭开这些东西的 ...

最新文章

  1. 与后台交互方法一 ——Ajax
  2. 在 Linux“.NET研究” 操作系统中运行 ASP.NET 4 (下)
  3. Android面试题目之(七) AsyncTask的原理是什么?
  4. 【Ubuntu入门到精通系列讲解】系统信息相关命令
  5. 用户路径分析:揭秘你的用户行为偏好习惯
  6. 启动与停止mysql服务的命令
  7. php-cli下载,php-cli-color
  8. 蔚来三元铁锂电池绕道超车
  9. Git 出现Branch master set up to track remote branch master问题 与忽略文件上传
  10. javascript函数参数的传递问题
  11. React Native RSA加密
  12. P2016 战略游戏[树形dp]
  13. (转)AI搅局金融业!传奇投资人“都铎·琼斯”真金白银来押注
  14. 谷歌成功利用一台 54 量子比特的量子计算机
  15. 2021年P气瓶充装新版试题及P气瓶充装证考试
  16. Adobe Flash被禁用和无法加载的官方解决办法
  17. cocos creator制作微信抖音小游戏《黄金矿工》
  18. 腾讯云Elasticsearch集群多可用区容灾实现原理及最佳实践
  19. Space chick获得Blockchain、SNZ、1con等多家资本战略投资 助推项目快速发展
  20. Android AOA链接(accessory host)

热门文章

  1. 实验吧-欢迎来到地狱题解
  2. 那群“沙雕”年轻人,正在闲鱼上蹦迪
  3. linux默认超级用户密码,新手:ubuntu超级管理员的密码设置
  4. word:如何将文档中的中文和英文分开
  5. 用PQ硬盘分区魔术师处理磁盘时务必先卸载掉360相关软件
  6. 技术移民必看:工程师应该如何获得美国签证?
  7. 陶哲轩实分析 3.1节 习题试解
  8. 干货 | 系统润滑,定时清理内存了解一下
  9. 北京理工大学计算机面试题,北京理工大学自主招生面试试题综合素质答案技巧.doc...
  10. linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件