iOSの逆解読の神秘的なベールを開く


前言
逆方向工程を勉強して理解して、競合品と自分の好きなAPPの開発構造といくつかの機能の大体の構想を分析してくれます。自分で他のAPPに対して二次加工を行って、自分の需要を満足します。iOSを勉強していますが、ここで簡単にまとめて、iOSの逆方向の神秘的なベールを明らかにします。
Macリモート登録iPhone
iOSとMac OS Xは、いずれもDarwin(Unixベースのオープンソースシステムカーネル)に基づいているので、iOSでも同様に端末のコマンドライン操作をサポートしています。
逆プロジェクトでは、私たちはよく命令ラインでiPhoneを操作します。Mac端末のコマンドラインがiPhoneに機能するように、MacとiPhoneを接続します。接続には2つの方法があります。wifi接続とusb接続です。
まず脱獄ソフトにsshプラグインOpenSSHをインストールし、コマンドラインとアプリケーションを交互に使うプラグインCycript。
脱獄携帯とMacパソコンを同じローカルネットワークに接続させる(sshサービスを通じてmacコンピュータから携帯電話にアクセスできるように)
macのコマンドライン端末には、sshサービスで携帯電話にログインしてssh root@携帯のipを入力します。デフォルトのrootパスワードはalpineです。rootパスワードは自分で変更できます。
そして携帯電話でプログラムを実行して、mac端末でps-Aを利用して携帯電話の現在の動作の過程を調べて、プロセスIDを見つけたらcycriptを利用していくつかの列の操作ができます。例えば、現在実行中のWeChatプロセスのcycript状態に入るcycript-p WeChat
wifi接続を使うと、カートン遅延が発生することがあります。だから、私は普通アメリカと接続します。
Macにはサービスプログラムがあります。USBでMacのデータをiPhoneに転送できます。
二つのスクリプトを使ってログインしました。
  • python~/iOS/tcprelay.py-t 22:10010はポートのマッピング
  • を行います。
  • ssh-p 10010root@localhostアメリカの登録
  • Cycriptの使用
    CycriptはObjective-C+、ES 6(JavaScript)、Javaなどの文法の混合物で、実行中のMac\iOS APPを探索、修正、デバッグするために使用できます。公式サイト:http://www.cycript.org
    たとえば簡単な使い方です。
    
    //     
    cycript -p WeChat
    //       
    NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0]
    //       view   
    UIApp.keyWindow.recursiveDescription().toString()
    主にRevealと組み合わせて使用し、Revealからあるインターフェースまたはviewの属するクラスまたはコントローラを取得し、そのクラスまたはコントローラを入手してcycriptを利用してデバッグする。例えば、view対応のクラスがtestViewであることが分かりました。このviewを現在のインターフェースから削除したいです。表示されない効果があります。
    
    [testView removeFromSuperview];
    コードHook分析
    Appのある機能に逆行するにはコードの分析が欠かせません。
    1.上記の分析を通じて、あるview対応のクラスを見つけたら、当該クラスの対応するヘッダファイルを導出して具体的に分析する必要があります。
    2.まずAppのバイナリファイル(Mach-Oタイプ)を見つけ、(iFunBoxを使ってMacにエクスポートする)その後、class-dumpツールを使って、その中のすべてのヘッダファイルをエクスポートします。これらのヘッダファイルには属性と方法が見られます。class-dump-H Mach-Oファイル経路-oヘッダファイル保存ディレクトリ
    3.Mach-Oファイルの完全情報を確認するなら、MachOVieを使用することを勧めます。otool-lはすべてのLoad Commundsをプリントして、grepを組み合わせて正則フィルタリングを行うことを提案します。otool-Lは使用するライブラリファイルを確認できます。
    4.ヘッダファイルの分析が完了したら、theosを利用してベトナムコードの開発ができます。Tweakプラグイン(debフォーマット)をコンパイルして生成します。
    nic.pl命令を利用して、iphone/tweakを選択して、tweakプロジェクトを作成します。
    このtweakプロジェクトでTweak.xmファイルを編集し、自分の脱獄コードを作成します。
    開発が完了したら、make packageを利用して携帯電話に包装とmake installをインストールします。アプリケーションを再起動すると、対応する機能はすでにhookのコードによって変更されていることが分かります。
    原理:iOSは脱獄後、デフォルトではmobilesubstrateというダイナミックライブラリを設置します。その役割はシステムレベルの侵入パイプを提供するので、tweakはすべてそれに頼って開発します。ターゲットプログラムの起動時に、指定されたディレクトリのサードパーティのダイナミックライブラリを規則に従ってロードし、サードパーティのダイナミックライブラリ、つまり私たちが書いた解読プログラムによって、メモリ内のコードロジックを修正する目的を達成します。
    5.ある種類の中のある方法の実現と論理の呼び出しを見たい場合は、Hopper Dispasemblerツールを使う必要があります。
    theosの常用文法
  • %hook,%end:Hookの種類の開始と終了
  • %log:印刷方法呼び出し詳細
  • HBD ebug Log:NSLogと同じ
  • %new:新しい方法を追加する場合は
  • を使用します。
  • %org:関数元のコード論理
  • %ctor:ダイナミックライブラリの読み込み時に
  • を呼び出します。
  • logify.pl:1つのヘッダファイルを印刷情報がすでに含まれているxmファイル
  • に急速に変換することができる。
  • 追加のリソースファイル(例えば写真)がある場合、プロジェクトのlayoutフォルダに置いて、携帯電話のルートパス/
  • 殻を割る
    脱獄した携帯電話を使えば、直接にppヘルパーからダウンロードした部分は私達自身が脱皮する過程から免除されます。しかし、App Storeからダウンロードしたアプリケーションであれば、App Storeはすでにこのアプリケーションのために暗号化されています。また、class-dumpを使ってもヘッダファイルをエクスポートできません。この場合は、APPの脱皮操作が必要です。
    脱殻ツールは2種類あります。Cutchとdumpdecryptted
    Cutch:
    Mac端末からiPhoneに登録した後、Cutchで脱皮します。
    Cutch-iは、携帯電話にインストールされているアプリケーションで暗号化されたアプリケーションを列挙する。
    Cutch-dはWindows leidを適用して暗号化の応用に脱皮し、脱皮に成功したら新しいMatch-Oファイルを生産します。この新しいファイルをclass-dump操作すればいいです。
    Cutchを使って脱皮すると、脱皮したときなどにエラーが発生する場合があります。この時はdumpdecryptを使う必要があります。
    端末はdumpdecrypt.dylibのディレクトリvar/rootに入ります。
    環境変数DYLD_を使うINSERT_LIBREIESは、脱皮を必要とする実行可能ファイルにdylibを注入する(実行可能ファイルパスはps-Aで確認できる)。
    実行コマンドDYLD_INSERT_LIBREIES=dumpdecryptted.dylibはファイルパスを実行することができます。
    おわりに
    上記の逆方向の流れを理解したら、動画クライアントが広告に行き、微信運動ステップ数を修正し、微信メッセージの測定を防止し、微信が自動的に紅包を奪い取るなどの機能を実現できます。同時に、自分のクライアントの開発過程で、情報のセキュリティ保護をより重視します。研究は逆方向で、きっと各种のものをうまく利用することに优れていて、しかも绝えず失败する准备をしっかりと行って、挫折すればするほど勇猛で、结局は成功します。
    はい、以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持っています。質問があれば、メッセージを残して交流してください。ありがとうございます。