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

网友投稿 1192 2022-10-20

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

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

一、目标

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

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;}

来跑一下。

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

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

点这个encryp函数进去

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

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

打印类成员变量

这个我们会 ​​91fans.com-/post/idlesi…​​ 以前介绍过打印类的成员变量。

var requestCls = Java.use("com.zxxxu.android-.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;}

结果出来了

1:rc1

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

1:rc2

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

1:rc3

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

三、总结

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

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

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:koa-hwtm- 基于 koa 的 MVC 框架
下一篇:Frida Stalker 是什么?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~