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 討論下。

關注微信公衆號: 奮飛安全,最新技術乾貨實時推送

相關文章
相關標籤/搜索