標籤:

iOS逆向開發基礎工具

小白:小程,我一直想問,什麼是逆向來著?是逆向行駛嗎?

小程:理解為逆向行駛也沒錯。一般的項目是從無到有,從大唐而來到西方取經,而逆向是從已有的狀態入手,分析出已有的流程與結構的手段。

iOS上的逆向開發,是一件有趣的事情(雖然有時也會很痛苦),而且還可能給你帶來收益。

在接下來的幾篇文章,小程會嘗試介紹iOS逆向的一系列的知識與技能:從基礎工具的使用,到目標類的定位、目標代碼的調試,再到注入微信的實戰示例。讀者如果感興趣,可以關注小程的微信公眾號「廣州小程」,獲得後續的更新。

本文介紹iOS逆向的基礎工具的使用。

硬體方面,你需要一台iOS設備(iphone/itouch/ipad,以下都稱為手機或iphone),以及一台電腦。電腦方面,小程建議你使用mac電腦,因為它的環境可以解決很多無謂的問題,當然如果你有很強的解決問題的能力並且堅持用windows來安裝mac虛擬機的話,也是可以的。

系統環境方面,你需要給手機越獄。說到越獄,小程就想起scofield:

但這裡的越獄,是指對手機有更多的操作許可權,比如在手機運行命令行終端、往root等目錄寫入數據、安裝非來自AppStore的應用(之前就介紹過重簽名後安裝ipa),等等。但注意一點,越獄後,沙盒的機制還是存在的,比如你的App還是不能往其它App的Document目錄寫入數據。

小程在寫這篇文章時,10.2以上的系統還不支持越獄,所以準備用于越獄的系統應該是10.2或低於10.2。使用pp助手、愛思之類的工具進行越獄。

解決了硬體和系統越獄的需求後,接著就是逆向的基本工具了,這些工具可以讓你逼近攻擊目標。

(1)ssh

ssh,就是Secure Shell,即安全外殼協議(ssh協議可以防範ip或dns欺騙,加密而且壓縮數據,被廣泛使用),常用於遠程登陸。這裡指的是ssh客戶端。

如果最終是用yalu102來越獄的話,越獄後自帶ssh(但scp要自行安裝)。

可以cydia中搜索Terminal並安裝,然後在這個終端上敲上ssh來執行,驗證是不是安裝了ssh。如果發現沒有,那可以在cydia中搜索「openssh」或「ssh connect」來進行安裝。

試用ssh:

  • 在手機的wifi頁面,找出當前使用的ip。
  • 在電腦上(mac機自帶ssh客戶端),使用ssh登陸設備:ssh root@ip
  • ssh登陸到手機,之後操作的就是這台手機,電腦上的鍵盤就是手機的鍵盤。

小白:喂,登陸時需要寫密碼,是多少呢?

ios設備的兩個默認ssh賬號:root,默認密碼:alpinemobile,默認密碼:alpinessh登陸示例:$ ssh root@192.168.1.101或者:$ ssh -l root 192.168.1.100-----root@192.168.1.101s password:(輸入密碼,回車)810:~ root#登陸後,修改root密碼:# passwd登陸後,修改mobile密碼:# passwd mobile每次ssh到手機,都要經過密碼驗證。如果想簡化這一步,那麼可以使用iosod來建立這個信任:cd /opt/iosopendev/bin --前提是,已經安裝了iosopendev./iosod sshkey -h 192.168.1.101這樣就對這個ip建立信任,之後ssh登陸時不再輸入密碼。

上面已經提到了iOSOpenDev,這是一個編寫注入代碼的實用工具,後續再具體介紹。

這裡再介紹使用ssh可能遇到的一個問題。對於ios10.1.1(其它10.x也一樣),在越獄後,用ssh是登陸不上的,原因參考blog.csdn.net/dianshang

以下是這個網頁的內容摘錄:


1、SSH連接不上在手機上安裝Mterminal,運行su,輸入root密碼,進入root許可權,執行ps aux|grep dropbear(1)如果你看到的進程沒有dropbear執行/usr/local/bin/dropbear -F -R -p 22然後就可以連接了,重啟依然有效(2)如果你看到進程是這樣:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22意思是只能數據線重定向連接SSH,如果你想改成WIFI可以訪問那麼用Filza修改/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist把裡面有個參數127.0.0.1:22改成22保存,重啟手機即可UUID在每個人手機上不一樣2、修復SCP你會發現yalu102自帶的SSH無法用WINSCP傳輸文件,因為缺少了scp很簡單(1)cydia裡面安裝wget(2)在mterminal裡面登陸root許可權(3)執行以下命令wget mila432.com/scpldid -S scpchmod 777 scpmv scp /usr/bin/scp


注意,如果是用「越獄助手」來越獄的,那上面的目錄改為../Application/越獄助手/yalu102.app/..

(2)scp

scp,就是secure copy,是基於ssh的遠程拷貝。

一般安裝完ssh客戶端後就可以使用scp指令(否則,可以參考上面辦法下載scp來使用)。

比如,把hellowrold文件,拷貝到手機的root用戶的根目錄,命名為hello:

scp helloworld root@192.168.1.100:hello

比如,拷貝手機裡面的內容到電腦:

scp root@192.168.2.21:/User/Documents/Cracked/* .

在ssh與scp安裝完畢後,就可以做一些「攻擊」的事情了。

比如,讓手機重啟

ssh root@192.168.1.101(810:~ root#) killall SpringBoard

比如,在手機上執行hello wrold程序

首先編譯出執行文件,使用clang:clang -o helloworld -arch armv7 helloworld.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk拷貝執行文件到手機:scp helloworld root@192.168.1.100:hello登陸手機並執行:ssh root@192.168.1.101cd /chmod +x hello./hello

(3)socat

socat,是用來查看系統日誌的工具。系統各個進程的動態信息、所有app的NSLog信息,都可以通過socat觀察到。

安裝

在cydia搜索SOcket CAT來安裝,或者:apt-get install socat --前提是安裝了apt-get

使用

socat – UNIX-CONNECT:/var/run/lockdown/syslog.sock>watch


總結一下,本文簡介了iOS逆向的準備工作,以及基礎工具ssh/scp/socat的使用。這三個工具在以後的實戰中會經常用到,雖然你也可以用其它工具來達到同樣的目的,但小程還是建議你掌握它們的使用。本文的內容只需按步操作,難度係數為低。


推薦閱讀:

iOS 11 最全面的設計通訊??
2014 年 12 月,你覺得 iPhone 相比 Android 設備具有哪些優勢?
IOS的後台和安卓的後台有哪些相同點和不同點?
iOS 里 App Store 的「Genius 應用軟體推薦」需要付費嗎?
iPhone 4S 中的「S」是什麼意思?

TAG:逆向工程 | iOS |