某大型电商APP sign头部签名逆向分析

APP版本

唯品会 7.45
Java层抓包分析

打开抓包工具 charles进行分析,可以发现对于API采集需要突破当前这个参数,否则不返回信息
某大型电商APP sign头部签名逆向分析_第1张图片

jadx静态分析

jadx静态分析,打开app搜索关键词api_sign,可以发现有参数位置

某大型电商APP sign头部签名逆向分析_第2张图片

跟进去上边str赋值方法m52297b,看看参数是怎么来的

某大型电商APP sign头部签名逆向分析_第3张图片

总结:该方法里面传入上下文、MAP类型参数、2个字符串参数,返回值m52298a 对参数进行了系列处理,继续跟进这个方法

某大型电商APP sign头部签名逆向分析_第4张图片

总结:这里面可以看到调用了 apiSign方法对参数进行处理,继续跟进到方法里面

在这里插入图片描述

总结:该方法对传入的参数继续调用getMapParamsSign进行处理、可以跟进这个方法查看

某大型电商APP sign头部签名逆向分析_第5张图片

总结:该方法对MAp类型数据进行迭代处理,然后还是调用getSignHash方法处理数据

某大型电商APP sign头部签名逆向分析_第6张图片

总结:该方法调用m8334gs

某大型电商APP sign头部签名逆向分析_第7张图片

总结:到了这个位置、可以看到参数已经到达边界、有可能这里就是数据返回的位置,可以使用frida hook一下结果,与抓包对比一致。

在这里插入图片描述

从中可以看到clazz就是com.vip.vcsp.KeyInfo类,跟进去这个类继续查找

某大型电商APP sign头部签名逆向分析_第8张图片

总结:这里调用gsNav方法、该方法是加载了一个jni文件,也被称为app里面的so文件,由C语言编写的算法,被Java调用。

从上面可以看到so文件名称是private static final String LibName = "keyinfo";,一般so文件都会打包在apk文件,可以从里面查找文件,用ida汇编工具进行查询。

IDA汇编分析

打开工具,拖进去so文件即可,可以看到这个页面,工具的使用可以看之前的教程,

某大型电商APP sign头部签名逆向分析_第9张图片

我们先查询导出函数,看下是否有Java层代码,说明函数是静态注册的

某大型电商APP sign头部签名逆向分析_第10张图片

根进去方法、然后按F5转伪C代码,从这里面分析业务逻辑

某大型电商APP sign头部签名逆向分析_第11张图片

根进去前面的方法、可以看到这个界面,里面对入参进行一系列处理

某大型电商APP sign头部签名逆向分析_第12张图片

总结:可以看到一系列对map的操作,但是不急着对这部分分析,接着往下看

某大型电商APP sign头部签名逆向分析_第13张图片

总结:可以看到一个j_getByteHash方法,通过函数名推断它极大可能就是执行摘要算法的地方。

某大型电商APP sign头部签名逆向分析_第14张图片

通过名称推断是sha1算法。使用frida hook一下,可以发现参数和加密结果都能对上,那就无疑了,后续就可以算法还原了。

某大型电商APP sign头部签名逆向分析_第15张图片

贴一张拿数据的结果

某大型电商APP sign头部签名逆向分析_第16张图片

到此整个代码分析就算完毕了。

这里给大家准备爬虫脚本,有需要的关注我或者加V-》tl210329 进行领取。

你可能感兴趣的:(JavaScript逆向,爬虫逆向)