接下來還是在 非越獄 環(huán)境中進(jìn)行。
上篇文章中討論了如何使用Hopper 來修改二級制文件實(shí)現(xiàn)逆向,雖然修改過程很簡單,但是由于只能針對于匯編語言進(jìn)行修改,所以還是有很大的局限性捞烟,如果能直接用源語言(Objective-c)來進(jìn)行修改,那就能為所欲為了当船。
所以這就是接下來要干的:
安裝 iOSOpenDev
提到越獄開發(fā)题画,你可能知道Theos,它很大程度上簡化了越獄開發(fā)德频,而 iOSOpenDev 提供了一系列關(guān)于越獄開發(fā)的模板苍息,結(jié)合Theos可以讓開發(fā)Tweak跟開發(fā)普通應(yīng)用一樣簡單。
由于作者很長時(shí)間已經(jīng)沒有更新iOSOpenDev抱婉,而Xcode版本在不停的變更档叔,所以在新版本Xcode的安裝的過程中會(huì)遇到一些坑。
下面總結(jié)一些填坑的技巧:
- 首先蒸绩,安裝失敗后 可以 通過 Commond + L 查看安裝錯(cuò)誤信息衙四,然后Google。
- 新版本的Xcode 更新后一些文件目錄的調(diào)整患亿,導(dǎo)致iOSOpenDev 找不到传蹈。具體目錄結(jié)構(gòu)的調(diào)整,可參考 這篇文章步藕。
- 在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 - 將所有需要的文件位置調(diào)整好后咙冗,再重新安裝dmg沾歪。
開始Hook
在安裝好確定沒問題后,我們通過iOSOpenDev創(chuàng)建一個(gè)CaptainHook Tweak雾消,是因?yàn)槲覀兪窃诜窃姜z環(huán)境開發(fā)灾搏,并且這個(gè)模板無需TheOS的支持挫望。CaptainHook 是使用的Runtime 機(jī)制實(shí)現(xiàn),利用宏命令封裝類定義狂窑、方法替換等功能媳板。
創(chuàng)建完成修改xxxxxx.mm文件,可以通過 Hook 獲取微信運(yùn)動(dòng)步數(shù)的方法泉哈,修改成想要的步數(shù)蛉幸。
CHDeclareClass(WCDeviceStepObject)
//宏格式:參數(shù)的個(gè)數(shù),返回值的類型丛晦,類的名稱奕纫,selector的名稱,selector的類型采呐,selector對應(yīng)的參數(shù)的變量名若锁。
CHMethod(0, unsigned int, WCDeviceStepObject, m7StepCount) {
// 修改步數(shù)
return 66666;
}
__attribute__((constructor)) static void entry() {
// 在構(gòu)造方法中替換方法
CHLoadLateClass(WCDeviceStepObject);
CHClassHook(0, WCDeviceStepObject,m7StepCount);
}
這里把步數(shù)寫死了搁骑,然后每天都是一個(gè)步數(shù)斧吐,假的連自己都不相信,如果能夠自由修改步數(shù)仲器,成自然狀態(tài)增長煤率,那將可以裝逼于無形。
接下來將通過給自己發(fā)送消息的形式修改微信運(yùn)動(dòng)的步數(shù):
下面就不貼代碼了乏冀,實(shí)現(xiàn)原理類似蝶糯,可以去Github下載
https://github.com/dimsky/runaway
寫完Hook 直接編譯不出錯(cuò)的情況下就能夠拿到編譯之后的dylib文件了。
注入dylib
寫完dylib 我們需要將它注入原來的微信中辆沦,這樣才能是你的Hook有作用昼捍。
yololib 可以將dylib 注入進(jìn)WeChat 二進(jìn)制文件中,下載之后編譯得到y(tǒng)ololib 然后通過命令注入:
./yololib WeChat xxxx.dylib
再把WeChat 二進(jìn)制文件和xxxx.dylib 拷貝到WeChat.app 中替換原有文件肢扯。
簽名妒茬、打包
具體詳情可結(jié)合上篇文章
重新簽名
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即可完成安裝。
注:
本文僅供學(xué)習(xí)交流蔚晨,請勿用于商業(yè)用途乍钻。
參考: iOS冰與火之歌番外篇