IOS Theos Tweak 之 HelloWorld

1、目标

Theos是什么?android

是一套跨平台的开发工具套件,不只能够开发Ios,Mac、Windows和Linux也能够的哦,开源免费。ios

Tweak是什么?git

能够理解成动态连接库,有搞过Windows下dll注入的同窗应该能够秒懂了。Android的同窗能够把它理解成IOS下的Xposed。程序员

HelloWorld是什么?github

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

2、步骤

Mac下安装Theos

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

# 先切换到root权限
sudo su
cd /
mkdir opt
cd /opt
复制代码

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

git clone --recursive https://github.com/theos/theos.git
复制代码

三、打开 ~/.bash_profile文件,添加如下四行微信

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

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

是的就这样就够了。 (可能还须要 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,而后就会弹出咱们的HelloWorld

run.png

咱们再说说这个 NSLog ,这个颇有用的,相似Android的 __android_log_print。 可是它从哪看呢?

Mac系统有个叫 控制台 的程序,能够看到每一个设备输出的Log。

log.png

木问题,收工。

3、总结

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

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

ffshow.jpeg

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

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

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

相关文章
相关标签/搜索