一次库课网校的逆向实践

打开首页 https://www.kuke99.com/ 找到一个加密接口: https://www.kuke99.com/prod-api/kukemarketing/pc/pageMaster/getAssemblyForWx 请求方式为post,请求头内容: 请求参数内容: 请求头里cookie和kk-request-id, 请求参数中的sign 应该需要逆向。 先来解决相对复杂点的sign。 全局搜索 sign:,找到sign:c 打断点得到此时的sign为d1761548b0f5a3c3f1761cf83eb2a399,先记录下来用于后面对比。 新建一个js文件,往上看到 c = E3(l).toLowerCase();复制过来。 鼠标移到l上得到他的值,直接定义l=”assemblyType=24&pageMasterId=968065585896714242&appId=c9379359685&appKey=awo6ureum8bn&time=1744079465″ 其中time的值是动态的时间戳,这里先用此时的值,以方便后面对比sign生成是否正确。 跳转到E3的代码位置,发现他是function C3(e) {}里的T2.exports; 把function C3 和 var S3 = T2.exports; const E3 = Pi(S3);复制过来; 找到T2的代码复制过来: 找到T2的定义代码,复制过来: 找到函数Pi()复制过来: 开始测试运行,提示x3未定义。 跟踪到var x3 = I2.exports 把I2和相关代码复制过来 var x3最好放到C3方法上面声明; 再次运行提示Mm未定义。跟踪找到Mm=yf 将yf相关代码复制过来; 继续运行 提示w3未定义 找到代码补过来再次运行,此时没有报错了; console.log(sign)打印下sign 得到结果为d1761548b0f5a3c3f1761cf83eb2a399 值和之前断点得到的sign一致; 接下来将变量l值里的时间戳改成动态获取。l中的assemblyType=24&pageMasterId=968065585896714242是json格式的bizContent字段转为url参数形式,扣原站js里的代码涉及函数比较多直接写一个函数实现这个转换: sign的逆向这就完成了。 完整代码如下: … Read more