zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    linux环境下MongoDB的部署及应用
    Memcache,Redis,MongoDB三种非关系型数据库的对比
    什么是事务
    umount卸载目录的时候,提示正忙
    Maven私服Nexus3.x环境部署应用
    执行yum提示error: rpmdb: BDB0113 Thread/process 9060/139773561796608 failed: BDB1507 Thread died in Berkeley DB library
    vim 常用
    nginx的部署和配置
    linux系统异常关机导致报文件系统只读Read-only file system的解决方法
    js拖拽
  • 原文地址:https://www.cnblogs.com/LeeGof/p/6944833.html
Copyright © 2011-2022 走看看