簡介
iOS攻防系列大家耳熟能詳的是我們iOS女神念茜的系列文章。博主在看了之後也進行了一系列的學習和嘗試。念茜的文章寫的比較早,有很多文章中提到的東西已經不再適合現在使用,寫的也不算詳細,很多地方一筆帶過,卻不是那麼好探索。在中間也有很多摸索的過程。
所以本系列文章算是對念茜iOS攻防系列的一個補充,中間細節的地方也會寫的更加詳盡。
你需要一部越獄手機
首先要做的事,找一部越獄後的iPhone,攻防方面的探索很多需要藉助越獄手機的幫助。作為平常的消遣和研究你也應該有一部越獄手機,我的越獄手機是iPhone4,比較古老,但是研究夠用了。
前期準備
首先是手機(前面說過了)。其次,越獄手機大家都知道一個app——Cydia,在上面可以下載所有的越獄APP,相當於越獄後的app store。對於iOS攻防,首先需要以下軟體:
- openSSH
- LLVM+Clang
可能還需要的軟體:
- Cydia Translations
- Cydia Substrate
- Cydia Installer
這些軟體都可以在Cydia下載到,如果你搜尋不到,那麼你需要新增一些源
在Cydia的軟體源中點選『編輯』->『新增』,依次新增以下源
hacking
1. ssh登陸手機
ssh登陸,大家應該不算陌生,如果你第一次聽說,你可以簡單理解成『遠端登入』,可以通過一臺裝置遠端登陸另一臺裝置。
- 保證你的Mac和iPhone在同一網段
- 確定iPhone的IP
- 遠端登陸
在你mac的Terminal輸入
1 |
ssh root@xxx.xxx.xxx.xxx |
接著會提醒你是否連線,輸入yes繼續,輸入密碼,初始密碼是alpine
。
建議你將改密碼改掉,因為這樣很不安全,在預設密碼的情況下,任何人都可以嘗試登陸你的裝置。
在登入之後,你可以更改你的密碼:
1 |
passwd root |
2. 交叉編譯
首先解釋一下什麼是交叉編譯。交叉編譯指在一個平臺上生成另一個平臺上的可執行程式碼。
我們將會在MAC上寫程式碼,但要生成的可執行檔案需要在iPhone上執行。
編譯是由編譯器完成的,所以我們首先要找到合適的編譯器。
我們本次的任務就是寫一個簡單的C程式,能在iPhone上跑的C程式。
念茜所提到的arm-apple-darwin10-llvm-gcc-4.2我是沒有找到的,因為這東西好像是在Xcode5的時候才有。
我用的是Clang,所以我們需要下載一下Clang。Clang是一個C語言、C++、Objective-C、C++語言的輕量級編譯器。這裡是傳送門
1. 寫經典HelloWorld
1 2 3 4 5 |
#include int main(){ printf("Hello world !!!\n"); return 0; } |
2. 編譯
命令臺編譯:
1 2 3 4 |
touch helloworld.c open helloworld.c ...(寫一下程式碼) xcrun -sdk iphoneos clang -arch armv7 -o helloworld helloworld.c |
用過自動打包ipa的同學都對xcrun和xcodebuild很熟悉。這與打包過程類似。
格式:xcrun -sdk iphoneos clang -arch armv7 -o [目標檔名] [原始檔名]
生成可在iPhone平臺執行的二進位制可執行檔案
3. 放到iPhone中
通過ssh檔案傳輸將helloworld傳到iPhone中
1 |
scp helloworld root@192.168.31.152:helloworld |
再看一下iPhone檔案目錄,是不是已經有了helloworld
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修改執行時。
有什麼問題都可以在博文後面留言,或者微博上私信我,或者郵件我coderfish@163.com。
博主主要寫javaEE和iOS的。
希望大家一起進步。
CSDN: CSDN部落格地址
我的微博:小魚周凌宇