iOS逆向-day3:Cycript

一、Cycript 簡介

  • 1.1、Cycript 是Objective-C++柿汛、ES6(JavaScript)初澎、Java等語法的混合物,可以用來探索嫌松、修改、調(diào)試正在運行的 Mac / iOS APP
    官網(wǎng)
    文檔
    通過Cydia安裝Cycript,即可在iPhone上調(diào)試運行中的APP
  • 1.2贿讹、Cycript的開啟和關(guān)閉
    • 開啟(進程的查看需要借助 PS指令,請看1.3)

      cycript
      cycript -p 進程ID
      cycript -p 進程名稱
      
      • 愛奇藝的進程是 2613够掠,那么輸入:cycript -p 2613民褂,之后的操作都是在調(diào)試愛奇藝
      • 建議使用進程名稱(如愛奇藝:cycript -p iQiYiPhoneVideo),因為進程的ID一直在變
    • 取消輸入:Ctrl + C

    • 退出:Ctrl + D

    • 取消輸入:Command + R

  • 1.3疯潭、ps 命令
    • 安裝 adv-cmds
    • ps命令是 process status的縮寫赊堪,使用ps命令可以列出系統(tǒng)當(dāng)前的進程
      • 列出所有的進程

        ps –A
        ps aux
        

        提示:輸入上面的指令是在 終端連接iphone的情況下


        上圖左邊進程 ID右邊進程的可執(zhí)行文件袁勺,右邊最后一個單詞可以稱為進程的名稱雹食,如上圖的:launch、amfid期丰、syslogd.......

      • 搜索關(guān)鍵詞群叶,如果是愛奇藝,可以搜索 Video

        ps –A | grep 關(guān)鍵詞
        

二钝荡、Cycript常用語法

  • 2.1街立、常用語法一

    • (1)、獲取UIApplication 對象埠通,下面等價

      UIApp
      [UIApplication sharedApplication]
      
      • 說明愛奇藝的UIApplication 就是 UIApplication赎离,沒有改名字
    • (2)、定義變量:var 變量名 = 變量值

       // 獲取 app的Window
       var appWindow = UIApp.keyWindow
       // 獲取根控制器
       app.rootViewController
      

      以愛奇藝為例打印的是:<RootViewController: 0x12e075600>"端辱,說明愛奇藝的根控制器就是:RootViewController

    • (3)梁剔、用內(nèi)存地址獲取對象:#內(nèi)存地址

    • (4)、ObjectiveC.classes:已加載的所有OC類,如下查看 糗事百科的主界面

      WechatIMG45.jpeg
    • (5)舞蔽、查看對象的所有成員變量:*對象,如查看 UIApplication 里面的所有成員變量荣病,可以如下

      *UIApp
      
  • 2.2、常用語法二

    • (1)渗柿、遞歸打印view的所有子控件(跟LLDB一樣的函數(shù))

      view.recursiveDescription().toString()
      
    • (2)个盆、篩選出某種類型的對象

      choose(UIViewController)
      choose(UITableViewCell)
      
  • 2.3、上面的使用太繁瑣了,我們可以使用 MJ 老師的工具: mjcript颊亮,它是基于Cycript實現(xiàn)的一些實用函數(shù)

    • 安裝
    • 步驟
    • (1)柴梆、下載mjcript庫
    • (2)、將mjcript.cy文件拖到/usr/lib/cycript0.9终惑,建議下載 funbox 來管理文件
    • (3)绍在、SSH連接iOS設(shè)備,這個如果不會的可以參考 上一篇博客
    • (4)狠鸳、使用Cycript監(jiān)聽APP揣苏,通過 @import導(dǎo)入mjcript


  • 2.4、mjcript 工具的用法

    • 一些常用屬性
    • 拿到顯示在最前面的控制器件舵,下面以糗事百科為例
    • 我們可以看到 糗事百科 我的界面的控制器叫做:QBMeViewController
    • 獲得某個類的 對象方法名列表卸察,支持正則表達式查詢

      MJInstanceMethodNames(控制器的名字 或者 #地址)
      // 舉個正則的例子,找有關(guān)login的對象方法
      MJInstanceMethodNames(控制器的名字 或者 #地址,/login/) 
      
      • 我這里是以糗事百科的設(shè)置界面為例
    • 獲得某個類的 類方法名列表铅祸,支持正則表達式查詢

      MJClassMethodNames(控制器的名字 或者 #地址)
      
    • 獲取界面的 view坑质,下面以糗事百科的登錄界面為例

      MJSubviews(#地址.view)
      

      接著我們可以在登錄界面的文本框上動手腳,比如修改


      用: #內(nèi)存地址.text = "190" 來修改手機號的輸入

      #0x1443a7e00.text = "190"  
      

      我們還可以找到登錄按鈕 临梗,把它移除掉涡扼,如下


      拿到登錄的按鈕地址,做如下操作

      [#0x1443b9f60 removeFromSuperview]  
      
      • 這里做一個小提示:漢子與unicode碼轉(zhuǎn)換的方式,下面是用Python

        python
        unicode('登錄','UTF-8')
        u'\u767b\u5f55'
        

三盟庞、封裝Cycript - .cy文件

  • 3.1吃沪、.cy文件 的簡單寫法,我的文件名是:jkcycript

    (function(exports) {
         // 這里面可以填充我們需要的東西
    
    })(exports);
    

    函數(shù) 和 常量的定義

    (function(exports) {
         //  求和
         sum = function(a,b) {
             return a + b
         };
         //  求差
         minus = function(a,b) {
             return a - b
         };
    })(exports);
    // 在使用的時候我們需要如下操作
    // 導(dǎo)入: @import jkcycript
    @import jkcycript
    sum(2,3) // 結(jié)果是:5
    

    上面是全局的什猖,如果想要前綴可以寫為

    (function(exports) {
         //  求和
         exports.sum = function(a,b) {
             return a + b
         };
         //  求差
         exports.minus = function(a,b) {
             return a - b
         };
    })(exports);
    // 在使用的時候我們需要如下操作
    // 導(dǎo)入: @import jkcycript
    @import jkcycript
    jkcycript.sum(2,3) // 結(jié)果是:5
    
    • exports 參數(shù)名固定票彪,用于向外提供接口
    • .cy文件存放到/usr/lib/cycript0.9目錄下
  • 3.2、更多的可以參考MJ老師的mjcript

四不狮、Reveal (UIView層級分級工具)

Reveal
  • 4.1降铸、Reveal是一款調(diào)試iOS程序UI界面的神器
    官網(wǎng):https://revealapp.com
    下載:https://revealapp.com/download/
    破解版:提取碼: y8ri
    建議下載至少Reveal4版本,支持USB連接調(diào)試摇零,速度快推掸。低版本的只能WiFi連接調(diào)試

    提示 :Reveal 只能識別 UIView 的層級結(jié)構(gòu),想要是識別控制器的結(jié)構(gòu)驻仅,我們可以使用 mjcript

  • 4.2噪服、Reveal 調(diào)試環(huán)境配置 (越獄設(shè)備)

    • 調(diào)試環(huán)境配置 一 :iPhone上安裝Reveal Loader
      軟件源:http://apt.so/codermjlee铃彰,不要安裝其他源的版本,有可能不支持新版Reveal


    • 調(diào)試環(huán)境配置 二
      安裝完Reveal Loader后芯咧,打開【設(shè)置】,選擇需要調(diào)試的APP

    • 調(diào)試環(huán)境配置 三
      找到Mac的Reveal中的 RevealServer 文件,覆蓋iPhone的/Library/RHRevealLoader/RevealServer文件,我們可以用 iFunBox 打開


      WechatIMG61.jpeg
      • 重啟SpringBoard或者重啟手機敬飒,可以在iPhone上輸入終端命令
        重啟SpringBoard:killall SpringBoard
        重啟手機: reboot
  • 4.3邪铲、在上面的操作做完,我們再重新打開 Reveal 无拗,就可以看到使用中的iphone

    選擇USB方式開始調(diào)試:速度更快

    屏幕快照 2019-11-29 下午1.01.29.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末带到,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子英染,更是在濱河造成了極大的恐慌揽惹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件四康,死亡現(xiàn)場離奇詭異搪搏,居然都是意外死亡,警方通過查閱死者的電腦和手機闪金,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門疯溺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哎垦,你說我怎么就攤上這事囱嫩。” “怎么了漏设?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵墨闲,是天一觀的道長。 經(jīng)常有香客問我郑口,道長鸳碧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任潘酗,我火速辦了婚禮杆兵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仔夺。我一直安慰自己琐脏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布缸兔。 她就那樣靜靜地躺著日裙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惰蜜。 梳的紋絲不亂的頭發(fā)上昂拂,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音抛猖,去河邊找鬼格侯。 笑死鼻听,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的联四。 我是一名探鬼主播撑碴,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朝墩!你這毒婦竟也來了醉拓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤收苏,失蹤者是張志新(化名)和其女友劉穎亿卤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹿霸,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡排吴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了杜跷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傍念。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖葛闷,靈堂內(nèi)的尸體忽然破棺而出憋槐,到底是詐尸還是另有隱情,我是刑警寧澤淑趾,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布阳仔,位于F島的核電站,受9級特大地震影響扣泊,放射性物質(zhì)發(fā)生泄漏近范。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一延蟹、第九天 我趴在偏房一處隱蔽的房頂上張望评矩。 院中可真熱鬧,春花似錦阱飘、人聲如沸斥杜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔗喂。三九已至,卻和暖如春高帖,著一層夾襖步出監(jiān)牢的瞬間缰儿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工散址, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乖阵,地道東北人宣赔。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像瞪浸,于是被迫代替她去往敵國和親拉背。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353