IOS Theos Tweak 之 HelloWorld

简介: IOS Theos Tweak 之 HelloWorld

一、目标


Theos是什么?


是一套跨平台的开发工具套件,不仅可以开发Ios,Mac、Windows和Linux也可以的哦,开源免费。


Tweak是什么?


可以理解成动态链接库,有搞过Windows下dll注入的同学应该可以秒懂了。Android的同学可以把它理解成IOS下的Xposed。


HelloWorld是什么?


是萌新程序员的信仰,在一个平台写下HelloWorld,证明我来了。


二、步骤

Mac下安装Theos


1、检测是否有 /opt目录,没有就新建一个

# 先切换到root权限
sudo su
cd /
mkdir opt
cd /opt


2、 在新建的/opt目录下clone项目源码

git clone --recursive https://github.com/theos/theos.git


3、打开 ~/.bash_profile文件,添加以下四行

# theos
export THEOS=/opt/theos
export PATH=$THEOS/bin:$PATH
# iPhone手机的ssh地址
export THEOS_DEVICE_IP=localhost
export THEOS_DEVICE_PORT=2222


4、按照 之前的 Ios逆向环境搭建 (一) 配置好 SSH。


是的就这样就够了。 (可能还需要 ldid 和 dpkg-deb,用brew装下)


HelloWorld


开始创建一个 Tweak模板

# 创建模板命令 nic.pl 类似新建一个空工程
nic.pl
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/cydget
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/ios7_notification_center_widget
  [7.] iphone/library
  [8.] iphone/notification_center_widget
  [9.] iphone/preference_bundle_modern
  [10.] iphone/tool
  [11.] iphone/tweak
  [12.] iphone/xpc_service
# 选择 11 iphone/tweak ,我之前装的是 11, 最新的是 15
Choose a Template (required): 11
# 输入工程名称
Project Name (required): helloworld
# 输入工程包名
Package Name [com.yourcompany.helloworld]: com.fefei.helloworld
# 作者必须是我了
Author/Maintainer Name [fenfei]: fenfei
# 要hook的程序包名,我们这里正好要hook springboard
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:
# 开发完成之后,安装好了我们的tweak,要重启的app名称,一般都是我们要hook的app的主程序名称,这里是 SpringBoard
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: 
Instantiating iphone/tweak in helloworld/...
Done.


这就搞定了


一共生成了4个文件

  • Makefile   编译的脚本
  • Tweak.xm   源代码
  • control    工程描述
  • helloworld.plist  要hook的App列表


迫不及待了,我们先写代码吧

#import <SpringBoard/SpringBoard.h>
// hook 了 SpringBoard类的 applicationDidFinishLaunching 方法,
// 具体现象就是 进入ios系统桌面之前弹出提示框
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
    %orig;
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome"
        message:@"456 Hello world,你好世界"
        delegate:nil
        cancelButtonTitle:@"确定"
        otherButtonTitles:nil];
    [alert show];
    [alert release];
}
%end
// 初始化执行
%ctor{
    NSLog(@"fenfei: 666 ctor!!!");
    %init(_ungrouped);
}


编译和安装

make package install


安装后会自动重启SpringBoard,然后就会弹出我们的HelloWorld70.png


我们再说说这个 NSLog ,这个很有用的,类似Android的 __android_log_print。 但是它从哪看呢?


Mac系统有个叫 控制台 的程序,可以看到每个设备输出的Log。71.png

木问题,收工。


三、总结


玩Ios难点在哪? 不在于Arm汇编,而在于没有设备。你起码得需要一个Mac电脑和Iphone。


不建议装黑苹果,升级和鼓捣太麻烦了。 某鱼搞个二手Mac Pro最低有2k的, Iphone搞个6或者6s, 有3-400的。 Mac电脑系统起码要能装 macOS Mojave 10.14.x 。 Iphone要无锁的,最好国行,系统就所谓了,最好低点 13以下。这样 Xcode 11.3也能玩。

72.png

醉后不知天在水,满船清梦压星河


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号: 奋飞安全,最新技术干货实时推送


相关文章
|
安全 数据安全/隐私保护 iOS开发
iOS小技能:【发红包】使用tweak和lua脚本结合进行实现
我们开发的大部分越狱程序,都是编译成动态链接库(`例如:介绍的越狱程序(Tweak)开发,就是动态链接库。`),然后通过越狱平台的MobileSubstrate(iOS7上叫CydiaSubstrate)来加载进入目标程序(Target),通过对目标程序的挂钩(Hook),来实现相应的功能。
318 0
|
缓存 Shell 网络安全
iOS逆向-day6:最新的 theos 使用
iOS逆向-day6:最新的 theos 使用
496 0
iOS逆向-day6:最新的 theos 使用
|
iOS开发
iOS逆向小知识: 将功能独立的tweak 合并到同一个deb 包
iOS逆向小知识: 将功能独立的tweak 合并到同一个deb 包
253 0
iOS逆向小知识: 将功能独立的tweak 合并到同一个deb 包
|
JavaScript 前端开发 机器人
iOS tweak 集成CocoaAsyncSocket
iOS tweak 集成CocoaAsyncSocket
224 0
iOS tweak 集成CocoaAsyncSocket
|
Shell iOS开发
iOS逆向:tweak开发教程(iPhone/tool)
iOS逆向:tweak开发教程(iPhone/tool)
975 0
iOS逆向:tweak开发教程(iPhone/tool)
|
网络安全 文件存储 数据安全/隐私保护
iOS逆向小知识:使用Theos开发插件
iOS逆向小知识:使用Theos开发插件
1332 0
|
存储 网络安全 开发工具
iOS逆向工程之Theos
iOS逆向工程Theos
4366 0
|
iOS开发
【 Beginning iOS 7 Development《精通iOS7开发》】01 Xcode创建项目helloworld [及资料下载]
1、右击Xcode顶部操作栏的任意处,弹出下拉列表,显示三个选项icon and text、text ONLY 和 hide toolbar,作为初学者选择第一项icon and text,这样的好处在于文字加按钮图标更好的指导某个操作是干什么的,其二是因为教科书描述的操作是以文字来的,图文并茂的比较少,比如“scheme”在很多书中都提到,但是直到启动上述选项之前,我还是没有指导这个按钮所在。
1035 0