不越獄 繼續逆向 微信運動
接下來還是在 非越獄 環境中進行。

上篇文章中討論了如何使用Hopper 來修改二級制文件實現逆向,雖然修改過程很簡單,但是由於只能針對於匯編語言進行修改,所以還是有很大的局限性,如果能直接用源語言(Objective-c)來進行修改,那就能為所欲為了。
所以這就是接下來要干的:
安裝 iOSOpenDev
提到越獄開發,你可能知道Theos,它很大程度上簡化了越獄開發,而 iOSOpenDev 提供了一系列關於越獄開發的模板,結合Theos可以讓開發Tweak跟開發普通應用一樣簡單。

由於作者很長時間已經沒有更新iOSOpenDev,而Xcode版本在不停的變更,所以在新版本Xcode的安裝的過程中會遇到一些坑。
下面總結一些填坑的技巧:
- 首先,安裝失敗后 可以 通過 Commond + L 查看安裝錯誤信息,然后Google。
- 新版本的Xcode 更新后一些文件目錄的調整,導致iOSOpenDev 找不到。具體目錄結構的調整,可參考 這篇文章。
- 在Xcode7.3 的iOS 9.3 的SDK 中蘋果去除了 PrivateFrameworks,我們可以通過下載9.2 SDK 中的去替代。下載
SDK位置:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library - 將所有需要的文件位置調整好后,再重新安裝dmg。
開始Hook
在安裝好確定沒問題后,我們通過iOSOpenDev創建一個CaptainHook Tweak,是因為我們是在非越獄環境開發,並且這個模板無需TheOS的支持。CaptainHook 是使用的Runtime 機制實現,利用宏命令封裝類定義、方法替換等功能。
創建完成修改xxxxxx.mm文件,可以通過 Hook 獲取微信運動步數的方法,修改成想要的步數。
CHDeclareClass(WCDeviceStepObject)
//宏格式:參數的個數,返回值的類型,類的名稱,selector的名稱,selector的類型,selector對應的參數的變量名。 CHMethod(0, unsigned int, WCDeviceStepObject, m7StepCount) { // 修改步數 return 66666; } __attribute__((constructor)) static void entry() { // 在構造方法中替換方法 CHLoadLateClass(WCDeviceStepObject); CHClassHook(0, WCDeviceStepObject,m7StepCount); }
這里把步數寫死了,然后每天都是一個步數,假的連自己都不相信,如果能夠自由修改步數,成自然狀態增長,那將可以裝逼於無形。
接下來將通過給自己發送消息的形式修改微信運動的步數:

下面就不貼代碼了,實現原理類似,可以去Github下載
https://github.com/dimsky/runaway
寫完Hook 直接編譯不出錯的情況下就能夠拿到編譯之后的dylib文件了。

注入dylib
寫完dylib 我們需要將它注入原來的微信中,這樣才能是你的Hook有作用。
yololib 可以將dylib 注入進WeChat 二進制文件中,下載之后編譯得到yololib 然后通過命令注入:
./yololib WeChat xxxx.dylib
再把WeChat 二進制文件和xxxx.dylib 拷貝到WeChat.app 中替換原有文件。
簽名、打包
具體詳情可結合上篇文章
重新簽名
codesign -f -s "iPhone Developer: Tian Xiao (XXXXXXX)" WeChat.app/WechatTweakHook.dylib codesign -f -s "iPhone Developer: Tian Xiao (XXXXXXX)" WeChat.app/Watch/WeChatWatchNative.app/PlugIns/WeChatWatchNativeExtension.appex codesign -f -s "iPhone Developer: Tian Xiao (XXXXXXX)" WeChat.app/Watch/WeChatWatchNative.app codesign -f -s "iPhone Developer: Tian Xiao (XXXXXXX)" WeChat.app/PlugIns/WeChatShareExtensionNew.appex codesign -f -s "iPhone Developer: Tian Xiao (XXXXXXX)" --entitlements Entitlements.plist WeChat.app
打包
xcrun -sdk iphoneos PackageApplication -v WeChat.app -o ~/WeChat.ipa
安裝
使用PP助手或者Itunes即可完成安裝。