frida hook in java

作者: 渣空格 | 来源:发表于2020-12-27 16:54 被阅读0次

第一课时 Hook In Java

  • vscode中自动提示npm i @types/froda-gum

  • hook java层代码

    • function hook_java() {
          Java.perform(function() {
          var clazz = Java.use("java class")          // Java.use 是java的类包装器
          clazz.a.implementation = function(str, str2) { // a为函数
            var result = this.a(str, str2);
          }   
        })    
      }
      
  • 开启frida frida -U packageName -l hook.js

  • 调用函数,静态的能直接调用,非静态的要用Java.Choose来调用函数

    • function call_FridaActivity2() {
          //主动调用函数
          Java.perform(function () {
              var FridaActivity2 = Java.use("com.example.androiddemo.Activity.FridaActivity2");
              FridaActivity2.setStatic_bool_var();    //调用静态函数
                      // 非静态 要找到对象
              Java.choose("com.example.androiddemo.Activity.FridaActivity2", {
                  onMatch: function (instance) {
                      instance.setBool_var();
                  },
                  onComplete: function () {
      
                  }
              });
          });
      }
      
      
  • 直接设置类中的变量,静态的值就直接修改即可,非静态的需要获取他的对象在修改,如果函数的名字和变量一样,就要在变量前面加个下划线。

    • function call_FridaActivity3() {
          Java.perform(function () {
              var FridaActivity3 = Java.use("com.example.androiddemo.Activity.FridaActivity3");
              FridaActivity3.static_bool_var.value = true;        //设置静态成员变量
      
              console.log(FridaActivity3.static_bool_var.value);
      
              Java.choose("com.example.androiddemo.Activity.FridaActivity3", {
                  onMatch: function (instance) {
                      //设置非静态成员变量的值
                      instance.bool_var.value = true;
                      //设置有相同函数名的成员变量的值
                      instance._same_name_bool_var.value = true;
                      console.log(instance.bool_var.value, instance._same_name_bool_var.value);
                  },
                  onComplete: function () {
      
                  }
              });
          });
      }
      
  • 内部类的函数

    • function hook_InnerClasses() {
          Java.perform(function () {
              //hook内部类
              var InnerClasses = Java.use("com.example.androiddemo.Activity.FridaActivity4$InnerClasses");
              console.log(InnerClasses);
              InnerClasses.check1.implementation = function () {
                  return true;
              };
              InnerClasses.check2.implementation = function () {
                  return true;
              };
              InnerClasses.check3.implementation = function () {
                  return true;
              };
              InnerClasses.check4.implementation = function () {
                  return true;
              };
              InnerClasses.check5.implementation = function () {
                  return true;
              };
              InnerClasses.check6.implementation = function () {
                  return true;
              };
          });
      }
      
      
  • hook 多个函数的

    • function hook_mul_function() {
          Java.perform(function () {
              //hook 类的多个函数
              var class_name = "com.example.androiddemo.Activity.FridaActivity4$InnerClasses";
              var InnerClasses = Java.use(class_name);
              var all_methods = InnerClasses.class.getDeclaredMethods();
              for (var i = 0; i < all_methods.length; i++) {
                  var method = (all_methods[i]);
                  var methodStr = method.toString();
                  var substring = methodStr.substr(methodStr.indexOf(class_name) + class_name.length + 1);
                  var methodname = substring.substr(0, substring.indexOf("("));
                  console.log(methodname);
      
                  InnerClasses[methodname].implementation = function () {
                      console.log("hook_mul_function:", this);
                      return true;
                  }
      
              }
      
          });
      }
      
  • hook 动态的dex,

    • unction hook_dyn_dex() {
          Java.perform(function () {
              var FridaActivity5 = Java.use("com.example.androiddemo.Activity.FridaActivity5");
              Java.choose("com.example.androiddemo.Activity.FridaActivity5", {
                  onMatch: function (instance) {
                      console.log(instance.getDynamicDexCheck().$className);
                  }, onComplete: function () {
      
                  }
              });
      
      
              //hook 动态加载的dex
              Java.enumerateClassLoaders({
                  onMatch: function (loader) {
                      try {
                          if (loader.findClass("com.example.androiddemo.Dynamic.DynamicCheck")) {
                              console.log(loader);
                              Java.classFactory.loader = loader;      //切换classloader
                          }
                      } catch (error) {
      
                      }
      
                  }, onComplete: function () {
      
                  }
              });
      
              var DynamicCheck = Java.use("com.example.androiddemo.Dynamic.DynamicCheck");
              console.log(DynamicCheck);
              DynamicCheck.check.implementation = function () {
                  console.log("DynamicCheck.check");
                  return true;
              }
          });
      }
      

相关文章

  • frida常用api

    Frida 常用模块API: Java 模块:Hook Java 层的类 方法 相关 Module 模块:处理so...

  • frida hook in java

    第一课时 Hook In Java vscode中自动提示npm i @types/froda-gum hook ...

  • frida的用法--Hook Java代码篇

    frida是一款方便并且易用的跨平台Hook工具,使用它不仅可以Hook Java写的应用程序,而且还可以Hook...

  • 某瓣app _sig 分析

    frida hook js代码

  • Frida Java世界hook

    Skeleton 先上一个程序skeleton, 然后逐步分析 Android side当然要运行起服务, 默认操...

  • frida native hook

    本篇介绍 frida 也支持hook native,本篇看下如何hook native hook native函数...

  • frida的几个常用工具

    1、hook native so的工具:frida_hook_libart https://github.com/...

  • frida hook native / frida hook s

    frida hook native 大家好,我是王铁头 一个乙方安全公司搬砖的菜鸡持续更新移动安全,iot安全,编...

  • Frida 之 Java层Hook

    前言 Frida是个轻量级别的hook框架,是Python API,但JavaScript调试逻辑,它既可以hoo...

  • Frida Hook

    - Hook Dlopen - Java堆栈打印 - Native堆栈打印 - HookJava中的loadLib...

网友评论

    本文标题:frida hook in java

    本文链接:https://www.haomeiwen.com/subject/oeionktx.html