iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

神經騷棟發表於2018-03-22

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

前言


前一段時間,一直忙於面試,也沒做研究什麼稀奇古怪的技術.近來也是學習了幾天的iOS逆向工程方面的知識,這裡就班門弄斧下,看看如何通過逆向工程來修改微信運動資料.先看一下效果圖.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


前期準備


在逆向之前我們需要準備一下以下工作.以方便我們的逆向功能能順利開發.

需要技能:

1.懂基本的終端指令以及操作.

2.會使用Xcode.

3.一臺未越獄的iPhone.


#####1. 安裝PP助手

PP助手這是主要的功能是下載越獄ipa檔案,也就是脫殼檔案.這裡是什麼脫殼檔案就不過描述了.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


#####2. 安裝class-dump

class-dump主要是用來檢視脫殼之後的Mach-O檔案的所能暴露出來的標頭檔案.如何安裝呢?

方式一:可以直接從下面的下載地址中直接下載執行好的class-dump檔案.

→ → →class-dump下載傳送門

方式二:也可以去github搜尋class-dump下載xcode工程執行取出Finder中的class-dump.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

然後把class-dump複製到**/usr/local/bin/class-dump**即可(OS X 10.11以上).

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

這時候我們直接在終端上敲出class-dump指令了.如下所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


#####3. 安裝MonkeyDev 其實為什麼安裝MonkeyDev呢?MonkeyDev是整合與OpenDev的,但是OpenDev在13年就不在更新了,所以AloneMonkey就在此基礎上做了進一步的更新,而且更加簡單,更加傻瓜式.具體安裝步驟可以檢視原文部落格.

MonkeyDev原文安裝連結

安裝完成之後,在新建專案的時候就會有如下的模組.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


修改微信運動資料的邏輯原理


iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

整體的示意圖如上圖所示.我們把通過PP助手下載的越獄ipa檔案通過class-dump指令來檢視所有包含類的標頭檔案.然後編寫動態庫.通過runtime的機制動態注入到破殼檔案中.然後對注入完成的檔案進行重新簽名,最後安裝應用程式.

其中MonkeyDev的作者已經把其中的三步進行了封裝,我玩了玩之後,發現相當的簡單粗暴無腦.


通過PP助手下載破殼ipa檔案


我們開啟PP助手,然後通過"越獄程式"模組下載"微信",如下所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

下載完成之後,在Finder裡面找到對應的ipa檔案 拿出來備用.如下圖所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


通過Class-dump指令檢視所有標頭檔案資訊(本文可不操作)


首先,我們先把.ipa檔案進行解壓.如下所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

解壓之後找到裡面的WeChat,然後顯示包內容.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

找到包裡面的WeChat檔案,如下所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

拿出來.然後使用下面class-dump指令格式

class-dump -H "Mach-O檔案路徑" -o "匯出Headers檔案的路徑"

這裡我直接把WeChat這個Mach-O檔案放到了桌面之上.所以指令如下圖所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

執行完成之後,我們就可以看到桌面上多了一個Headers的資料夾,開啟之後全是WeChat裡面的標頭檔案.然後我們可以使用Sublime Text這個工具快速查詢我們所要的類.如下所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


我們主要是用到的是WCDeviceStepObject中的m7StepCount這個屬性.只要我們修改這個值就可以修改微信運動裡面的步數了.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


使用MonkeyDev完成三部曲.


這時候我們就建立一個MonkeyApp工程出來.如下所示.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

緊接著.我們需要做的就是把我們的ipa檔案放到指定位置(當然是放在工程目錄下了,這裡就不多說了.).然後新增到工程中去.裡面的put ipa or app here檔案不要刪除.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

接著我們就需要編譯所需要的動態庫就好.編寫DemoDylib.m檔案就好.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

把DemoDylib.m檔案中所有的內容刪除(除匯入標頭檔案外).新增如下程式碼.

CHDeclareClass(WCDeviceStepObject); // declare class  
  
CHOptimizedMethod(0, self,  unsigned int, WCDeviceStepObject, m7StepCount) // hook method (with no arguments and no return value)  
{  
    // write code here ...  
      
    return 98888; //隨意改數 
}  
  
  
  
CHConstructor // code block that runs immediately upon load  
{  
    @autoreleasepool  
    {  
        CHLoadLateClass(WCDeviceStepObject);  
        CHHook(0, WCDeviceStepObject,m7StepCount);  
    }  
}  
複製程式碼

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

編寫完成之後這裡有個坑就是不讓使用runtime庫,修改如圖位置即可,改為NO.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

然後執行完動態庫,在執行App,即可安裝成功兩個微信.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

這時候就算大功告成了.開啟新安裝的微信運動即可.等待幾分鐘資料就可修改完成程式碼中的數字了.

iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄


結束


到此就結束了本篇部落格,騷棟班門弄斧了,Demo過大,這裡就不上傳了,如果有問題,歡迎指導批評.騷棟在此謝過了.


iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄

相關文章