关于安全:IOS-Theos-Tweak-之-HelloWorld

24次阅读

共计 2345 个字符,预计需要花费 6 分钟才能阅读完成。

一、指标

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,而后就会弹出咱们的 HelloWorld

咱们再说说这个 NSLog,这个很有用的,相似 Android 的 __android_log_print。然而它从哪看呢?

Mac 零碎有个叫 控制台 的程序,能够看到每个设施输入的 Log。

木问题,出工。

三、总结

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

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

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

正文完
 0