ios 微信逆向部分

一、砸殼方法(轉載註明出處)

準備工作:

  1. 越獄的手機(必須的)
  2. dumpdecrypted (砸殼使用)
  3. class-dump (導出砸殼後的二進制包的頭文件)
  4. Cycript(Cydia)(在越獄手機的越獄市場下載,安裝)
  5. adv-cmds(Cydia)(在越獄手機的越獄市場下載,安裝)
  6. OpenSSH(Cydia) (在越獄手機的越獄市場下載,安裝)

具體實現步驟

首先在APPStore中下載正版的應用

以QQ爲例

  1. 首先確保手機連接和電腦連接的是同一個網段

  2. 用ssh命令連接上手機,密碼默認是 alpine

   ssh root@10.2.200.186
  1. 關閉所有的後臺APP,僅保持QQ後臺活躍
ps -e | grep QQ

(如果這裏是其他APP,不清楚具體名字,那麼執行這個命令,我這裏是知道我破殼的應用叫QQ,所以,直接執行 ps -e | grep QQ)

ps -e

![屏幕快照 2018-07-06 上午11.39.27](images/屏幕快照 2018-07-06 上午11.39.27.png)

  1. 使用cycript命令,找到目標app的Document路徑,使用如下命令
cycript -p QQ

![屏幕快照 2018-07-06 上午11.42.59](images/屏幕快照 2018-07-06 上午11.42.59.png)

鍵入一下命令

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

拿到地址並且記錄下來,後面要用到

![屏幕快照 2018-07-06 上午11.45.50](images/屏幕快照 2018-07-06 上午11.45.50.png)

control + z 退出cy模式

  1. 這裏一定要注意,將我們下載好的 dumpdecrypted 編譯一下,生成動態庫dylib,編譯方法是,進入到我們下載好的dumpdecypted目錄下

直接執行make命令

![屏幕快照 2018-07-06 上午11.53.16](images/屏幕快照 2018-07-06 上午11.53.16.png)

這樣會編譯一遍dumpdecrypted,生成dylib

  1. 將生成的將dumpdecrypted.dylib拷貝到Documents目錄下,執行該命令
sudo scp dumpdecrypted.dylib root@10.2.200.186:/var/mobile/Containers/Data/Application/531B07B4-3048-4EEF-BB76-25F6F83D1EEC/Documents/

![屏幕快照 2018-07-06 上午11.58.25](images/屏幕快照 2018-07-06 上午11.58.25.png)

  1. 開始砸殼,使用以下命令,會在當前目錄下生成QQ.decrypted砸殼後的文件。
DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/531B07B4-3048-4EEF-BB76-25F6F83D1EEC/Documents/dumpdecrypted.dylib     /var/mobile/Containers/Bundle/Application/20E39925-5231-4BE3-B483-9D6481BCC715/QQ.app/QQ

成功後有如下結果

![屏幕快照 2018-07-06 下午12.16.06](images/屏幕快照 2018-07-06 下午12.16.06.png)

  1. 將砸殼後的QQ.decrypted文件拷貝到電腦上。
sudo cp root@10.2.200.186 /var/root/QQ.decrypted

![屏幕快照 2018-07-06 下午12.34.17](images/屏幕快照 2018-07-06 下午12.34.17.png)

(我在這裏是拷貝到當前文件夾下,所以後面沒有帶路徑),如拷貝到指定文件夾,後面需要帶路徑

你會看到這個文件![屏幕快照 2018-07-06 下午12.37.33](images/屏幕快照 2018-07-06 下午12.37.33.png)

到此,砸殼完成,接下來,操作一下,如何提取頭文件

class-dump最新安裝方法

當Mac升級了OSX 10.11後,配置class-dump的時候,會發現逆向書上推薦的class-dump存放目錄/usr/bin,class-dump存放不進去,嘗試過用sudo 還是不被允許。

  1. 首先打開Terminal,輸入mkdir ~/bin,在當前用戶根目錄下創建一個bin目錄

  2. 把下載下來的 dmg 打開,複製文件裏面的class-dump到創建的bin目錄下。賦予其可執行權限
    chmod +x ~/bin/class-dump

    1. 打開bash_profile文件配置環境變量:
      vim ~/.bash_profile
      按下 i 鍵進入編輯狀態,在最下方加一行
      export PATH=HOME/bin/: PATH
      按下esc鍵,再按shift+: 輸入 wq進行保存退出編輯

    **在Terminal中執行**source ~/.bash_profile

具體可參見

https://www.jianshu.com/p/025fa775f3a6

執行該命令

class-dump -H QQ.decrypted  -o output/

緊接着,你就會發現,

![屏幕快照 2018-07-06 下午12.50.20](images/屏幕快照 2018-07-06 下午12.50.20.png)

二、重簽名

準備工作:砸殼完成的二進制文件、IPA包、腳本文件、證書、描述文件

1.解壓ipa包
unzip WeChat.ipa -d WeChat_unzip
2.替換二進制文件
  • 微信砸殼會得到一個WeChat.decrypted文件, 重命名爲WeChat,在終端,輸入 chmod 777 ,然後把 WeChat拖到終端上按回車 修改下權限。
sudo chmod 777 WeChat
  • 替換砸殼了的WeChat二進制文件

用WeChat替換Payload/WeChat包內容裏的二進制文件

3.修改Bundle identifier

​ 找到WeChat_unzip/Payload/WeChat包內容的info.plist 文件,修改 Bundle identifier,需要與使用的額證書和描述文件相一致

4.重簽名

​ 打開終端,cd 進入 文件所在目錄,運行

​    sh ios_resign_from_app_to_ipa WeChat_unzip "iPhone Distribution: Beijing 1000 Oaks Hu Lian Technology Development (UECH3VPJ68)" embedded.mobileprovision WeChat_resig.ipa
5.簽名成功,得到ipa文件

WX20180706-123822@2x

三、防撤回+步數統計

1.獲取砸殼後的頭文件,如圖

QQ20180706-005234@2x

2.用編輯器打開搜索關鍵詞message、revoke等,最終鎖定CMessageMgr.h文件

QQ20180706-010232@2x

經過嘗試找到如下方法

- (void)onRevokeMsg:(id)arg1;
- (void)DelMsg:(id)arg1 MsgList:(id)arg2 DelAll:(_Bool)arg3;

onRevokeMsg爲收到一條撤回通知(此時微信裏顯示“對方已撤回”)

DelMsg爲刪除本地消息,所以我們hook該方法即可換成自己的方法

ps:注意,只有當收到revoke通知刪除本地消失時才替換成自己的方法,其它情況調用父類方法

微信步數實現步驟

1.獲取步數
  • 通過脫殼後的微信ipa包,獲取到工程中的所有頭文件,找到其中管理微信運動步數的類爲WCDeviceStepObject。
  • 通過幾次實驗(以及對函數名的猜測)得到了獲取步數的函數爲m7StepCount。
  • 通過開源的CaptainHook類,利用ObjC的runtime機制,對m7StepCount函數進行method swizzling,也就是用我們自己的實現來替換微信的實現。爲了避免改得太假被微信發現,如果修改的不是當天或者改的步數比微信自己計算的還少,就直接調用微信原有的方法。
2.在設置中加入修改入口

C61E5B35FDF673D4C6E1D179F95E3498

  • 微信的設置頁比較好找,在NewSettingViewController類中。
  • 通過Reveal軟件能看到微信設置界面的結構,在MMTableViewSectionInfo中增加一行輸入步數的MMTableViewCellInfo,並最後加到MMTableViewInfo中。
  • 重新刷新tableView,就能看到新加的入口了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章