逆向有門(mén)檻,入坑需謹(jǐn)慎
==iOS逆向環(huán)境介紹==
本文越獄環(huán)境:iPhone6 iOS 10.0.2 (推薦使用iOS 8 )
===Drawin 體系===
Darwin是由蘋(píng)果電腦于2000年所釋出的一個(gè)開(kāi)放原始碼操作系統(tǒng)。Darwin 是MacOSX 操作環(huán)境的操作系統(tǒng)成份。蘋(píng)果電腦于2000年把Darwin 釋出給開(kāi)放原始碼社群。
終端命令輸入uname -a顯示操作系統(tǒng)名稱(chēng):
gongyouqiangdeMacBook-Pro:~ Yochi$ uname -a
Darwin gongyouqiangdeMacBook-Pro.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64
-
Darwin是一種類(lèi)似unix的操作系統(tǒng),他的核心XNU[1],XNU是一種混合式內(nèi)容結(jié)合了Mach[2]與BSD[3]兩種內(nèi)核
- 主流的類(lèi)unix:
- Linux 由Linus Torvalds 研發(fā)的,代表發(fā)行版本CenOS,Redhat,Ubuntu,Debian,openWRT等
- Mac OS X的Intel部分
- freeBSD[4] 由加州大學(xué)伯克利分校基于UNIX研發(fā)的(UNIX變種)
- Solaris 由Sun(現(xiàn)在的Oracel) 開(kāi)發(fā)的UNIX商業(yè)版本
- 主流的類(lèi)unix:
-
BSD[3] 實(shí)現(xiàn)在Mach[2]的上層,這一層提供的API 支持了POSIX標(biāo)準(zhǔn)模型。在XNU中主要實(shí)現(xiàn)了一些高級(jí)的API與模塊
UNIX 進(jìn)程模型
== e.g fork, vfork, wait, waitpid, exec等==POSIX 線程模型即pthread,以及相關(guān)的同步功能
== e.g pthread_create, pthread_mutex(線程互斥鎖) ==UNIX的用戶(hù)與組管理
== e.g root用戶(hù),mobile用戶(hù), chmod等==網(wǎng)絡(luò)協(xié)議棧(BSD Socket API),符合POSIX模型
==e.g socket(); bind(); listen(); accept();connect();
gethostbyname(); gethostbyaddr()等伯克利套接字API文件系統(tǒng)/設(shè)備系統(tǒng)
== e.g Filesystem Hierarchy Standard(文件系統(tǒng)層次化標(biāo)準(zhǔn))==
-
iOS, OSI, ISO 含義
iOS 蘋(píng)果公司開(kāi)發(fā)的移動(dòng)操作系統(tǒng)
OSI 是Open System Interconnection的縮寫(xiě),意為開(kāi)放式系統(tǒng)互聯(lián)。OSI模型把網(wǎng)絡(luò)通信的工作分為7層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。
-
ISO是國(guó)際標(biāo)準(zhǔn)化組織。上面的OSI模型由改組織制定。一般UNIX系統(tǒng)都基于符合POSIX標(biāo)準(zhǔn)和ISO C 標(biāo)準(zhǔn)
- POSI表示可移植操作系統(tǒng)接口(Portable Operating System Interface)
- ISO C 標(biāo)準(zhǔn), C語(yǔ)言標(biāo)準(zhǔn)接口
-
為什么要越獄?
- 突破iOS沙盒機(jī)制(sandbox)
== 沙盒是一種安全機(jī)制,為運(yùn)行中的程序提供隔離環(huán)境。沙盒在啟動(dòng)的時(shí)候可以設(shè)置運(yùn)行的程序是否可以訪問(wèn)網(wǎng)絡(luò)、文件、目錄等==
- 突破iOS沙盒機(jī)制(sandbox)

==Cydia - 越獄iOS的軟件管理平臺(tái)==
Cydia 之父 - Jay Freeman(杰·弗里曼)
越獄是合法的
安裝OpenSSH,為電腦和越獄手機(jī)提供連接環(huán)境
== 在Cydia中搜索OpenSSH并安裝,這樣iOS上面就可以開(kāi)啟SSH服務(wù)。SSH服務(wù)默認(rèn)綁定端口號(hào)22==
1、使用SSH命令連接iOS,默認(rèn)登錄密碼"alpine"
iOS連接wifi,設(shè)置中可以看到ip地址,也可以改成靜態(tài)IP地址
ssh -p 22 root@xx.xx.xx.xx
Windows、UNIX和VMS系統(tǒng)使用SecureCRT這款理想工具連接運(yùn)行。
iOS 10注意:(iOS 10以下按流程走)
=:)yalu102自帶了SSH
無(wú)需安裝OPENSSH,安裝了請(qǐng)先卸載
無(wú)需安裝OPENSSH,安裝了請(qǐng)先卸載
無(wú)需安裝OPENSSH,安裝了請(qǐng)先卸載。
=:)SSH連接不上,在手機(jī)上安裝Mterminal(終端)以此輸入如下命令:
$su
默認(rèn)密碼:alpine
$ps aux|grep dropbear
(1)如果你看到的進(jìn)程沒(méi)有dropbear
輸入:
/usr/local/bin/dropbear -F -R -p 22
然后就可以連接了,重啟依然有效
(2)如果你看到進(jìn)程是這樣:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22
意思是只能數(shù)據(jù)線重定向連接SSH,
如果你想改成WIFI可以訪問(wèn)那么用Filza或iFile軟件進(jìn)入系統(tǒng)文件夾修改(一個(gè)個(gè)的app點(diǎn)擊進(jìn)去找到y(tǒng)alu102.app就可以了)
/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist
把里面有個(gè)參數(shù)127.0.0.1:22改成22保存,重啟手機(jī)即可
2、使用scp命令可以傳輸文件
新建終端窗口輸入下列拷貝命令:
拷貝本地文件到客戶(hù)端
$scp filename root@xx.xx.xx.xx:/tmp
從客戶(hù)端拷貝文件到本地
$scp root@xx.xx.xx.xx:/tmp/filename /tmp/
scp傳文件時(shí)錯(cuò)誤 scp: /usr/tools: not a regular file 不能成功傳送
解決方案
1:有可能沒(méi)權(quán)限 chmod 777
2: 在使用scp時(shí)加上-r 參數(shù)scp -r [root@192.168.16.5:/usr/tools/xxxx](mailto:root@192.168.16.5:/usr/tools/xxxx)
iOS 10注意修復(fù)SCP:(iOS 10以下按流程走)
你會(huì)發(fā)現(xiàn)yalu102自帶的SSH無(wú)法用WINSCP傳輸文件,因?yàn)槿鄙倭藄cp
(1)cydia里面安裝wget
(2)在mterminal里面登陸root權(quán)限
(3)執(zhí)行以下命令
wget mila432.com/scp
ldid -S scp
chmod 777 scp
mv scp /usr/bin/scp
3、修改默認(rèn)密碼(cydia中OpenSSH有詳細(xì)說(shuō)明)
passwd root
passwd mobile
-
安裝包管理工具
== 在Cydia中搜索 APT 0.6 Transitional并安裝 ==
1、SSH登錄iPhone后,可在電腦終端輸入如下命令:
apt-get update 【更新所有的源】
apt-get upgrade 【更新所有通過(guò)apt-get安裝的程序】
apt-get install packagename 【安裝軟件包】
apt-get remove packagename 【刪除軟件包,不刪除依賴(lài)包,不刪除配置文件】
apt-get remove --purge packagename 【刪除該軟件包,不刪除依賴(lài)包,刪除配置文件】
apt-get autoremove packagename [刪除該軟件包,刪除依賴(lài)包,不刪除配置文件]
apt-get autoremove --purge packagname 【可以刪除所有依賴(lài)包+配置文件】
apt-cache search string 【搜索含有該string字段的軟件包】
apt-cache show packagename 【詳細(xì)顯示該軟件包的信息】
apt-get clean 【清除apt-get安裝的軟件包備份,可以釋放儲(chǔ)存空間,不影響軟件正常使用】
2、使用apt-get 安裝軟件包
== e.g 安裝traceroute ==
發(fā)現(xiàn)找不到軟件包
apt-get install traceroute
如果不知道軟件包名稱(chēng),也可以用關(guān)鍵字搜索
apt-cache search traceroute
apt-get install network-cmds
3、安裝必要的工具
apt-get install ping //發(fā)送icmp報(bào)文,檢查網(wǎng)絡(luò)狀況
apt-get install ps //查看進(jìn)程信息
apt-get install find //查找文件
apt-get install tcpdump //抓包工具
apt-get install top //查看實(shí)施的進(jìn)程信息
apt-get install vim //文本編輯工具
apt-get install network-cmds //-arp, ifconfig, netstat, route, traceroute
4、工具的使用
ping www.baidu.com -c 4 -s 600
-c 數(shù)目:在發(fā)送指定數(shù)目的包后停止。
-s 字節(jié)數(shù):指定發(fā)送的數(shù)據(jù)字節(jié)數(shù),預(yù)設(shè)值是56,加上8字節(jié)的ICMP頭,一共是64ICMP數(shù)據(jù)字節(jié)
ps aux 指令
linux上進(jìn)程有5種狀態(tài):
1. 運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)
2. 中斷(休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號(hào))
3. 不可中斷(收到信號(hào)不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
4. 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
5. 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行運(yùn)行)
1)ps a 顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶(hù)的程序。
2)ps -A 顯示所有程序。
3)ps c 列出程序時(shí),顯示每個(gè)程序真正的指令名稱(chēng),而不包含路徑,參數(shù)或常駐服務(wù)的標(biāo)示。
4)ps -e 此參數(shù)的效果和指定"A"參數(shù)相同。
5)ps e 列出程序時(shí),顯示每個(gè)程序所使用的環(huán)境變量。
6)ps f 用ASCII字符顯示樹(shù)狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系。
7)ps -H 顯示樹(shù)狀結(jié)構(gòu),表示程序間的相互關(guān)系。
8)ps -N 顯示所有的程序,除了執(zhí)行ps指令終端機(jī)下的程序之外。
9)ps s 采用程序信號(hào)的格式顯示程序狀況。
10)ps S 列出程序時(shí),包括已中斷的子程序資料。
11)ps -t <終端機(jī)編號(hào)> 指定終端機(jī)編號(hào),并列出屬于該終端機(jī)的程序的狀況。
12)ps u 以用戶(hù)為主的格式來(lái)顯示程序狀況。
13)ps x 顯示所有程序,不以終端機(jī)來(lái)區(qū)分。
14)ps -l 較長(zhǎng),較詳細(xì)的顯示該P(yáng)ID的信息
在根目錄開(kāi)始查找文件名為ping的文件
find / -name ping
在/tmp目錄中查找包含'hello'字符的文件,-r表示包含子目錄
grep -r 'hello*' /tmp
top命令:是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類(lèi)似于Windows的任務(wù)管理器。
顯示系統(tǒng)內(nèi)存使用情況
top -l 1 | head -n 10 | grep PhysMem
tcpdump命令:用簡(jiǎn)單的話來(lái)定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者的定義對(duì)網(wǎng)絡(luò)上的數(shù)據(jù)包進(jìn)行截獲的包分析工具。
tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來(lái)提供分析。它支持針對(duì)網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過(guò)濾,并提供and、or、not等邏輯語(yǔ)句來(lái)幫助你去掉無(wú)用的信息。
實(shí)用命令實(shí)例
默認(rèn)啟動(dòng)
tcpdump
普通情況下,直接啟動(dòng)tcpdump將監(jiān)視第一個(gè)網(wǎng)絡(luò)接口上所有流過(guò)的數(shù)據(jù)包。
監(jiān)視指定網(wǎng)絡(luò)接口的數(shù)據(jù)包
tcpdump -i eth1
如果不指定網(wǎng)卡,默認(rèn)tcpdump只會(huì)監(jiān)視第一個(gè)網(wǎng)絡(luò)接口,一般是eth0,下面的例子都沒(méi)有指定網(wǎng)絡(luò)接口?!?
監(jiān)視指定主機(jī)的數(shù)據(jù)包
打印所有進(jìn)入或離開(kāi)sundown的數(shù)據(jù)包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機(jī)收到的和發(fā)出的所有的數(shù)據(jù)包
tcpdump host 210.27.48.1
打印helios 與 hot 或者與 ace 之間通信的數(shù)據(jù)包
tcpdump host helios and \( hot or ace \)
截獲主機(jī)210.27.48.1 和主機(jī)210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
打印ace與任何其他主機(jī)之間通信的IP 數(shù)據(jù)包, 但不包括與helios之間的數(shù)據(jù)包.
tcpdump ip host ace and not helios
如果想要獲取主機(jī)210.27.48.1除了和主機(jī)210.27.48.2之外所有主機(jī)通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機(jī)hostname發(fā)送的所有數(shù)據(jù)
tcpdump -i eth0 src host hostname
監(jiān)視所有送到主機(jī)hostname的數(shù)據(jù)包
tcpdump -i eth0 dst host hostname
監(jiān)視指定主機(jī)和端口的數(shù)據(jù)包
如果想要獲取主機(jī)210.27.48.1接收或發(fā)出的telnet包,使用如下命
$tcpdump tcp port 23 and host 210.27.48.1
對(duì)本機(jī)的udp 123 端口進(jìn)行監(jiān)視 123 為ntp的服務(wù)端口
tcpdump udp port 123
抓包結(jié)束命令:ctl+c
-
XNU,由蘋(píng)果電腦發(fā)展的操作系統(tǒng)內(nèi)核,被使用于Mac OS X中。它是Darwin操作系統(tǒng)的一部份,跟隨著Darwin一同作為自由及開(kāi)放源代碼軟件被發(fā)布。XNU是X is Not Unix的縮寫(xiě)。 ?
-
Mach是一個(gè)由卡內(nèi)基梅隆大學(xué)開(kāi)發(fā)的用于支持操作系統(tǒng)研究的操作系統(tǒng)內(nèi)核,為了用于操作系統(tǒng)之研究,特別是在分布式與并行運(yùn)算上。是最早實(shí)現(xiàn)微核心操作系統(tǒng)的例子之一,是許多其它相似的項(xiàng)目的標(biāo)準(zhǔn)。 ? ?
-
BSD (Berkeley Software Distribution,伯克利軟件套件)是Unix的衍生系統(tǒng),在1977至1995年間由加州大學(xué)伯克利分校開(kāi)發(fā)和發(fā)布的。歷史上, BSD曾經(jīng)被認(rèn)為是UNIX的一支——"BSD UNIX", 因?yàn)樗?a target="_blank" rel="nofollow">AT&T UNIX操作系統(tǒng)共享基礎(chǔ)代碼和設(shè)計(jì)。在20世紀(jì)80年代,衍生出了許多變形的UNIX授權(quán)軟件。比較著名的如DEC的Ultrix及Sun公司的SunOS。1990年代,BSD很大程度上被System V4.x版以及OSF/1系統(tǒng)所取代,晚期BSD版本為幾個(gè)開(kāi)源軟件開(kāi)發(fā)提供了平臺(tái)并且一直沿用至今。今天,“BSD”并不特指任何一個(gè)BSD衍生版本,而是類(lèi)UNIX操作系統(tǒng)中的一個(gè)分支的總稱(chēng)。 ? ?
-
FreeBSD是一種類(lèi)UNIX操作系統(tǒng),是由經(jīng)過(guò)BSD、386BSD和4.4BSD發(fā)展而來(lái)的Unix的一個(gè)重要分支。FreeBSD 為不同架構(gòu)的計(jì)算機(jī)系統(tǒng)提供了不同程度的支持。并且一些原來(lái)BSD UNIX的開(kāi)發(fā)者后來(lái)轉(zhuǎn)到FreeBSD的開(kāi)發(fā),使得FreeBSD在內(nèi)部結(jié)構(gòu)和系統(tǒng)API上和UNIX有很大的兼容性。由于FreeBSD寬松的法律條款,其代碼被好多其他系統(tǒng)借鑒包括蘋(píng)果公司的macOS,正因此由于MacOS X的UNIX兼容性,使得macOS獲得了UNIX商標(biāo)認(rèn)證。 ?