cycript -p MobiSecretSMS
var app = [UIApplication sharedApplication]
app.delegate
var keyWindow = app.keyWindow
var rootController = keyWindow.rootViewController
var visibleController = rootController.visibleViewController
function printMethods(className) {
var count = new new Type("I");
var methods = class_copyMethodList(objc_getClass(className), count);
var methodsArray = [];
for(var i = 0; i < *count; i++) {
var method = methods[i];
methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
}
free(methods);
free(count);
return methodsArray;
}
printMethods(MobiLockViewController)
[visibleController onApiLoginSuccess:@"errCode:0"]
UIApp.keyWindow.recursiveDescription
function printMethods(className) {
var count = new new Type("I");
var methods = class_copyMethodList(objc_getClass(className), count);
var methodsArray = [];
for(var i = 0; i < *count; i++) {
var method = methods[i];
methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
}
free(methods);
free(count);
return methodsArray;
}
//printMethods(MobiLoginViewController)
//var assetsController = new Instance(0x162b5e50)
//assetsController.view.backgroundColor = [UIColor blueColor]
[visibleController.view removeFromSuperview]
[rootController.view addSubview:visibleController.view]
[visibleController onApiCheckLoginSuccess:@"1"]
var tv = [[MobiTabbarViewController alloc] init]
[visibleController.view addSubview:tv.view]
[tv.view removeFromSuperview]
[visibleController onApiLoginSuccess:@"xxxxxx"]
[visibleController onApiCheckLoginSuccess:@"xxxxxx"]
//获得当前最上层VierController
function getTopVC(){
var result = nil;
var window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
var winarray=[]
winarray= [[UIApplication sharedApplication] windows];
for(var i=0;i<windows.count;i++)
{
var tmpWin = [windows objectAtIndex:i];
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
var frontView = [[window subviews] objectAtIndex:0];
var nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
$ cycript -p 3272 weak_classdump.cy; cycript -p 3272
UIApp
UIApp.delegate
weak_classdump(MobiAppDelegate, "/someDirWithWriteAccess/");
var app = [UIApplication sharedApplication]
app.delegate
var keyWindow = app.keyWindow
var rootController = keyWindow.rootViewController
var visibleController = rootController.visibleViewController
function printMethods(className) {
var count = new new Type("I");
var methods = class_copyMethodList(objc_getClass(className), count);
var methodsArray = [];
for(var i = 0; i < *count; i++) {
var method = methods[i];
methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
}
free(methods);
free(count);
return methodsArray;
}
printMethods(MobiLockViewController)
[visibleController onApiLoginSuccess:@"errCode:0"]
UIApp.keyWindow.recursiveDescription
function printMethods(className) {
var count = new new Type("I");
var methods = class_copyMethodList(objc_getClass(className), count);
var methodsArray = [];
for(var i = 0; i < *count; i++) {
var method = methods[i];
methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
}
free(methods);
free(count);
return methodsArray;
}
//printMethods(MobiLoginViewController)
//var assetsController = new Instance(0x162b5e50)
//assetsController.view.backgroundColor = [UIColor blueColor]
[visibleController.view removeFromSuperview]
[rootController.view addSubview:visibleController.view]
[visibleController onApiCheckLoginSuccess:@"1"]
var tv = [[MobiTabbarViewController alloc] init]
[visibleController.view addSubview:tv.view]
[tv.view removeFromSuperview]
[visibleController onApiLoginSuccess:@"xxxxxx"]
[visibleController onApiCheckLoginSuccess:@"xxxxxx"]
//获得当前最上层VierController
function getTopVC(){
var result = nil;
var window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
var winarray=[]
winarray= [[UIApplication sharedApplication] windows];
for(var i=0;i<windows.count;i++)
{
var tmpWin = [windows objectAtIndex:i];
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
var frontView = [[window subviews] objectAtIndex:0];
var nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
$ cycript -p 3272 weak_classdump.cy; cycript -p 3272
UIApp
UIApp.delegate
weak_classdump(MobiAppDelegate, "/someDirWithWriteAccess/");