Обменять ViewControllers с Frida так же легко, как в Cycript? - PullRequest
0 голосов
/ 28 июня 2019

Я хочу использовать Frida для переключения текущего View Controller моего приложения на другой View Controller, например, вместо отображения LoginController, я хочу переключиться на ContactsController.

Раньше в Cycript это было просто: UIApp.keyWindow.rootViewController = [[SomeOtherController alloc]init].Но я не могу понять, как это сделать с Фридой.

То, что я пробовал до сих пор:

// Allocation of the current View Controller:
var UIApp = ObjC.classes.UIApplication;var ui = UIApp.alloc()

// Allocation of my target View Controller:
var test = ObjC.classes["MyApp.ContactsViewController"];

var testui = test.alloc();

Наивно, я думал, что это будет работать:

ui = testui;         

Синтаксис кажется правильным, но это не такДелать что-нибудь.Я могу инициализировать другой контроллер:

testui.init()
// {"handle": "0x108d915b0"}

Когда я прослеживаю этот метод, я вижу, что он вызывается, но приложение не отображает другой View Controller.

В документации Frida только показано, как отобразить предупреждающее сообщение, и я не смог успешно изменить этот код для своих целей.Например, следующая строка привела к падению моего приложения, и я решил, что понятия не имею, что делаю, и лучше попросить о помощи:

UIApplication.sharedApplication().keyWindow().rootViewController().presentViewController_animated_completion_(testui, true, NULL); 

Так что любая помощь будет принята.

...