易久批x-sign参数逆向分析
本篇文章仅用于交流与学习严禁用于任何商业与非法用途否则由此产生的一切后果均与作者无关如有侵权请联系作者本人进行删除。感谢关注您的关注和点赞就是我的动力1.逆向目标aHR0cHM6Ly93d3cueWlqaXVwaS5jb20vaW5kZXguaHRtbCMvaW5kZXgvbGlzdD9zZWFyY2hLZXk9JUU1JThGJUFGJUU1JThGJUEzJUU1JThGJUFGJUU0JUI5JTkw主要分析这里的x-sign参数2.逆向分析打上断点跟栈分析,这里目标参数还未生成,执行这里的异步之后参数就生成了,说明x-sign参数就是再异步中生成的先进异步中的第一个方法到这里目标参数还未生成,在方法return的位置上打上断点代码停在这里时,sign参数还没有生成执行了这里的rr方法后参数生成了,现在进入方法内进入后发现k参数就是我们要找的sign主要的逻辑代码,手动解一下混淆,加密逻辑基本就清晰了for (var i [], a 0123456789abcdefghijklmnopqrstuvwxyz, c 0; c 36; c) i[c] a[r(416)](Math[floor](16 * Math[r(378)]()), 1); i[14] 4, i[19] a[r(416)](3 i[19] | 8, 1), i[8] i[13] i[18] i[23] _; var u i[r(410)]() , s (new Date)[r(386)]() / 1e3 , l parseFloat(localStorage[getItem](local_init_time) || s) , d parseFloat(localStorage[getItem](server_init_time) || s) , f d (s - l); f (f )[r(389)](.)[0], t[r(401)] t[r(401)] || {}; var p JSON[stringify](t[data]) , m e[r(414)](p) , h t[method] r(400) ? POST : r(390) , v e[r(411)](h, t[url], f, u, m) , y localStorage[r(395)](r(383)) || , g y || f; t[r(408)][token] y || , (t[r(404)] || t[r(397)][r(398)](/himalaya-ApiService-UA2)) (g f, t[r(408)][token] ); var b e[a_h](g, v) , k b[r(379)]();这里主要说一下生成b的方法e[a_h],进入之后发现是wasm加载的方法,感兴趣的话可以自己去抠一下wasm,我扣完代码发现这里其实是使用的标准的HmacSHA1算法,其实从请求头中也可以大概猜出来,扣完之后,动态传参就可以拿到数据了3.逆向结果