hooker自动化生成frida脚本和objection自动化效果对比


hooker自动生成frida脚本和objection生成脚本测试

 

我们挑一个混淆比较厉害的类看下hooker自动生成的frida脚本和objection生成的区别

 

 

hooker生成的:

//okhttp3.HttpUrl
Java.perform(function() {
    var okhttp3_HttpUrl_clz = Java.use('okhttp3.HttpUrl');
    var okhttp3_HttpUrl_clz_method_equals_6085 = okhttp3_HttpUrl_clz.equals.overload('java.lang.Object');
    okhttp3_HttpUrl_clz_method_equals_6085.implementation = function(v0) {
        var executor = this.hashCode();
        var beatText = 'public final boolean okhttp3.HttpUrl.equals(java.lang.Object)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_equals_6085.call(this, v0);
        printBeat(beat);
        return ret;
    };
    //方法名:namesAndValuesToQueryString 参数:('java.lang.StringBuilder', 'java.util.List')
    var okhttp3_HttpUrl_clz_method_namesAndValuesToQueryString_0472 = okhttp3_HttpUrl_clz.namesAndValuesToQueryString.overload('java.lang.StringBuilder', 'java.util.List');
    okhttp3_HttpUrl_clz_method_namesAndValuesToQueryString_0472.implementation = function(v0, v1) {
        var executor = 'Class';
        var beatText = 'public static void okhttp3.HttpUrl.namesAndValuesToQueryString(java.lang.StringBuilder,java.util.List)';
        var beat = newMethodBeat(beatText, executor);
        okhttp3_HttpUrl_clz_method_namesAndValuesToQueryString_0472.call(okhttp3_HttpUrl_clz, v0, v1);
        printBeat(beat);
    };
    var okhttp3_HttpUrl_clz_method_query_7752 = okhttp3_HttpUrl_clz.query.overload();
    okhttp3_HttpUrl_clz_method_query_7752.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.query()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_query_7752.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_encodedFragment_6652 = okhttp3_HttpUrl_clz.encodedFragment.overload();
    okhttp3_HttpUrl_clz_method_encodedFragment_6652.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.encodedFragment()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_encodedFragment_6652.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_uri_1829 = okhttp3_HttpUrl_clz.uri.overload();
    okhttp3_HttpUrl_clz_method_uri_1829.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.net.URI okhttp3.HttpUrl.uri()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_uri_1829.call(this);
        printBeat(beat);
        return ret;
    };
    //方法名:url 参数:()
    var okhttp3_HttpUrl_clz_method_url_0157 = okhttp3_HttpUrl_clz.url.overload();
    okhttp3_HttpUrl_clz_method_url_0157.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.net.URL okhttp3.HttpUrl.url()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_url_0157.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_parse_4513 = okhttp3_HttpUrl_clz.parse.overload('java.lang.String');
    okhttp3_HttpUrl_clz_method_parse_4513.implementation = function(v0) {
        var executor = 'Class';
        var beatText = 'public static okhttp3.HttpUrl okhttp3.HttpUrl.parse(java.lang.String)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_parse_4513.call(okhttp3_HttpUrl_clz, v0);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_queryParameterName_9839 = okhttp3_HttpUrl_clz.queryParameterName.overload('int');
    okhttp3_HttpUrl_clz_method_queryParameterName_9839.implementation = function(v0) {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.queryParameterName(int)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_queryParameterName_9839.call(this, v0);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_port_9939 = okhttp3_HttpUrl_clz.port.overload();
    okhttp3_HttpUrl_clz_method_port_9939.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final int okhttp3.HttpUrl.port()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_port_9939.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_canonicalize_8925 = okhttp3_HttpUrl_clz.canonicalize.overload('java.lang.String', 'int', 'int', 'java.lang.String', 'boolean', 'boolean', 'boolean', 'boolean', 'java.nio.charset.Charset');
    okhttp3_HttpUrl_clz_method_canonicalize_8925.implementation = function(v0, v1, v2, v3, v4, v5, v6, v7, v8) {
        var executor = 'Class';
        var beatText = 'public static java.lang.String okhttp3.HttpUrl.canonicalize(java.lang.String,int,int,java.lang.String,boolean,boolean,boolean,boolean,java.nio.charset.Charset)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_canonicalize_8925.call(okhttp3_HttpUrl_clz, v0, v1, v2, v3, v4, v5, v6, v7, v8);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_encodedPassword_0503 = okhttp3_HttpUrl_clz.encodedPassword.overload();
    okhttp3_HttpUrl_clz_method_encodedPassword_0503.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.encodedPassword()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_encodedPassword_0503.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_queryParameter_5207 = okhttp3_HttpUrl_clz.queryParameter.overload('java.lang.String');
    okhttp3_HttpUrl_clz_method_queryParameter_5207.implementation = function(v0) {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.queryParameter(java.lang.String)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_queryParameter_5207.call(this, v0);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_toString_5012 = okhttp3_HttpUrl_clz.toString.overload();
    okhttp3_HttpUrl_clz_method_toString_5012.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.toString()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_toString_5012.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_canonicalize_3077 = okhttp3_HttpUrl_clz.canonicalize.overload('java.lang.String', 'java.lang.String', 'boolean', 'boolean', 'boolean', 'boolean', 'java.nio.charset.Charset');
    okhttp3_HttpUrl_clz_method_canonicalize_3077.implementation = function(v0, v1, v2, v3, v4, v5, v6) {
        var executor = 'Class';
        var beatText = 'public static java.lang.String okhttp3.HttpUrl.canonicalize(java.lang.String,java.lang.String,boolean,boolean,boolean,boolean,java.nio.charset.Charset)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_canonicalize_3077.call(okhttp3_HttpUrl_clz, v0, v1, v2, v3, v4, v5, v6);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_encodedPath_2022 = okhttp3_HttpUrl_clz.encodedPath.overload();
    okhttp3_HttpUrl_clz_method_encodedPath_2022.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.encodedPath()';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_encodedPath_2022.call(this);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_percentDecode_3846 = okhttp3_HttpUrl_clz.percentDecode.overload('java.lang.String', 'int', 'int', 'boolean');
    okhttp3_HttpUrl_clz_method_percentDecode_3846.implementation = function(v0, v1, v2, v3) {
        var executor = 'Class';
        var beatText = 'public static java.lang.String okhttp3.HttpUrl.percentDecode(java.lang.String,int,int,boolean)';
        var beat = newMethodBeat(beatText, executor);
        var ret = okhttp3_HttpUrl_clz_method_percentDecode_3846.call(okhttp3_HttpUrl_clz, v0, v1, v2, v3);
        printBeat(beat);
        return ret;
    };
    var okhttp3_HttpUrl_clz_method_scheme_2975 = okhttp3_HttpUrl_clz.scheme.overload();
    okhttp3_HttpUrl_clz_method_scheme_2975.implementation = function() {
        var executor = this.hashCode();
        var beatText = 'public final java.lang.String okhttp3.HttpUrl.scheme()';
        var beat = newMethodBeat(beatText, executor);
       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值