8

ジェイルブレイクされた iOS デバイスで、あるアプリが別のアプリ (静的メソッドではなくインスタンス メソッド) からメソッドを呼び出すことは可能ですか? これを言い換える別の方法: アプリのインスタンスを取得して (アプリが実行中であると仮定して)、そのメソッドの 1 つを呼び出せるようにするにはどうすればよいでしょうか?

iPodUI背景:プライベート フレームワークのフックされたメソッドからミュージック プレーヤー アプリの関数を呼び出そうとしています(詳細については、この投稿を参照してください)。

この質問はAndroidについて尋ねられましたが、ジェイルブレイク iOS については何も見つかりませんでした。それが私が間違った質問をしているからであり、別のアプローチを取る必要があるのであれば、私はそれを受け入れます.

4

1 に答える 1

2

これを達成するための簡単で別の方法は、cycript と system() 呼び出しを使用することですが、system() を使用する前に危険に注意してください。ジェイルブレイクされた iOS では、すべてがほとんど安全ではありません)

[[SomeClass sharedInstance] methodToBeCalledExternally]他のプロセスから呼び出したいようなメソッドがあるとしましょう

その呼び出しをテキストファイルに保存できます/tmp/something.cy

次に、次を実行してそのコードを外部に挿入します。

cycript -p Music /tmp/something.cy

しかし、プログラムでそれを行う必要がある場合、そしてもちろん環境がサンドボックス化されていない場合 (そうではないと思います)、次のことができます。

system("cycript -p Music /tmp/something.cy")

このようにして、任意の ObjC コードをコードから任意のプロセス (この場合はミュージック アプリ) で実行できます。

/tmp/something.cy最後に、ファイルは不要になるため、忘れずに削除してください。

于 2014-05-01T21:16:33.910 に答える