Js逆向
JavaScript reverse engineering and so on
全国建筑市场监管公共服务平台逆向记录
打开 https://jzsc.mohurd.gov.cn/data/company 切换分页得到接口 https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list?pg=1&pgsz=15&total=450 返回的响应式是加密的数据 尝试全局搜索aes.decrypt有结果看到d.a.aes.decrypt很像应该是我需要的,点进去。 打断点刷新页面,鼠标移到d.a上面可以看到明显的cryptojs库特征。 把function b(t)函数扣下来,发现需要f等字段。把函数上方的变量声明也扣下来。 还需要解决n的值,在n相关代码位置打断点刷新,上点击跟踪js跳转到定义处,实际得到function s(e) n(u) 的结构在webpack中n是加载器,u是模块(知识点,需要记忆)。 Function s(e)所在的整个加载器function t()扣下来,模块先为空。 外部想要调用加载器的s(e),需要先导出,在加载器代码的结尾处赋给global: global.myn=n。 然后n(xxx)就都可以改成myn(xxx). n.n(xxx)也改为myn(xxx); 这个知识需要消化 本地js代码顶部导入cryptojs,将d.a替换为cryptojs。 运行会报错 throw new Error(‘Malformed UTF-8 data’); 对应代码是: a.toString(cryptojs.enc.Utf8); 经过测试发现是f的值不对,里面word第一个值和控制台打印出来不一样。 这块找不到线索。 好在每次生成的f值是固定的,那就把f固定,代码要这么写: 再次运行,成功。 这次需要总结这几个知识点:1.webpack中n(u)结构,n是加载器,u是模块,加载器所在的整个function扣下来,模块置空,需要的时候补充2.导出加载器函数。第一种方式先定义一个变量,加载器结尾代码把需要的函数赋值给这个变量(可以是一个函数一个变量,或多个函数存到一个的数组变量)第二种是加载器结尾代码,直接将函数赋值给global。例如: global.myn=n3.手动转换wordarray需要这么写:
一次库课网校的逆向实践
打开首页 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
一次新东方网站的简单逆向
打开网站 https://liuxue.xdf.cn/,在请求面板中找到一个带签名的数据接口 https://dsapi.xdf.cn/xas/v1/list?appId=5092&t=1743995182000