前言
前一段時間,一直忙于面試,也沒做研究什么稀奇古怪的技術.近來也是學習了幾天的iOS逆向工程方面的知識,這里就班門弄斧下,看看如何通過逆向工程來修改微信運動數(shù)據(jù).先看一下效果圖.
前期準備
在逆向之前我們需要準備一下以下工作.以方便我們的逆向功能能順利開發(fā).
需要技能:
1.懂基本的終端指令以及操作.
2.會使用Xcode.
3.一臺未越獄的iPhone.
1. 安裝PP助手
PP助手這是主要的功能是下載越獄ipa文件,也就是脫殼文件.這里是什么脫殼文件就不過描述了.
2. 安裝class-dump
class-dump主要是用來查看脫殼之后的Mach-O文件的所能暴露出來的頭文件.如何安裝呢?
方式一:可以直接從下面的下載地址中直接下載運行好的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就在此基礎上做了進一步的更新,而且更加簡單,更加傻瓜式.具體安裝步驟可以查看原文博客.
安裝完成之后,在新建項目的時候就會有如下的模塊.
修改微信運動數(shù)據(jù)的邏輯原理
整體的示意圖如上圖所示.我們把通過PP助手下載的越獄ipa文件通過class-dump指令來查看所有包含類的頭文件.然后編寫動態(tài)庫.通過runtime的機制動態(tài)注入到破殼文件中.然后對注入完成的文件進行重新簽名,最后安裝應用程序.
其中MonkeyDev的作者已經(jīng)把其中的三步進行了封裝,我玩了玩之后,發(fā)現(xiàn)相當?shù)暮唵未直o腦.
通過PP助手下載破殼ipa文件
我們打開PP助手,然后通過"越獄程序"模塊下載"微信",如下所示.
下載完成之后,在Finder里面找到對應的ipa文件 拿出來備用.如下圖所示.
通過Class-dump指令查看所有頭文件信息(本文可不操作)
首先,我們先把.ipa文件進行解壓.如下所示.
解壓之后找到里面的WeChat,然后顯示包內(nèi)容.
找到包里面的WeChat文件,如下所示.
拿出來.然后使用下面class-dump指令格式
class-dump -H "Mach-O文件路徑" -o "導出Headers文件的路徑"
這里我直接把WeChat這個Mach-O文件放到了桌面之上.所以指令如下圖所示.
執(zhí)行完成之后,我們就可以看到桌面上多了一個Headers的文件夾,打開之后全是WeChat里面的頭文件.然后我們可以使用Sublime Text這個工具快速查找我們所要的類.如下所示.
我們主要是用到的是WCDeviceStepObject中的m7StepCount這個屬性.只要我們修改這個值就可以修改微信運動里面的步數(shù)了.
使用MonkeyDev完成三部曲.
這時候我們就創(chuàng)建一個MonkeyApp工程出來.如下所示.
緊接著.我們需要做的就是把我們的ipa文件放到指定位置(當然是放在工程目錄下了,這里就不多說了.).然后添加到工程中去.里面的put ipa or app here文件不要刪除.
接著我們就需要編譯所需要的動態(tài)庫就好.編寫DemoDylib.m文件就好.
把DemoDylib.m文件中所有的內(nèi)容刪除(除導入頭文件外).添加如下代碼.
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; //隨意改數(shù)
}
CHConstructor // code block that runs immediately upon load
{
@autoreleasepool
{
CHLoadLateClass(WCDeviceStepObject);
CHHook(0, WCDeviceStepObject,m7StepCount);
}
}
編寫完成之后這里有個坑就是不讓使用runtime庫,修改如圖位置即可,改為NO.
然后運行完動態(tài)庫,在運行App,即可安裝成功兩個微信.
這時候就算大功告成了.打開新安裝的微信運動即可.等待幾分鐘數(shù)據(jù)就可修改完成代碼中的數(shù)字了.
結束
到此就結束了本篇博客,騷棟班門弄斧了,Demo過大,這里就不上傳了,如果有問題,歡迎指導批評.騷棟在此謝過了.