1. 程式人生 > >iOS攻防:ssh登陸與交叉編譯

iOS攻防:ssh登陸與交叉編譯

簡介

iOS攻防系列大家耳熟能詳的是我們iOS女神念茜的系列文章。博主在看了之後也進行了一系列的學習和嘗試。念茜的文章寫的比較早,有很多文章中提到的東西已經不再適合現在使用,寫的也不算詳細,很多地方一筆帶過,卻不是那麼好探索。在中間也有很多摸索的過程。
所以本系列文章算是對念茜iOS攻防系列的一個補充,中間細節的地方也會寫的更加詳盡。

你需要一部越獄手機

首先要做的事,找一部越獄後的iPhone,攻防方面的探索很多需要藉助越獄手機的幫助。作為平常的消遣和研究你也應該有一部越獄手機,我的越獄手機是iPhone4,比較古老,但是研究夠用了。

前期準備

首先是手機(前面說過了)。其次,越獄手機大家都知道一個app——Cydia,在上面可以下載所有的越獄APP,相當於越獄後的app store。對於iOS攻防,首先需要以下軟體:

  1. openSSH
  2. LLVM+Clang

可能還需要的軟體:

  1. Cydia Translations
  2. Cydia Substrate
  3. Cydia Installer

這些軟體都可以在Cydia下載到,如果你搜索不到,那麼你需要新增一些源
在Cydia的軟體源中點選『編輯』->『新增』,依次新增以下源

blog_iOSssh01
blog_iOSssh02
blog_iOSssh03

hacking

1. ssh登陸手機

ssh登陸,大家應該不算陌生,如果你第一次聽說,你可以簡單理解成『遠端登入』,可以通過一臺裝置遠端登陸另一臺裝置。

  1. 保證你的Mac和iPhone在同一網段
  2. 確定iPhone的IP
  3. 遠端登陸

在你mac的Terminal輸入

Objective-C
1 ssh root@xxx.xxx.xxx.xxx

接著會提醒你是否連線,輸入yes繼續,輸入密碼,初始密碼是alpine
建議你將改密碼改掉,因為這樣很不安全,在預設密碼的情況下,任何人都可以嘗試登陸你的裝置。
在登入之後,你可以更改你的密碼:

Objective-C
1 passwd root

ssh登陸後,可以試著看看手機的目錄結構
blog_iOSssh05

2. 交叉編譯

首先解釋一下什麼是交叉編譯。交叉編譯指在一個平臺上生成另一個平臺上的可執行程式碼。
我們將會在MAC上寫程式碼,但要生成的可執行檔案需要在iPhone上執行。
編譯是由編譯器完成的,所以我們首先要找到合適的編譯器。

我們本次的任務就是寫一個簡單的C程式,能在iPhone上跑的C程式。

念茜所提到的arm-apple-darwin10-llvm-gcc-4.2我是沒有找到的,因為這東西好像是在Xcode5的時候才有。

我用的是Clang,所以我們需要下載一下Clang。Clang是一個C語言、C++、Objective-C、C++語言的輕量級編譯器。這裡是傳送門

1. 寫經典HelloWorld

Objective-C
12345 #include                                                                                               intmain(){printf("Hello world !!!\n");return0;}

2. 編譯

命令臺編譯:

1234 touch helloworld.copen helloworld.c...(寫一下程式碼)xcrun-sdk iphoneos clang-arch armv7-ohelloworld helloworld.c

用過自動打包ipa的同學都對xcrun和xcodebuild很熟悉。這與打包過程類似。

格式:xcrun -sdk iphoneos clang -arch armv7 -o [目標檔名] [原始檔名]

生成可在iPhone平臺執行的二進位制可執行檔案

3. 放到iPhone中

通過ssh檔案傳輸將helloworld傳到iPhone中

Objective-C
1 scp helloworld root@192.168.31.152:helloworld

再看一下iPhone檔案目錄,是不是已經有了helloworld
blog_iOSssh06

執行一下:
blog_iOssh07

Bingo!

如果你繼續玩,你會發現其實你的iPhone就是一個類Linux系統(本來就是Unix~~),你可以隨便玩。

補充知識

1. 重置ssh登陸密碼

如果你不幸忘記了ssh密碼,可以在Cydia中下載ifile軟體,通過ifile找到/private/etc/master.password檔案,檔案中會有以下一段:

root:xxxxxxxxxxxxx:0:0::0:0:System
Administrator:/var/root:/bin/sh
mobile:xxxxxxxxxxxxx:501:501::0:0:Mobile
User:/var/mobile:/bin/sh

將root:及mobile:後面的13個x字元處修改成/smx7MYTQIi2M,修改後儲存此檔案,你iphone的ssh密碼就重新回到預設的alpine

下期內容

只是寫個HelloWorld是不是很無聊,下一期內容將會教你如何非法竊取iTunesstore資訊以及Cycript修改執行時

有什麼問題都可以在博文後面留言,或者微博上私信我,或者郵件我[email protected]

博主主要寫javaEE和iOS的。

希望大家一起進步。

我的微博:小魚周凌宇