• frida


    https://www.jianshu.com/p/c349471bdef7

    frida安装

    python -m pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

    pip install frida -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

    pip install frida==12.2.29 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

    pip install frida==12.2.29 -i https://pypi.tuna.tsinghua.edu.cn/simple

    adb

    • 获取root权限:
    adb shell
    su
    
    • adb清除密码(先进root权限)
    cd data/system
    rm locksettings.db
    rm locksettings.db-shm
    

    查看Android手机设备设置
    getprop ro.product.cpu.abi
    Android有 x86、x86_64、arm、arm64

    adb push C:UsersghyDesktopffrida-core-devkit-12.8.20-android-x86.tarfrida-core-devkit-12.8.20-android-x86.tar /data/local/tmp/

    adb push C:UsersghyDesktopffrida-server86 /data/local/tmp/

    chmod 777 frida-server86

    cd data/local/tmp

    ./frida-server86

    列出该设备上运行中的进程
    frida-ps -U

    列出运行中的程序
    frida-ps -Ua

    列出安装的程序
    frida-ps -Uai

    注入脚本:
    frida -U -l script.js com.ghy

    https://www.sohu.com/a/246175537_557054
    https://www.jianshu.com/p/b833fba1bffe
    https://www.52pojie.cn/thread-836277-1-1.html
    https://www.52pojie.cn/forum.php?mod=viewthread&tid=931872

    hook带参数的实例方法

    if (Java.available) {
        Java.perform(function () {
            var LoginActivity = Java.use("com.app.ui.activity.LoginActivity");
            LoginActivity.login.overload("java.lang.String", "java.lang.String").implementation = function (paramString1, paramString2) {
                console.log(paramString1)
                console.log(paramString2)
                console.log("test....11")
                //send("isExcellent be called")
                return this.login(paramString1, paramString2);
            }
        });
    }
    

    hook同名不同参数的方法(重载方法)

        类.方法.overload('java.lang.String','java.lang.String','boolean').implementation =function(arg1,arg2,arg3){
                    
                   
           }
    

    hook js

    // 这个方法是为了辅助我输出用的,和python的字符串.format差不多的用法
    String.prototype.format = function () {
        var values = arguments;
        return this.replace(/{(d+)}/g, function (match, index) {
            if (values.length > index) {
                return values[index];
            } else {
                return "";
            }
        });
    };
    
    
    // Resources 类hook
    Java.perform(function() {
        var Resources = Java.use('android.content.res.Resources'); // 获取Resources类
        // 因为getString方法重载,有几个我也没数,我只知道我需要用到的是接收一个id作为参数的方法
        //.overload填上你要hook的方法的参数类型,如果不知道直接不写,frida会报错提示你
        Resources['getString'].overload('int').implementation = function(id) { // id是接收到的参数
            console.log('
    ----- [Resources.getString] -----');
            var str = this.getText(id); // 这里通过this调用了Resources类中的getText方法
            console.log('resId:{0} => string:{1}'.format(id,str)); // 输出
            return str // 返回
        }
    });
    
    
    // Toast 类hook,和上面一样
    Java.perform(function() {
        var Toast = Java.use('android.widget.Toast');
        Toast['makeText'].overload('android.content.Context', 'java.lang.CharSequence', 'int').implementation = function(context, text, duration) { // 三个参数
            console.log('
    ----- [Toast.makeText] -----');
            console.log('[Context]');
            console.log('
    	Context:', context);
            console.log('
    	Class:', context.getClass());
            var clazz = String(context.getClass()).split('.');
            console.log('
    		Class Package:', clazz[0]);
            console.log('
    		Class Name:', clazz[1]);
            console.log('Text:', text);
            console.log('Duration:', duration);
            return this.makeText(context, null, text, duration);
        }
    });
    
    

  • 相关阅读:
    js判断是否是合法的端口号
    解决tomcat中文乱码
    使用java代码删除nexus maven仓库中的jar包、pom.xml等组件
    基于 Kubernetes 构建企业 Jenkins 持续集成平台
    minio部署
    elaticsearch 部署
    skywalking 8.0 配置文件
    使用node local dns来提升ClusterDNS服务质量
    kubernetes之监控Operator部署Prometheus
    夜莺监控+prometheus 架构图
  • 原文地址:https://www.cnblogs.com/bqh10086/p/12714172.html
Copyright © 2020-2023  润新知