iOS逆教程のlogify追跡方法の呼び出し


前言
前の記事の紹介によれば、Appのヘッダファイルをclass-dumpでエクスポートし、その後、theosを利用して逆方向のプロジェクトを作成し、Hookのコードを作成し、いくつかの機能を修正する目的を達成します。しかし、いくつかの機能が具体的にどの方法を呼び出したらいいのか分かりません。ここでは関数の呼び出しを追跡するためにlogifyを使って、必要な関数を特定します。
logifyは、theosのコンポーネントであり、logifyは、先頭のファイルを印刷情報がすでに含まれているxmファイルに素早く変換することができる。もちろん、ある種類の方法が少ない場合、NSLogの印刷情報を自分で手動で追加することができますが、あるファイルの中の方法が多い場合、各方法にログ情報を追加すると、多くの時間が無駄になります。
logifyはtheosのコンポーネントで、パスは:
//opt/theos/bin/logify.pl
WeChatのチャットインターフェースを例にとって、もし現在のインターフェースでパケットメッセージを受信した場合、どの方法に応答したかを確認したいです。
ステップ
Revealを利用してグループチャットインターフェースのコントローラ名を決定しました。BaseMsgContentView Controllerとして、そしてclast-dumpを利用してヘッダファイルをエクスポートします。この種類の中の方法はとても多いです。次に、logifyを利用してこのファイルを印刷情報が含まれているxmファイルに素早く変換します。

//           xm  
logify.pl BaseMsgContentViewController.h > Tweak.xm
そしてtheosプロジェクトを作成して、先ほど作成したtheosプロジェクトのTweak.xmをTweakと交換します。再コンパイルしてパッケージインストールします。
エラー解決
logify.pl生産のxmファイルは、コンパイルが通らない場合が多く、いくつかの処理が必要です。
  • シャムを削除するweak
  • inoutを削除する
  • プロトコルを削除したり、頭でプロトコルを声明したりします。@protocol XDelegate
  • HBLogDebug(@“=0 x%x”、(unsigned int)r)
  • を削除します。
  • は、XXXXPerson*をvoid*に置き換えるなど、クラス名をvoid*に変えています。頭で声明してもいいですか?@class XXXXPerson
  • 自分でコンパイルした時の具体的なエラーによって、適切に修正すればいいです。
    ログビュー
    theosプロジェクトを再パッケージしてインストールに成功したら、WeChatのチャットインターフェースを開き、Xcode->Window->Devices and Simullatorsを開くと、方法の呼び出しを追跡できます。
    締め括りをつける
    以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。質問があれば、メッセージを書いて交流してください。ありがとうございます。