iOS逆向教程之跟蹤函式呼叫詳解

2022-09-21 14:21:09 字數 2068 閱讀 9446

前言

今天學習的是跟蹤函式呼叫,什麼意思呢,舉個例子,如果想做乙個微信自動搶紅包的外掛程式,就需要寫這麼乙個功能,當紅包來了的時候,自動觸發微信的搶紅包函式。好,那咱就先找到這個函式。

對映埠

$ sh usb.sh

forwarding local port 10001 to remote port 22

incoming connection to 10001

另起一終端登入

$ sh logwww.cppcns.comin.sh

找到微信安程式設計客棧裝路徑

-a|grep mobile

8636 ?? 0:35.91 /var/mobile/containers/bundle/application/eb02dc6d-ebe5-4be8-92ce-b9abe75b3c3e/wechat.app/wechat

順便檢視一下微信的 bundle id,建立tweak的時候會用到

通過 cycript 注入 微信

~ root# cycript -p wechat

執行命令檢視info 資訊,查詢 cfbundleidentifier 獲取 bundle id

cy# [[nsbundle mainbundle] infodictionary].tostring()

cfbundleidentifier = "com.tencent.xin";

現在脫殼,(因為是從app store上**的)

~ root# dyld_insert_libraries=dumpdecrypted.dylib /var/mobile/containers/bundle/application/eb02dc6d-ebe5-4be8-92ce-b9abe75b3c3e/wechat.app/wechat

脫殼成功,退出登入手機狀態

exit

將檔案拷貝出來

$ scp -p 10001 root@localhost:/var/root/wechat.decrypted wechat

檢視是否脫殼成功

$ otool -l wechat | grep cryptid

cryptid 0

匯出微信標頭檔案

$ class-dump -h wechat -o wechatheaders

然後來到微信有紅包的聊天介面,通過reveal 檢視當前介面的controller 是basemsgcontentviewcontroller

然後找到剛剛匯出的 basemsgcontentviewcontroller.h 檔案開啟,我去,有五百多個函式.怎麼辦,怎麼知道那個是咱要用的函式?

有乙個辦法,那就是建立乙個tweak工程,tweak.xm 檔案修改成如下內容

%hook basemsgcontentviewcontroller

- (void)touchesbegan_tableview:(id)arg1 withevent:程式設計客棧(id)arg2

...%end

上面三個點代表那五百多個函式。很恐怖吧。

重點來啦,logify.pl指令碼,是安裝theos的時候自帶的,該指令碼用程式設計客棧來注入nslog來列印方法的入參和出參。(就是在所有的方法裡面加 log)

位置在

/theos/bin/logify.pl

這是替身,真實路徑在

/theos/vendor/logos/bin/logify.pl

在終端執行命令

$ logify.pl basemsgcontentviewcontroller.h > tweak.xm

ps: 能夠執行logify.pl 命令是因為在 .bash_profile 檔案中新增了

export theos=~/theos

export path=$theos/bin:$path$

檢視剛剛生成tweak.xm 檔案

注意紅框的位置

這樣多方便,不需要乙個個去寫了。用新生成的tweak.xm 檔案替換 tweak工程生成的tweak.xm檔案

新建乙個工程,在終端輸入

```nic.pl

總結本文標題: ios逆向教程之跟蹤函式呼叫詳解

本文位址:

iOS逆向教程之動態除錯詳解

前言 有時候想更了解別人app的呼叫流程,就需要在app執行的時候進行動態除錯。動態除錯指的是將程式執行起來,通過下斷點 列印等方式,檢視引數 返回值 函式呼叫程式設計客棧流程等。下面話不多說了,來隨著小編一起看看詳細的介紹吧 xcode的動態除錯原理 首先了解一下 xcode 編譯和偵錯程式的發展...

iOS開發教程之UI UIWindow

ios開發教程之ui uiwindow。選擇single view application 初學我刪除了viewcontroller.h和viewcontroller.m的檔案準備自己建立 選擇new file 選擇 cocoa touch class 輸入類的名字,因為我想建立乙個根檢視,所以su...

delphi初級教程之delphi斷點除錯一

所謂斷點,就是在程式 的某一行上設定乙個標記,程式執行到這裡將暫停,由調 試器接管對程式的控制。使用斷點與使用 runto cursor 命令有些相似,都是執行到某 一行後暫停。不同的是,程式中可以設定多個斷點並且能夠給斷點設定條件。斷點通常設定在有疑點的區域。在遇到斷點之前,程式以全速執行。遇到斷...