您的位置:首页 > 移动开发

iOS使用cycript调试APP技巧

2016-06-28 15:37 447 查看
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/");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: