[軟件逆向]實戰Mac系統下的軟件分析+Mac QQ和微信的防撤回


 

0x00  一點廢話

最近因為Mac軟件收費的比較多,所以買了幾款正版軟件,但是有的軟件賣的有點貴,買了感覺不值,不買吧,又覺得不方便,用別人的吧,又怕不安全。於是我就買了正版的Hopper Disassembler然后把這些軟件分析一下[滑稽]

 

本文cnblog的圖片不怎么清楚,提供高清PDF下載。

https://my.pcloud.com/publink/show?code=XZKaIy7ZS5cfJax4mih0UCu985wrczJ17du7

 

0x01 所需工具

 

調試工具

Hopper Disassembler (最好正版)

內核追蹤

dtrace(系統自帶)

 

0x02 QQ防撤回

 

 先把QQ的主程序拽到我們的Hopper里邊,等待它全部分析完,沒分析完的時候,右下角有一個紅色的Working。它分析完后大概是這個樣子。

 

 

 這時候我們需要尋找一個撤回的類。QQ的這個撤回的類叫QQMessageRevokeEngine(QQ消息撤回引擎)。我們繼續查找這個類下面的方法。

 

 

這個時候發現該類有如下方法:

[QQMessageRevokeEngine init]

[QQMessageRevokeEngine onDidChangeAccount]

[QQMessageRevokeEngine handleRecallNotify:isOnline:]

[QQMessageRevokeEngine getProcessor]

[QQMessageRevokeEngine revokeMessage:completion:]

[QQMessageRevokeEngine handleRevokeC2CMsgResp:completion:]

[QQMessageRevokeEngine handleRevokeGroupMsgResp:completion:]

[QQMessageRevokeEngine setC2CReqWithMsgArray:drawReq:]

[QQMessageRevokeEngine setClusterReqWithMsgArray:drawReq:]

[QQMessageRevokeEngine .cxx_destruct]

 

 

 

發現init方法,這個是初始化的方法,我們只需要將這個方法給return掉,整個撤回引擎就沒用了。

方法頭部ret,然后保存測試下,這里會問你是否移除簽名,直接移除即可。

保存替換原文件。 

和手機端對比下。

 

 

 

 

 

 

0x02 微信防撤回

QQ防撤回差不多所以這里不細說,先載入Hopper。查找onRevoke關鍵字,找到MessageService onRevokeMsg:這個方法,直接return。但是有一點需要注意,就是微信Hopper分析的時間有點長。 

 

 

 

保存測試。

  

 

 

 

 

 

0x03 某商業軟件分析

  QQ和微信都是很好解決的畢竟有Revoke這個關鍵字,但是接下來我們分析的這個軟件,是個VPN連接工具,需要動態內核追蹤。因為當時我找不到它的類關鍵字。

 

首先,直接打開軟件發現這個窗口。提示我們需要激活license

看來,我們需要先把這個窗口干掉。

先載入Hopper,發現所有跟License有關的方法都在NUShimo這個類里邊。

 

 

 

那我們就使用dtrace去監聽這個NUShimo類。關掉Hopper,打開一個終端窗口。

打開我們的試用軟件。先獲取PID然后用dtrace開始監聽試用軟件。

 

 

 

然后 發現: 

 

 

 

NUShimo的這個applicationDidBecomeActive方法好像可以patch掉。

 

 

 

看一眼偽代碼發現確實是彈那個激活的窗口的方法。直接頭部ret

保存,然后測試一下。

確實不彈需要注冊的窗口了,但是還是不能連接VPN 

 

 

看來還得處理這個彈框啊,這個彈框我就懶的用dtrace追蹤了,使用字符串查找方法吧。 

我們看到它彈的是 You need to activate什么什么的,Hopper搜索這個字符串。

 

 

 

 

繼續追蹤調用這個字符串的地方。

 

 

 

 

 

再次查找上層調用。 

 

 

發現來到了這個地方。 

 

 

發現這個,看一眼偽代碼。 

 

 

發現只要讓這個if成立就可以跳過這個框。 

 

這個je跳轉是關鍵跳,直接改成jne。然后保存測試執行。 

 

 

OK成功,這樣雖然顯示無效的liense和試用到期,但是依然可以連接VPN

 

 

 

 

本文來自 突突兔@Nixi_Team

請尊重版權,轉載請通過本人許可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM