91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS逆向開發中如何鎖定APP的目標類與函數

發布時間:2022-01-18 10:00:37 來源:億速云 閱讀:134 作者:柒染 欄目:大數據

iOS逆向開發中如何鎖定APP的目標類與函數,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

之前介紹了怎么獲取APP的所有類的結構信息,這個有什么用呢?用處大了,比如以這一步為基礎,下一步通過注入來做更多研究工作。

注入的最小單位是函數,實際上,編譯執行的程序在編譯后,類就不復存在了,留下來的只是二進制代碼(指令或數據都是一樣的二進制代碼)。所幸的是,跟我們打交道的,并不是二進制代碼(那會困難很多),而是函數,而且是某個類的函數。

那么,在用classdump拿到成千上萬個類與函數后,哪個函數才是我們關心的呢?怎么鎖定它們呢?

下面介紹鎖定目標類與函數的可行的辦法。

基本上小程研究的目標APP都有豐富的界面,而小程關心的場景基本都是由特定的界面觸發,所以,從界面入手是個不錯的選擇。

有沒有辦法找出某個界面對應哪一個類呢?這樣就可以在classdump拿到的眾多的類中仔細研究這個界面類擁有的函數與成員變量。

小程覺得目前最好的辦法就是使用Reveal工具。

 
(一)使用Reveal

先下載一個Reveal(有破解版本),比如1.6版本或1.5版本,或2.0版本。

 
(1)拷貝libReveal.dylib到手機

Reveal最大的一個作用是把手機上的某個APP的界面同步顯示到電腦上,要做到這個效果,Reveal既要在電腦上運行,同時也要把一個“內鬼”打入到手機。這個打入手機的“內鬼”就是libReveal.dylib。

在電腦上運行Reveal后,點擊菜單Help,選擇Show Reveal Library in Finder,再點擊iOS Library,就可以找到libReveal.dylib。

拷貝到DynamicLibrary目錄下:

scp libReveal.dylib root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
 

基本上,手機上的APP在啟動運行后,都可以加載DynamicLibraries里面的動態庫(以dylib為后綴),至于加載哪個動態庫,則由plist文件決定。這個知識點很重要,這意味著你可以寫一個plist文件,讓某個APP在啟動時加載你寫的動態庫,這是注入的前提。

/Library/MobileSubstrate/DynamicLibraries,這個目錄,在手機成功越獄后就會存在。

對于Reveal2.0版本,也以上面的辦法定位動態庫文件,但這個文件名叫“RevealServer”,可以拷貝過去后命名為“libReveal.dylib”即可。

 
(2)拷貝libReveal.plist到手機

找一個plist文件來修改,或者直接寫一個plist文件,命名為libReveal.plist。

libReveal.plist文件要指定讓哪個APP啟動時加載Reveal.dylib,比如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Filter</key>
    <dict>
        <key>Bundles</key>
        <array>
            <string>com.tencent.QQKSong</string>
        </array>
    </dict>
</dict>
</plist>
 

上面的plist內容,讓“全民k歌”啟動時,加載Reveal.dylib。

com.tencent.QQKSong,是“全民k歌”的BoudleID。至于目標APP的BoundleID是多少,有很多辦法可以查到,比如找到它的plist文件來查看,比如ps看進程信息,比如動態調試等等。

小白:如果不指定這個Filter呢,是不是所有的APP啟動時都加載?

小程:iOS8之前的版本是這樣的,但之后的版本都需要指定APP。所以,不管3724,加上這個Filter總是不會錯的。

然后,拷貝libReveal.plist到手機:

scp libReveal.plist root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
 

之后,在電腦上再次啟動Reveal就可以連接目標APP,來分析界面類了。

比如,在手機上重啟全民k歌,在電腦上重啟Reveal并選擇菜單項,連接全民k歌。可以看到,全民k歌的一個頁面是這樣(右下角的類名是重點):

iOS逆向開發中如何鎖定APP的目標類與函數  
全民k歌頁面
 
(二)讓全民k歌自動切換至歌手頁面

為了“感性”一點,小程做一個演示,通過Reveal定位到全民k歌的目標類,并讓全民k歌啟動后自動切換至歌手頁面。

首先通過Reveal,定位到底部導航條的所在的viewcontroller類是KSRootTabBarController

然后,通過查看classdump翻譯到的類結構中,找到這個類。可以看到,點擊“我要唱”按鈕,實際就是觸發KSRootTabBarController::onClickTabBarItem函數。

接著,就可以hook這個類了,讓目標APP自動跳轉。這一步的具體操作,小程會在后續詳細介紹,你只需要“感性”地知道這回事就好。

最終,自動跳轉的效果是這樣的:

iOS逆向開發中如何鎖定APP的目標類與函數  
自動切換

以上講解了Reveal的使用。Reveal是定位目標類與函數的有效的辦法,除了這個辦法,還有一個辦法就是,觀察所有類的類名,猜測可能有關系的類(比如應該具備某個關鍵字),再注入這些類的函數并用NSLog輸出信息,或者動態調試觀察執行的流程,最終確定目標類與函數。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济源市| 赞皇县| 牙克石市| 长泰县| 遂川县| 衢州市| 巩义市| 乌兰浩特市| 塘沽区| 西宁市| 栖霞市| 高雄市| 启东市| 忻州市| 镇宁| 大邑县| 大同县| 内黄县| 长顺县| 汝州市| 北安市| 南平市| 济阳县| 平和县| 双江| 嫩江县| 蚌埠市| 呼玛县| 宿松县| 广饶县| 西平县| 红桥区| 东乡族自治县| 黄平县| 嘉荫县| 大名县| 南郑县| 土默特右旗| 大城县| 磐安县| 威宁|