非越獄iOS應(yīng)用逆向-更改微信步數(shù)

系統(tǒng)環(huán)境

  • macOS 10.12.2
  • Xcode 8.2
  • iOS 10.2

工具&軟件:

分析微信

工欲善其事必先利其器帘皿,我們先將工具和軟件都準(zhǔn)備好,過程中會遇到很多問題陷谱,但我相信你能成功的除抛。阻擾大家的主要是一些環(huán)境的搭建以及相關(guān)配置沒設(shè)置好礼烈,結(jié)果導(dǎo)致dylib編譯過程各種錯誤疟位,重簽名不成功阴绢,各種閃退等槐脏。所以本文里的每一步操作都會很詳細(xì)的交代喉童,確保大家都能操作成功。

我們先拿到用PP助手下載好的越獄版微信iOS客戶端顿天,因為從AppStore下載的微信是經(jīng)過加密的堂氯,還需要砸殼.

Paste_Image.png

下載后解壓,我把他放在了桌面上牌废,然后又創(chuàng)建了一個空文件夾準(zhǔn)備用來放dump出來的頭文件

Paste_Image.png

打開終端咽白,輸入class-dump,可以看到class-dump的指令(我是10.12的系統(tǒng)鸟缕,之前安裝class-dump還費(fèi)了點(diǎn)事晶框,要更改下系統(tǒng)的權(quán)限排抬,不然class-dump不允許安裝)

Paste_Image.png

現(xiàn)在我們就可以輸入命令dump出微信的頭文件啦

$ class-dump -H /Users/zhangtaoran/Desktop/WeChat/Payload/WeChat.app -o /Users/zhangtaoran/Desktop/WeChatHeaders

但是過程肯定不會這么順利,當(dāng)我打開文件夾后只看到了一個CDStructures.h授段,里面什么都沒有

Paste_Image.png

我一臉懵逼蹲蒲,可能我們從PP助手下載的越獄版微信仍然有殼?但我覺得這個可能性應(yīng)該比較小侵贵,但是我們有了CDStructures.h這個線索届搁,去Google和百度了一番,得知出現(xiàn)這種情況有兩種可能:

  1. 還需要砸殼窍育,砸殼工具有:AppCrackr卡睦、Clutch、dumpcrypted 等漱抓;由于 AppCrackr 表锻、Clutch 暴力砸殼、操作簡單辽旋,招致公憤浩嫌,因此一些核心功能,已經(jīng)下架补胚,在高級系統(tǒng)中码耐,已不能使用;因此溶其,推薦: dumpcrypted 砸殼工具骚腥。工具獲取及使用方法,參考:https://github.com/stefanesser/dumpdecrypted

  2. 當(dāng)砸殼完畢后瓶逃,使用 class-dump 仍然只導(dǎo)出 CDStructures.h一個文件束铭,則可能架構(gòu)選擇錯誤,armv7對應(yīng)的是iPhone5及以下的設(shè)備厢绝,arm64則是5s及以上的設(shè)備契沫,所以微信也包含兩個架構(gòu),armv7和arm64昔汉。關(guān)于架構(gòu)與設(shè)備之間的對應(yīng)關(guān)系可以從iOS Support Matrix上查看懈万。理論上只要把最老的架構(gòu)解密就可以了,因為新的cpu會兼容老的架構(gòu)靶病。我們這里加上armv7再輸入命令会通。

class-dump --arch armv7 /Users/zhangtaoran/Desktop/WeChat/Payload/WeChat.app -H -o /Users/zhangtaoran/Desktop/WeChatHeaders

然后就看到文件開始跑了,非常多娄周,有點(diǎn)小激動涕侈,算是成功了一小步,可以看到微信一共8393個頭文件

Paste_Image.png

定位與步數(shù)相關(guān)的文件

微信這種項目的命名應(yīng)該是很規(guī)范的煤辨,我們想要修改步數(shù)就先嘗試查找一下step相關(guān)的頭文件裳涛,search出來的結(jié)果有很多木张,最后我定位到這個文件

Paste_Image.png

打開過后可以看到,這兩個應(yīng)該就是記錄步數(shù)的屬性

Paste_Image.png

這里的屬性get方法應(yīng)該就是判斷HealthKit是否可用然后去里面取數(shù)據(jù)调违,我們就把他們兩個的get方法都替換掉就好了

利用iOSOpenDev替換方法

利用 iOSOpenDev 創(chuàng)建一個 hook 的模板窟哺,就連手動調(diào)用 method-swizzling 的代碼也省了。

Paste_Image.png

然后開始寫代碼修改掉那兩個方法的實現(xiàn)技肩,直接返回想要的數(shù)值

Paste_Image.png

build 一下生成 .dylib

Paste_Image.png

再用 dylib_insert 把動態(tài)庫的地址注入 Mach-O

$ insert_dylib @executable_path/ModifyStepCount.dylib /Users/zhangtaoran/Desktop/WeChat/Payload/WeChat.app/WeChat 

然后就會在相同位置生成一個新的 Mach-O 文件且轨。

Paste_Image.png

我們用 MachOView 就能看到新的動態(tài)庫已經(jīng)被注入了:
在Fat Binary -> Executable -> Load Commands -> LC_LOAD_DYLIB

Paste_Image.png

最后把這個文件改名重新改回 WeChat替換原來的文件,再和動態(tài)庫一起放入原 WeChat.app

因為微信中還有watch app虚婿,我怕他還是加密的旋奢,我也將WeChat.app里面的Watch文件夾,連同PlugIns文件夾一起刪去然痊,怕它影響我們重簽名

重簽名并打包

現(xiàn)在工作已經(jīng)完成一大半了至朗,現(xiàn)在只需要對剛才修改好的微信重新簽名并打包,我是用的免費(fèi)證書剧浸,要注意的是锹引,由于中國的開發(fā)者利用免費(fèi)的證書大量對應(yīng)用進(jìn)行重簽名,所以目前蘋果加上了許多限制唆香,免費(fèi)開發(fā)者的provisioning證書有效時間從之前的30天改為7天嫌变,過期后需要重新簽名。另外就是一個星期內(nèi)最多只能申請到10個證書躬它。我就用Xcode新建了一個工程腾啥,讓蘋果給我生成一個新的有效期為7天的描述文件,然后用這個描述文件來簽名我們自己修改的微信冯吓。

簡單的來說就是創(chuàng)建一個APP倘待,讓蘋果給我們這個APP發(fā)了一個可以免費(fèi)在真機(jī)上測試的證書,然后用我們修改后的微信偽裝成為這個APP组贺,就達(dá)成了非越獄環(huán)境下iOS App Hook

Paste_Image.png

成功生成描述文件

Paste_Image.png

然后我們就可以用iOS App Signer重新簽名了,其實iOS App Signer是幫我們獲取到本地上的開發(fā)者簽名證書和所有的Provisioning文件凸舵,然后對結(jié)果做了一個篩選,去掉了那些過期的證書失尖,然后用描述文件對APP進(jìn)行簽名贞间,再對簽好名的應(yīng)用打包。

我們就選擇好剛才生成的那個證書雹仿,簡單地點(diǎn)一下開始,就等著他幫我們重簽名并打包好吧

Paste_Image.png

最后就將重新打包好的ipa安裝到手機(jī)上整以,搞定胧辽!

Paste_Image.png

由于 Objective-C 動態(tài)的特性,我們可以不用對二進(jìn)制文件進(jìn)行反編譯公黑,然后再對匯編指令進(jìn)行修改邑商,只需要直接添加一個動態(tài)庫就能實現(xiàn)功能的更改了摄咆。

參考資料

聽說你想撤回信息?:http://www.reibang.com/p/ac7eddd644c3
iOSAppHook:https://github.com/Urinx/iOSAppHook
class-dump 和 iOSOpenDev 的使用:http://blog.csdn.net/chaoyuan899/article/details/39271197
Objective-C的hook方案(一): Method Swizzling:http://blog.csdn.net/yiyaaixuexi/article/details/9374411

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末人断,一起剝皮案震驚了整個濱河市吭从,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恶迈,老刑警劉巖涩金,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異暇仲,居然都是意外死亡步做,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門奈附,熙熙樓的掌柜王于貴愁眉苦臉地迎上來全度,“玉大人,你說我怎么就攤上這事斥滤〗遥” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵佑颇,是天一觀的道長顶掉。 經(jīng)常有香客問我,道長漩符,這世上最難降的妖魔是什么一喘? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嗜暴,結(jié)果婚禮上凸克,老公的妹妹穿的比我還像新娘。我一直安慰自己闷沥,他們只是感情好萎战,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舆逃,像睡著了一般蚂维。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上路狮,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天虫啥,我揣著相機(jī)與錄音,去河邊找鬼奄妨。 笑死涂籽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砸抛。 我是一名探鬼主播评雌,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼树枫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了景东?” 一聲冷哼從身側(cè)響起砂轻,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斤吐,沒想到半個月后搔涝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡曲初,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年体谒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼婆。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡抒痒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颁褂,到底是詐尸還是另有隱情故响,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布颁独,位于F島的核電站彩届,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏誓酒。R本人自食惡果不足惜樟蠕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靠柑。 院中可真熱鬧傲绣,春花似錦划址、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叹放。三九已至式塌,卻和暖如春书在,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腮恩。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工梢杭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秸滴。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓式曲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吝羞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容