某潮牌电商App newSign签名分析

简介: 某潮牌电商App newSign签名分析

一、目标


92.png


60后炒邮票,70后炒股,80后炒房,90后炒币,00后又有新玩法了,鞋也能炒。时代变了,看看鞋吧。


93.png


这个 newSign 才是我们的目标。


二、步骤

Jadx搜索 "newSign"

94.png


搜出来的结果虽然很多,但是第一条结果 host.addQueryParameter("newSign", RequestUtils.m38208c(hashMap2, currentTimeMillis)); 这个就很可疑。


Frida上

var RequestUtilsCls = Java.use('com.shxxhuang.xxapp.common.utils.RequestUtils');
RequestUtilsCls.c.implementation = function(a,b){
        var rc = this.c(a,b);
        console.log("a=" + a.entrySet().toArray());
        console.log("b=" + b);
        console.log("c >>> rc=" + rc);
        return rc ;
}


效果不错,入参和 #newSign# 值都出来了

a= v=4.68.6,loginToken=,uuid=76dade3ad5f174d2,platform=android,timestamp=1620702668425
b= 1620702668425
c >>> rc= 0237b9de491aee10ae238983144caa13


不过有个小小的问题,只打印出了,某些请求的 newSign,还有其他很多请求的签名值都没有打印出来。


再观察一下RequestUtils类



95.png


原来同样的函数还有a、b、c。找到问题就好办了,都搞上,打印输出的时候做下区分。

var RequestUtilsCls = Java.use('com.shxxhuang.xxapp.common.utils.RequestUtils');
RequestUtilsCls.a.overload('java.util.Map', 'long').implementation = function(a,b){
        var rc = this.a(a,b);
        console.log("a= " + a.entrySet().toArray());
        console.log("b= " + b);
        console.log("a >>> rc= " + rc);
        return rc ;
}
RequestUtilsCls.b.overload('java.util.Map', 'long').implementation = function(a,b){
        var rc = this.b(a,b);
        console.log("a= " + a.entrySet().toArray());
        console.log("b= " + b);
        console.log("b >>> rc= " + rc);
        return rc ;
}
RequestUtilsCls.c.implementation = function(a,b){
        var rc = this.c(a,b);
        console.log("a= " + a.entrySet().toArray());
        console.log("b= " + b);
        console.log("c >>> rc= " + rc);
        return rc ;
}


这下Ok了,基本上打印全了

a= lastId=,limit=50.0,loginToken=,platform=android,propertyValueId=0.0,spuId=37494.0,timestamp=1620703226570,uuid=76dade3ad5f174d2,v=4.68.6
b= 1620703226570
b >>> rc= d8a9cd2770194d04b65d670df33b054e


三、总结


时代在变,流行在变,技术也在变。不过不变的是套路和人性。

98.png


古往今来,一直有人生活在烟尘之外,有人甚至可以穿越烟云或在烟云中停留之后走出烟云,丝毫不受烟尘味道或煤炭粉尘的影响,保持原来的生活节奏,保持他们那不属于这个世界的样子。但重要的不是生活在烟尘之外,而是生活在烟尘之中,因为只有生活在烟尘之中,呼吸想今天早晨这种雾蒙蒙的空气,才能认识问题的实质,才有可能去解决问题。


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


关注微信公众号: 奋飞安全,最新技术干货实时推送



相关文章
|
9天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
C# 开发工具
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
485 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
540 1
|
18天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
JavaScript 前端开发 小程序
uniapp一个人开发APP关键步骤和考虑因素
uniapp一个人开发APP关键步骤和考虑因素
123 1
uniapp一个人开发APP关键步骤和考虑因素
|
1月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
73 9