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;
    }
  • 相关阅读:
    王者齐聚!Unite 2017 Shanghai 日程讲师全揭晓
    微软在.NET官网上线.NET 架构指南频道
    期待微软平台即服务技术Service Fabric 开源
    Visual Studio 20周年软件趋势随想
    .NET 十五岁,谈谈我眼中的.NET
    API网关Ocelot 使用Polly 处理部分失败问题
    互联网背景下知识半衰期这么短,如何学习?
    CentOS 7 上面安装PowerShell
    搭建consul 集群
    Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
  • 原文地址:https://www.cnblogs.com/LeeGof/p/6944833.html
Copyright © 2011-2022 走看看