前一段時間,一直忙於面試,也沒作研究什麼稀奇古怪的技術.近來也是學習了幾天的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文件.
方式二:也能夠去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就在此基礎上作了進一步的更新,並且更加簡單,更加傻瓜式.具體安裝步驟能夠查看原文博客.
安裝完成以後,在新建項目的時候就會有以下的模塊.
總體的示意圖如上圖所示.咱們把經過PP助手下載的越獄ipa文件經過class-dump指令來查看全部包含類的頭文件.而後編寫動態庫.經過runtime的機制動態注入到破殼文件中.而後對注入完成的文件進行從新簽名,最後安裝應用程序.
其中MonkeyDev的做者已經把其中的三步進行了封裝,我玩了玩以後,發現至關的簡單粗暴無腦.
咱們打開PP助手,而後經過"越獄程序"模塊下載"微信",以下所示.
下載完成以後,在Finder裏面找到對應的ipa文件 拿出來備用.以下圖所示.
首先,咱們先把.ipa文件進行解壓.以下所示.
解壓以後找到裏面的WeChat,而後顯示包內容.
找到包裏面的WeChat文件,以下所示.
拿出來.而後使用下面class-dump指令格式
class-dump -H "Mach-O文件路徑" -o "導出Headers文件的路徑"
這裏我直接把WeChat這個Mach-O文件放到了桌面之上.因此指令以下圖所示.
執行完成以後,咱們就能夠看到桌面上多了一個Headers的文件夾,打開以後全是WeChat裏面的頭文件.而後咱們可使用Sublime Text這個工具快速查找咱們所要的類.以下所示.
咱們主要是用到的是WCDeviceStepObject中的m7StepCount這個屬性.只要咱們修改這個值就能夠修改微信運動裏面的步數了.
這時候咱們就建立一個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過大,這裏就不上傳了,若是有問題,歡迎指導批評.騷棟在此謝過了.