逆向1(Cycript使用簡介)

準備工作

1.openSSH 安裝
越獄iPhone 使用Cydia 搜索 openSSH,安裝即可。

  • SSH 連接越獄iPhone兩種方式
    <1> WiFi 無線連接
1) 手機和Mac電腦在同一網絡下。
2) 在設置里找到iPhone的ip
3) mac終端里輸入 ssh root@192.168.0.102
注意:
1.如果是第一次連接的話,輸入yes按回車即可
2.然后輸入密碼,這里的密碼是SSH的密碼,而不是你電腦的密碼,默認是alpine
3.出現你的手機名字:~root# 就代表連接成功了
4.第一次連接后建議大家把默認密碼修改了,修改密碼的命令是 passwd。輸入2次新密碼既可修改

<2> USB連接(比WIFI響應速度快,網絡環境無限制)
usbmuxd是網上開源社區,貌似是國外牛人傾力打造的一個專門針對該功能開源庫)

1> 通過Homebrew來安裝,沒有安裝brew的[看這里](http://www.lxweimin.com/p/d69a23d20b8e))
brew install usbmuxd
2>usbmuxd 自帶工具iproxy,iproxy 可以快捷的操作連接iPhone等操作。由于Mac上只支持4位的端口號,所以需要把iPhone的默認端口22映射到Mac上,相當于建立一個Mac和iPhone之間的通道。
iproxy 2222 22
以上命令就是把當前連接設備的22端口(SSH端口)映射到電腦的2222端口,那么想和設備22端口通信,直接和本地的2222端口通信就可以了。
3) 終端提示 waiting for connection ,表示這兩個端口之間已經可以通信了,保留當前終端(如果關閉就停止端口之間的通信了),新建另一個終端輸入,默認密碼:alpine (如果你剛開始修改了密碼,就用修改的那個密碼)
ssh -p 2222 root@127.0.0.1

2.安裝軟件包管理工具apt-get
在Cydia中搜索 APT 0.6 Transitional并安裝

apt-get install  packagename         【安裝軟件包】
//下面這些命令都是在openssh里面用的
比如下面一些常用的
apt-get install syslogd
apt-get install  ping
apt-get install  ps
apt-get install  find 
apt-get install  tcpdump
//如果不知道軟件包名稱,也可以用關鍵字搜索
apt-cache search traceroute
如果發現找不到軟件包,先 apt-get update,更新所有的源
Cycript的簡介

Cycript可以攻擊iOS軟件.它是一種介于Oc和JavaScript之間的編程語言. Cycript由JayFreeman(杰弗里曼)編寫,他是iOS第三方工具的作者,包括Cydia軟件安裝器, Cydgets以及iOS的一個Java移植版.Cycript完全兼容JavaScript,你可以使用完整的JS語法來編寫程序, 但同時可以直接操作OC語言的組件.簡單來說Cycript高超地實現了目前所有的運行時操作技巧.它混合了oc與js語法的一個工具, 讓開發者在命令行下和應用交互,在運行時查看和修改應用。

Cycript安裝方式
  1. 去Cydia商店里面下載安裝Cycript.
  2. apt-get install cycript
Cycript使用

1.SpringBoard 使用
我們所能看到的iOS上面的東西,都屬于SpringBoard里面.

下面演示幾個例子

首先進入SpringBoard
iPhone:~ root# cycript -p SpringBoard
1.截屏
cy# var shot = [SBScreenShotter sharedInstance]
#"<SBScreenShotter: 0x13790a7e0>"
cy# [shot saveScreenshot:YES]
2.隱藏桌面
cy# UIApp.keyWindow
#"<SBHomeScreenWindow: 0x1308f14b0; SpringBoard-0x1308f14b0-3; baseClass = UIWindow; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1308dc370>; layer = <UIWindowLayer: 0x1308ccb40>>"
//可以通過地址調用 也可以將地址賦值給變量
cy# screen = #0x1308f14b0 
#"<SBHomeScreenWindow: 0x1308f14b0; SpringBoard-0x1308f14b0-3; baseClass = UIWindow; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1308dc370>; layer = <UIWindowLayer: 0x1308ccb40>>"
cy# screen.hidden = YES
true
cy# screen.hidden = NO
false
// 改變手機的背景色
cy# screen.backgroundColor = [UIColor redColor]
#"UIDeviceRGBColorSpace 1 0 0 1"
3. 彈框
cy# var alert =[[[UIAlertView alloc]initWithTitle:@"Title" message:@"Hello World" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil] show]
cy# 
  1. 通過app的名字來注入進程
1.確認進程名或者進程PID
//查看所有進程
iPhone:~ root# ps -e 
//查看單個,比如微信
iPhone:~ root# ps -e | grep WeChat 

2.注入
//方式1  名字
iPhone:~ root# cycript -p WeChat
cy#
//方式2 進程ID
iPhone:~ root# cycript -p 1751  
cy#

3.退出cycript
Control+D
  1. 注入微信
// 打印當前的控制器(如果沒反應也可以用下面的)
UIApp.keyWindow.rootViewController.visibleViewController  
#"<ViewController: 0x124645240>"
//獲取當前控制器
iPhone:~ root# cycript -p WeChat  
cy# function currentVC() {
       var app = [UIApplication sharedApplication]  
           var keyWindow = app.keyWindow  
               var rootController = keyWindow.rootViewController  
                   var visibleController = rootController.visibleViewController  
                       if (!visibleController){
                              return rootController
                                  }
                                      return visibleController.childViewControllers[0]
                                      }
cy# var vc = currentVC()
#"<WCAccountLoginFirstViewController: 0x160073400>"
cy# viewC = #0x160073400
#"<WCAccountLoginFirstViewController: 0x160073400>"
//找到控制器下的view
cy# viewC.view
#"<UIView: 0x161272fa0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x161272e60>>"
cy# view = #0x161272fa0
#"<UIView: 0x161272fa0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x161272e60>>"
//打印視圖的層級結構
cy# view.recursiveDescription().toString()
`<UIView: 0x161272fa0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x161272e60>>
  | <UIView: 0x161273110; frame = (0 0; 320 633); autoresize = W; layer = <CALayer: 0x161273280>>
  |    | <UIImageView: 0x161274990; frame = (0 0; 320 568); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x161274660>>
  | <UIView: 0x161274bf0; frame = (0 483; 320 65); autoresize = W+TM; layer = <CALayer: 0x161274d60>>
  |    | <FixTitleColorButton: 0x1612751a0; baseClass = UIButton; frame = (20 18; 130 47); clipsToBounds = YES; opaque = NO; autoresize = RM; layer = <CALayer: 0x161275700>>
  |    |    | <UIButtonLabel: 0x161308210; frame = (47 13; 36 21.5); text = 'fuck'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x161104ad0>>
  |    | <FixTitleColorButton: 0x1612771c0; baseClass = UIButton; frame = (170 18; 130 47); clipsToBounds = YES; opaque = NO; autoresize = LM; layer = <CALayer: 0x1612774a0>>
  |    |    | <UIButtonLabel: 0x161277cb0; frame = (47 13; 36 21.5); text = '\u6ce8\u518c'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x161277ec0>>
  |    |    |    | <_UILabelContentLayer: 0x15ff58c00> (layer)
  | <UIButton: 0x161278ce0; frame = (234 0; 86 49); opaque = NO; autoresize = LM; layer = <CALayer: 0x15fee7ca0>>
  |    | <UIButtonLabel: 0x1612791a0; frame = (15 16; 56 17); text = '\u7b80\u4f53\u4e2d\u6587'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1612793b0>>
  |    |    | <_UILabelContentLayer: 0x15ffe56d0> (layer)`
//修改按鈕上的內容
cy#  #0x1612791a0.text = @"socket"
//可以打印出應用里面使用textField做的控件信息
cy# choose(UITextField)
[#"<WCUITextField: 0x14f02d7d0; baseClass = UITextField; frame = (20 0; 290 44); text = ''; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f27c7a0>; layer = <CALayer: 0x14f059ef0>>",#"<WCUITextField: 0x14f044260; baseClass = UITextField; frame = (20 0; 280 44); text = '\xe4\xb8\xad\xe5\x9b\xbd'; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f12f990>; layer = <CALayer: 0x14f0a8170>>",#"<WCUITextField: 0x14f0873c0; baseClass = UITextField; frame = (20 0; 73 44); text = '+86'; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f09d5c0>; layer = <CALayer: 0x14f0688a0>>",#"<WCUITextField: 0x14f262e80; baseClass = UITextField; frame = (10 0; 197 44); text = ''; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f27ad80>; layer = <CALayer: 0x14f01e470>>"]
//修改文字
cy# #0x14f0873c0.text = @"countryCode"
@"countryCode"
// 設置密碼是否顯示或者隱藏
cy# #0x14f262e80.secureTextEntry = NO
false
//注意YES
cy# #0x14f262e80.secureTextEntry = yes
throw new ReferenceError("Can't find variable: yes")
cy# #0x14f262e80.secureTextEntry = YES
true
cy#
注意

如果全是中文,我們可以編碼轉換為UNICODE后,直接搜索UNICODE編碼。推薦一個轉換編碼的網址:http://tool.chinaz.com/Tools/Unicode.aspx

scp命令使用

1. 將iphone上的文件拷貝到mac上
scp 手機上文件路徑 mac用戶名@mac ip:mac文件地址
例子:將手機上tmp目錄下的libETL.log拷貝到mac桌面testing文件夾下
iPhone:/tmp root# scp /tmp/libETL.log zl@192.168.0.102:/Users/zl/Desktop/testing
注意:
(1)mac用戶名 終端用who查看
(2)輸入的密碼是mac管理員的密碼
2. 將mac上的文件拷貝到iphone上
例子:將mac tmp目錄下的test.txt拷貝到mac桌面tmp文件夾下
iPhone:/tmp root# scp zl@192.168.0.102:/tmp/test.txt .
注意事項

如果連接不上,在Mac 終端輸入命令ssh localhost得到
ssh: connect to host localhost port 22: Connection refused
解決方法是選擇系統偏好設置->選擇共享->點擊遠程登錄
然后再輸入命令ssh localhost發現已經解決問題

補充一波mac終端快捷鍵

Command + K             清屏
Command + T             新建標簽
Command +W              關閉當前標簽頁
Command + S             保存終端輸出
Command + D             垂直分隔當前標簽頁
Command + Shift + D     水平分隔當前標簽頁
Command + shift +  {或} 向左/向右切換標簽

命令、文件名等自動補全 :    Tab
終止操作 :               Ctrl + c
光標回到命令 行首 :        Ctrl + a
光標回到命令 行尾 :        Ctrl + e
刪除光標處到 行首的字符 :   Ctrl + w
刪除光標處到 行尾的字符 :   Ctrl + k
刪除整個命令行文本字符 :    Ctrl + u?
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容

  • 工具 class-dump 用來提取已經砸過殼的 app 的頭文件 下載地址 http://stevenygard...
    輝g_9274閱讀 2,637評論 1 7
  • [TOC] ==iOS逆向環境介紹== *** 越獄環境:iphone5s iOS 8.3*** 1.Drawin...
    錦鯉躍龍閱讀 1,396評論 2 2
  • #iOS-Jailbearking-Study ##iOS越獄學習 iOS越獄就是發現iOS設備硬件或者軟件的漏洞...
    XLsn0w閱讀 480評論 0 0
  • 飛戈飛于16年7月1日 人才是什么?能解決問題的是人才.能策劃戰略的是人才.能連接起不同點的是人才.能設計產品的是...
    飛戈飛閱讀 189評論 0 0
  • 復習著復習著 反正今天的復習很糟糕就是了 第一次玩簡書。覺得自己好像開辟了太多的小天地,這樣不好。 看見慧瑩的朋友...
    黃芒果閱讀 223評論 0 0