一、目标
60后炒邮票,70后炒股,80后炒房,90后炒币,00后又有新玩法了,鞋也能炒。时代变了,看看鞋吧。
这个 newSign 才是我们的目标。
二、步骤
Jadx搜索 "newSign"
搜出来的结果虽然很多,但是第一条结果 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类
原来同样的函数还有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
三、总结
时代在变,流行在变,技术也在变。不过不变的是套路和人性。
古往今来,一直有人生活在烟尘之外,有人甚至可以穿越烟云或在烟云中停留之后走出烟云,丝毫不受烟尘味道或煤炭粉尘的影响,保持原来的生活节奏,保持他们那不属于这个世界的样子。但重要的不是生活在烟尘之外,而是生活在烟尘之中,因为只有生活在烟尘之中,呼吸想今天早晨这种雾蒙蒙的空气,才能认识问题的实质,才有可能去解决问题。
TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。
关注微信公众号: 奋飞安全,最新技术干货实时推送