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

前言


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


前期準備


在逆向以前咱們須要準備一下如下工做.以方便咱們的逆向功能能順利開發.github

須要技能:面試

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

2.會使用Xcode.bash

3.一臺未越獄的iPhone.微信


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

PP助手這是主要的功能是下載越獄ipa文件,也就是脫殼文件.這裏是什麼脫殼文件就不過描述了.工具


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

class-dump主要是用來查看脫殼以後的Mach-O文件的所能暴露出來的頭文件.如何安裝呢?ui

方式一:能夠直接從下面的下載地址中直接下載運行好的class-dump文件.

→ → →class-dump下載傳送門

方式二:也能夠去github搜索class-dump下載xcode工程運行取出Finder中的class-dump.

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

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


#####3. 安裝MonkeyDev 其實爲何安裝MonkeyDev呢?MonkeyDev是集成與OpenDev的,可是OpenDev在13年就不在更新了,因此AloneMonkey就在此基礎上作了進一步的更新,並且更加簡單,更加傻瓜式.具體安裝步驟能夠查看原文博客.

MonkeyDev原文安裝連接

安裝完成以後,在新建項目的時候就會有以下的模塊.


修改微信運動數據的邏輯原理


總體的示意圖如上圖所示.咱們把經過PP助手下載的越獄ipa文件經過class-dump指令來查看全部包含類的頭文件.而後編寫動態庫.經過runtime的機制動態注入到破殼文件中.而後對注入完成的文件進行從新簽名,最後安裝應用程序.

其中MonkeyDev的做者已經把其中的三步進行了封裝,我玩了玩以後,發現至關的簡單粗暴無腦.


經過PP助手下載破殼ipa文件


咱們打開PP助手,而後經過"越獄程序"模塊下載"微信",以下所示.

下載完成以後,在Finder裏面找到對應的ipa文件 拿出來備用.以下圖所示.


經過Class-dump指令查看全部頭文件信息(本文可不操做)


首先,咱們先把.ipa文件進行解壓.以下所示.

解壓以後找到裏面的WeChat,而後顯示包內容.

找到包裏面的WeChat文件,以下所示.

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

class-dump -H "Mach-O文件路徑" -o "導出Headers文件的路徑"

這裏我直接把WeChat這個Mach-O文件放到了桌面之上.因此指令以下圖所示.

執行完成以後,咱們就能夠看到桌面上多了一個Headers的文件夾,打開以後全是WeChat裏面的頭文件.而後咱們可使用Sublime Text這個工具快速查找咱們所要的類.以下所示.


咱們主要是用到的是WCDeviceStepObject中的m7StepCount這個屬性.只要咱們修改這個值就能夠修改微信運動裏面的步數了.


使用MonkeyDev完成三部曲.


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

緊接着.咱們須要作的就是把咱們的ipa文件放到指定位置(固然是放在工程目錄下了,這裏就很少說了.).而後添加到工程中去.裏面的put ipa or app here文件不要刪除.

接着咱們就須要編譯所須要的動態庫就好.編寫DemoDylib.m文件就好.

把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);  
    }  
}  
複製代碼

編寫完成以後這裏有個坑就是不讓使用runtime庫,修改如圖位置便可,改成NO.

而後運行完動態庫,在運行App,便可安裝成功兩個微信.

這時候就算大功告成了.打開新安裝的微信運動便可.等待幾分鐘數據就可修改完成代碼中的數字了.


結束


到此就結束了本篇博客,騷棟班門弄斧了,Demo過大,這裏就不上傳了,若是有問題,歡迎指導批評.騷棟在此謝過了.


相關文章
相關標籤/搜索