前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >某问答社区App x-zse-96签名分析

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

原创
作者头像
fenfei331
发布2022-06-23 10:08:19
8460
发布2022-06-23 10:08:19
举报
文章被收录于专栏:奋飞安全奋飞安全

一、目标

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

main
main

1:main

版本: v8.21.1

二、步骤

搜x-zse-96

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

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

观察共性

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

1、 都是 1.0_ 开头

2、 后面接着的很像Base64

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

代码语言:txt
复制
// 靠字符串去定位
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
show1

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

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

show2
show2

点这个encryp函数进去

代码语言:txt
复制
  public interface b {
        byte[] encrypt(byte[] bArr);
    }

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

打印类成员变量

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

代码语言:txt
复制
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
rc1

1:rc1

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

rc2
rc2

1:rc2

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

rc3
rc3

1:rc3

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

三、总结

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

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

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

ffshow
ffshow

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

Tip:

: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、目标
  • 二、步骤
    • 搜x-zse-96
      • 观察共性
        • 打印类成员变量
        • 三、总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档