• iOS逆向工程之Cycript


    1.连接设备

    打开一个终端,输入指令:

    iproxy 2222 22

    重新打开一个新的终端,输入指令:

    ssh -p 2222 root@127.0.0.1

    这时候会提示输入密码:默认密码为“alpine”。这样就可以连接到设备了。

    也可直接通过如下指令连接到设备:

    ssh root@10.1.200.152 -p 22

    如果后面没有"-p 22",有可能会报错:

    这个时候,使用如下指令修改"services"文件,把5860修改为22即可:

    sudo vi /etc/services 

    2.获取设备进程信息

    输入指令:

    ps ax

    也可以查看具体某个进程的PID:

    ps ax | grep SpringBoard

    3.勾住某个进程

    输入指令:

    //1236为进程ID
    cycript -p 1236

    4.编写方法

    //获取当前控制器
    function currentVC() {
        var app = [UIApplication sharedApplication]  
        var keyWindow = app.keyWindow  
        var rootController = keyWindow.rootViewController  
        var visibleController = rootController.visibleViewController  
        if (!visibleController){
           return rootController
        }
        return visibleController.childViewControllers[0]
    }
    
    //获取当前控制器方法调用
    var vc = currentVC()
    
    //获取控制器所有方法
    function printMethods(className, isa) { 
        var count = new new Type("I");
        var classObj = (isa != undefined) ? objc_getClass(className)->isa :     
        objc_getClass(className); 
        var methods = class_copyMethodList(classObj, 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); 
            return methodsArray;
    }
    
    //调用获取所有方法
    printMethods(CYTabBarController, objc_getClass(CYTabBarController))
    
    //打印成员变量
    function printIvars(className, isa) { 
        var count = new new Type("I");
        var classObj = (isa != undefined) ? objc_getClass(className)->isa :     
        objc_getClass(className); 
        var ivars = class_copyIvarList(classObj, count); 
        var ivarsArray = [];
        for(var i = 0; i < *count; i++) { 
            var ivar = ivars[i]; 
            ivarsArray(ivar_getName(ivar));
        }
            free(ivars); 
            return ivarsArray;
    }
  • 相关阅读:
    BeautifulSoup的基本用法
    打印实例
    webservice和一般处理程序
    C# 后台调用存储过程
    表格增加删除
    asp.net C# 获得配置文件AppSettings 的值
    深入浅出zookeeper(一)
    resource下的excel文件下载被损害
    csdn添加目录
    spring面试题,求求你别问我spring了!
  • 原文地址:https://www.cnblogs.com/LeeGof/p/6944833.html
Copyright © 2020-2023  润新知