準備:
- .アイシアシスタント
- .Cydia がインストールされたジェイルブレイクされた iPhone
- . Theos をインストールします。インストール チュートリアルは無視されます。Theos のインストールはより面倒です。主にネットワークの理由によります。グリーン バージョンはこちら
https://download.csdn.net/download/u010775335/86882617
微調整チュートリアルが正式に開始
- まず、通常の xcode のデモ プロジェクトを作成し、bundlerID を "com.test.tweak" に設定し、ViewController に次のコードを追加します。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)viewDidAppear:(BOOL)animated{
[self bigun_test];
}
-(void)bigun_test{
NSLog(@"12");
}
@end
実行して、「12」を直接出力します
- 次に、微調整によって bigun_test 関数を直接変更します。
- 靴のディレクトリが「$THOES_HOME」であるとします。
- 次に、tweak プロジェクトを作成するコードは次のとおりです。
终端执行命令
$THOES_HOME/bin/nic.pl
注意,不得在$THOES_HOME中运行,否则报错
「iphone/tweak」を選択し、そのオプション、つまり「17」と入力します
- OK、tweak プロジェクトが作成されました。プロジェクトに必要な設定は次のとおりです。
- 「tweak プロジェクト名.plist」ファイルを修正し、内部の bundleId を「com.test.tweak」に変更します。
- Aisi Assistant を開き、iPhone を接続し、Aisi Assistant を介して ssh チャネルを開きます
- tweak プロジェクトに戻り、Makefile を変更し、ファイルの先頭に上記の ssh 構成を追加します.
「
THEOS_DEVICE_IP」、
「THEOS_DEVICE_PORT」、
「ARCHS」
フック コードを次のように追加します。 - Tweak.x コードを次のように変更します。
#import <UIKit/UIKit.h>
@interface ViewController:UIViewController //为了使用self,否则编译不过
@end
%hook ViewController
-(void)bigun_test{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"标题" message:@"恭喜hook成功" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *conform = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"点击了确认按钮");
}];
[alert addAction:conform];
[self presentViewController:alert animated:YES completion:nil];
}
%end
- ここで「<UIKit/UIKit.h>」を使用していることに注意してください。下図に示すように、対応するフレームワークを Makefile に追加する必要があります
。
フレームワークを追加しないでください。次のようなエラーが報告されます。
Tweak.x:39:5: error: use of undeclared identifier 'UIAlertView'
コンパイル、パッケージ、実行
- ターミナルを開き、cd で微調整ルート ディレクトリに移動し、コマンドを実行します。
make clean && make package && make install
事故がなければ以下のログは
期間中にsshのパスワードを2回入力する必要があるかもしれません
OK~、フック プラグインが作成され、インストールされました。デモ プロジェクトを再度実行すると、ポップアップ ウィンドウが表示されます。
以下は、一般的なエラーと解決策です。
コンパイルとインストールを実行すると、次のエラーが表示されます。
ssh: connect to host 192.168.1.102 port 22: Operation timed out
解決策:
open_ssh が cydia にインストールされているかどうかを確認します