Frida Javascript api #Java 与 #We

2020-02-15  本文已影响0人  邓超_码农加点中

原文链接: https://frida.re/docs/javascript-api/#java
欢迎加入 Frida 交流群: 1049977261

Java

Java.perform(function () {
  var Activity = Java.use('android.app.Activity');
  Activity.onResume.implementation = function () {
    send('onResume() got called! Let\'s call the original implementation');
    this.onResume();
  };
});
Java.perform(function () {
  var Activity = Java.use('android.app.Activity');
  var Exception = Java.use('java.lang.Exception');
  Activity.onResume.implementation = function () {
    throw Exception.$new('Oh noes!');
  };
});

默认使用应用的类加载器, 但您可以通过给 Java.classFactory.loader 赋值一个不同的加载器实例来进行自定义.
请注意, 所有的方法包裹都提供了 clone(options) API 来配合 NativeFunction 选项创造一个新的方法包裹对象.

Java.perform(function () {
  var Activity = Java.use('android.app.Activity');
  var lastActivity = null;
  Activity.onResume.implementation = function () {
    lastActivity = Java.retain(this);
    this.onResume();
  };
});
var Activity = Java.use('android.app.Activity');
var activity = Java.cast(ptr('0x1234'), Activity);
var values = Java.array('int', [ 1003, 1005, 1007 ]);

var JString = Java.use('java.lang.String');
var str = JString.$new(Java.array('byte', [ 0x48, 0x65, 0x69 ]));
var SomeBaseClass = Java.use('com.example.SomeBaseClass');
var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager');

var MyTrustManager = Java.registerClass({
  name: 'com.example.MyTrustManager',
  implements: [X509TrustManager],
  methods: {
    checkClientTrusted: function (chain, authType) {
    },
    checkServerTrusted: function (chain, authType) {
    },
    getAcceptedIssuers: function () {
      return [];
    },
  }
});

var MyWeirdTrustManager = Java.registerClass({
  name: 'com.example.MyWeirdTrustManager',
  superClass: SomeBaseClass,
  implements: [X509TrustManager],
  fields: {
    description: 'java.lang.String',
    limit: 'int',
  },
  methods: {
    $init: function () {
      console.log('Constructor called');
    },
    checkClientTrusted: function (chain, authType) {
      console.log('checkClientTrusted');
    },
    checkServerTrusted: [{
      returnType: 'void',
      argumentTypes: ['[Ljava.security.cert.X509Certificate;', 'java.lang.String'],
      implementation: function (chain, authType) {
        console.log('checkServerTrusted A');
      }
    }, {
      returnType: 'java.util.List',
      argumentTypes: ['[Ljava.security.cert.X509Certificate;', 'java.lang.String', 'java.lang.String'],
      implementation: function (chain, authType, host) {
        console.log('checkServerTrusted B');
        return null;
      }
    }],
    getAcceptedIssuers: function () {
      console.log('getAcceptedIssuers');
      return [];
    },
  }
});

WeakRef

上一篇下一篇

猜你喜欢

热点阅读