ここでフォーラムを検索したところ、そのような質問が見つかりました。チュートリアルにリダイレクトされ、CapitainHookを使用してSpringBoardを操作するための基本的な手順が示されました。
まず、通常の%hookのみで実行したいと思います。私が始めることができるヒントはありますか?
それで、私は(私が)MobileSubstrateプログラミングの初心者から遠く離れていて、この質問が非常に人気があると思ったので、この主題について知っておく必要のあるすべてを簡単にカバーする回答を作成することにしました。
この小さな紹介は、Objective-Cに関する最小限の知識を持っているで、彼が何をしているのかを知っている人を対象としています。
[〜#〜] note [〜#〜]:theosインストールパスを_$THEOS
_と呼びます。これは_~/theos
_、_/var/theos
_、_/usr/theos
_...のようになります。
tweaksとしても知られるMobileSubstrate拡張機能を作成する最も一般的な方法は、 Dustin Howett 's theos build suite。詳細は次のとおりです。
したがって、theosとは何かから始める必要がありますnot:
そしてもちろん、theos しない:
TheosはXcodeを使用せずにiOSソフトウェアを管理、開発、および展開するための開発ツールのクロスプラットフォームスイート、機能:
GNU Makeによって駆動される堅牢なビルドシステム。これにより、Makefileは、theosがインストールされていればどこにでも簡単にデプロイできます。
[〜#〜] nic [〜#〜]、さまざまな目的ですぐにビルドできる空のプロジェクトを作成するプロジェクトテンプレートシステム。
Logos、MobileSubstrate拡張機能の開発を容易にし、最適なコード生成を行うように設計された、組み込みのプリプロセッサベースのディレクティブライブラリ。
自動パッケージ化:Theosは、脱獄シーンで最も人気のあるパッケージ配布手段であるCydiaで配布するDEBパッケージを直接作成できます。
installtheos3
_を実行します。これは非常に質問であり、あいまいすぎます。 theosは開発ツールのスイート全体であるため、使用方法を尋ねるのは意味がありませんが、より具体的には方法を尋ねるのは意味がありません。 theosを使用してソフトウェアを作成します。
まず第一に、常に Theos Makefile Reference を手元に置いてください。これには、theos Makefileの作成の基本が含まれており、プロジェクトにフレームワークまたはプライベートフレームワークを追加するリンクの問題を解決するが含まれます。
これで、独自のMakefileを最初から作成し、小さなtheosクローン/シンボリックリンクを作成してコーディングを開始できますが、theosを使用するとこの手順が簡単になります。 _nic.pl
_を使用できます。
NICを実行して何かを作成する非常に簡単な例を見つけることができます ここ 。これは非常に簡単で、プログラミングのためにすぐにセットアップできます。
さて、ここからトピックに戻り始めます。
まず第一に、しない実行NIC _$THEOS/bin
_内の場合NICは、正確にあなたの場所にプロジェクトディレクトリを作成します'から実行すると、_$THEOS/bin
_でプロジェクトが作成されるのを回避できます。したがって、適切な場所にプロジェクトディレクトリを作成することで回避できる、単純なエラーが発生します。
_$THEOS/bin/nic.pl
_を実行し、_iphone/Tweak
_テンプレートを選択します。最後のフィールド_MobileSubstrate bundle filter
_を除いて、答える方法をよく知っているかもしれない簡単な情報によってプロンプトが表示されます。
MobileSubstrateの大部分は、hooker(元のメソッド/関数を自分のものに切り替えるライブラリ)だけでなく、loader(フックを取得する部分)でもあるためです。特定のプロセスに挿入される場合)、ローダーがTweakをロードする場所を知るために、この基本情報を提供する必要があります。このフィールドは、このプロジェクトが挿入されるアプリケーションのバンドル識別子にすぎません。
_com.Apple.springboard
_、デフォルトのオプションは、SpringBoardのバンドル識別子です。アプリケーションは次のとおりです。
したがって、多くの調整が行われ、動作がアプリの起動のような些細なものから、ホーム画面のUI全体がどのように見えるかのようなものに変更されます。
これで、NICによって生成されたディレクトリには次のものが含まれます。
Makefile
、コンパイルに関連する情報を変更しますcontrol
ファイル$THEOS
_という名前の_theos/
_へのシンボリックリンク(またはショートカット)Tweak.xm
_です。コンパイル用にMakefileにすでに追加されているので、すぐにコーディングを開始できます。これで、SpringBoardのソースコードが配置されておらず、どこからでもフックするメソッドを推測できません。したがって、SpringBoardヘッダーセットが必要です。そのためには、_class-dump-z
_という名前のツールを使用し、それをSpringBoard
バイナリ(iOSファイルシステム内にあります)で実行して、アプリケーション内のすべてのクラス宣言とそのメソッドを含むヘッダーファイルを取得する必要があります。
それから(メソッド呼び出しを推測してログに記録することが含まれます)、Tweakで必要なものをいじり始めることができます。
もちろん、SpringBoardをフックしていない場合は、UIKit
、MobileSafari
などの他のバイナリと同じように_class-dump-z
_を使用できます。
反転する場合はAppStoreアプリの場合、暗号化されることに注意してください。それらを復号化する必要があり(残念ながら、ハウツーを教えることは許可されていません)、次にそれらに対して_class-dump-z
_を実行するだけです。
プリファレンスバンドルのようなものには、プライベートフレームワークのヘッダーが必要です。その場合、Preferences
フレームワークのヘッダーが必要です。そうしないと、宣言の欠落エラーが無限に発生します(私が推測できるように)。
それらを取得するには、前の手順で適用したのと同じロジックがあります。この場合、Preferences
バイナリで_class-dump-z
_を実行し、INCLUDEPATH
にヘッダーをスローします。 INCLUDEPATH
は、コンパイラが_#include <stdio.h>
_のように含めるヘッダーを探す場所です。はい、_stdio.h
_はコンパイラのINCLUDEPATH
を構築するディレクトリの1つにあります!
Theos Makefileを使用してコンパイルする場合、_$THEOS/include
_はINCLUDEPATH
の一部としてカウントされます。つまり、ダンプされたヘッダーをそこにスローして、後で含めることができます。
(クラスダンプされたヘッダーは常に完全であるとは限らないため、ヘッダー関連のコンパイルエラーがいくつか発生する可能性があります。これらのエラーは、_#import
_ディレクティブの削除、変更、追加などで簡単に修正できます。いくつかの宣言。)
%c
_で定義されているLogos _objc_getClass
_ディレクティブまたは_<objc/runtime.h>
_関数を使用して取得する必要があります。例:[%c(SBUIController) sharedInstance]
、[objc_getClass("SBUIController") sharedInstance]
。待って、良い部分はどこですか? _Tweak.xm
_でのコーディングについてどこで学ぶことができますか?
さて、元の質問は実際にはMobileSubstrateの微調整プログラミングを開始する方法ですか?。これですべてのセットアップが完了し、できればすべてのヘッダーが配置され、make
と入力して、プロジェクトがtheosで魔法のようにコンパイルされるのを確認できます。
あなたがする必要があるのは、実際にあなたのヘッダーまたはあなたの分解を掘り下げて、引っ掛けたり、呼び出したりすることです!
ロゴリファレンス ロゴの他の機能をフックして使用する方法が正確に含まれています。 devwikiのMobileSubstrateの記事 も素晴らしい読み物です。
幸運を。疑問がある場合は、遠慮なく_irc.saurik.com #theos
_ IRCチャネルに参加してください。テオス関連のトピックについて話し合ったり質問したりするのに最適な方法です。私はほとんどそこにいます。 、他の非常に賢い人々と一緒に;)
DHowettによって作成されたTheosを探しています。Theosでは微調整が可能ですが、必要なものがすべて揃っているわけではありません。 iOSのすべてのヘッダーを取得できるわけではないため、iOSSDKからframeworks/private-frameworksをclass-dump-zする必要があります。ここから始めましょう: http://iphonedevwiki.net/index.php/Theos/Getting_Started 、またはirc.saurik.net #theos
に参加してヘルプをご覧ください。また、theosを使用する私のプロジェクトを見ることができます: https://github.com/evilpenguin
あなたはテオを探しているように聞こえます。 this を見てください、それはあなたが始めるのを助けるはずです。