美文网首页
某问答社区App x-zse-96签名分析

某问答社区App x-zse-96签名分析

作者: fenfei331 | 来源:发表于2022-06-23 10:12 被阅读0次

    一、目标

    今天我们的目标是某问答社区App的 x-zse-96

    main.png

    1:main

    版本: v8.21.1

    二、步骤

    搜x-zse-96

    常规做法是jadx打开apk,然后搜索x-zse-96。

    神奇的是,居然没有结果,这就有点意思了,App给我们加戏了,把一些明显的字符串做了加密隐藏。

    观察共性

    观察一下,签名有两个共性

    1、 都是 1.0_ 开头

    2、 后面接着的很像Base64

    那就先从hook开头开始吧。继续用大海捞针法来捞开头。

    // 靠字符串去定位
    var strCls = Java.use("java.lang.StringBuilder");
    strCls.toString.implementation = function(){
        var result = this.toString();
    
        // console.log(result.toString());
    
        if(result.toString().indexOf("1.0_") >= 0 )
        {
            console.log(result.toString());
    
            var stack = threadinstance.currentThread().getStackTrace();
            console.log("Rc Full call stack:" + Where(stack));
    
        }
        return result;
    }
    

    来跑一下。

    show1.png

    幸运的是,我们这次猜对了开头,也猜对了结果。

    下面的目标就是这个 com.zxxxu.android.net.d.i.e

    show2.png

    点这个encryp函数进去

      public interface b {
            byte[] encrypt(byte[] bArr);
        }
    

    发现b变量是个接口类型,所以我们还得知道它实际被赋值的变量是什么类型才可以。

    打印类成员变量

    这个我们会 http://91fans.com.cn/post/idlesignone/ 以前介绍过打印类的成员变量。

    var requestCls =  Java.use("com.zxxxu.android.net.d.i");
    requestCls.e.implementation = function(a){
        console.log(" ========== ");
    
        var fields = Java.cast(this.getClass(),Java.use('java.lang.Class')).getDeclaredFields();
        //console.log(fields);
        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];
            field.setAccessible(true);
            var name = field.getName();
            var value =field.get(this)
            console.log("name:"+name+"\tvalue:"+value);
        }
    
        console.log(" ========== ");
        var result = this.e(a);
        return result;
    }
    

    结果出来了

    rc1.png

    1:rc1

    这个类名出来了 -$$Lambda$AshC3KZBWneDDB5y10Ccx5ghIWw 看上去还是比较复杂的

    rc2.png

    这个 a.a 函数继续往下找,最后就找到这里了

    rc3.png

    可以写代码去hook了, 从名称上看大概率是 aes算法。而且除了明文还有两个参数,那么大概率是key和iv了。

    三、总结

    App开始狡猾了,明显的字符串做了加密,我们找起来就没那么方便了。

    关键点还是共性,只要有共性,就有线索了。

    com.secneo.apkwrapper.H.d 这个函数大家可以分析下,它应该就是加密那个明显字符串的。从它可以暴露出x-zse-96。

    ffshow.jpeg

    无人与问,但浊酒相呼,疏帘自卷,微月照清饮。

    相关文章

      网友评论

          本文标题:某问答社区App x-zse-96签名分析

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