JS逆向新技术--JSRPC

声明

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!!

介绍

JSRPC意思就是远程调用js代码,全称 Remote Procedure Call,是一种技术思想而非一种规范或协议。

优点:可以让我们直接调用浏览器环境下的js加密或解密函数,免去了扣加密逻辑的时间,和避免很多本地用node去执行js所出现的各种问题,比如说环境缺失等问题

缺点:必须开着浏览器

RPC 技术是非常复杂的,对于我们搞逆向的来说,不需要完全了解,只需要知道这项技术如何在逆向中应用就行了。

使用方法

这里我就推荐黑脸大佬的资源:https://github.com/jxhczhl/JsRpc#jsrpc-hliang

懒得看的大佬们,可以看下我的总结:

下载文件及资源:

1.首先下载编译好的文件,下载地址:https://github.com/jxhczhl/JsRpc/releases/tag/Windows

2.下载resouces/JsEnv.js(客户端注入的环境)

使用步骤

  1. 直接双击打开编译好的文件,开启服务。

  1. 注入JS,构建通信环境
    复制JsEnv.js代码到控制台

  1. 注入ws与方法

// 连接通信
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group={}&name={}");   group和name可以随便取名字
// 注册一个方法 第一个参数为方法名,
// 第二个参数为函数,resolve里面的值是想要的值(发送到服务器的)
// param是可传参参数,可以忽略
demo.regAction("{方法名}", function (resolve, param) {
  var res_v = ck();
  resolve(res_v);
})
  1. 访问接口,获得数据

接口:http://127.0.0.1:12080/go?group={}&name={}&action={方法名}&param={参数}

实战

网站:aHR0cDovL3NwaWRlci53YW5nbHVvemhlLmNvbS9jaGFsbGVuZ2UvNg=

上面说到rjspc技术可以避免环境缺少问题。这一道题就是检测环境的。

通过进行抓包分析发现cookie参数v是加密的。

对Cookie进行hook。在控制台输入hook代码,刷新网页。

进入断点,跟栈分析。ct.update就是加密函数。找到加密函数那接下来就进入使用步骤。

1.开启服务

2.注入JS,构建通信环境(注意有时要放开断点)

4.访问接口,获得数据

可以看到参数已经从服务器返回。直接通过requests可以发起get请求获取数据。

注意点:浏览器和程序要保持长通信,不要刷新代码注入的网页,控制台可以关,但是注入的网页不可以关。

接下来我们完成这一道题。

总结

这道题是检测环境,但我们完全没有扣代码和补环境,直接调用接口就得到了加密参数。这正是JSRPC的好用之处,但该扣的还是得扣,该补的还是得补,这个技术只是为了方便我们在逆向不出来的时候用,还是推荐使用逆向方法增加自己的实力。目前如果不去逆向JS来实现加密参数的话,用得最多的就是自动化工具了,比如 Selenium、Puppeteer 等,很显然这些自动化工具配置繁琐、运行效率极低,而RPC技术不需要加载多余的资源,稳定性和效率明显都更高,RPC不需要考虑浏览器指纹、各种环境,如果风控不严的话,高并发也是能够轻松实现的,相反,由于RPC是一直挂载在同一个浏览器上的,所以针对风控较严格的站点,比如检测 UA、IP 与加密参数绑定之类的,那么RPC 调用太频繁就不太行了。总之 RPC 技术还是非常牛的,除了JS逆向,且没有针对RPC进行检测的话,可以说是目前比较万能、高效的方法了,一定程度上真正做到了加密参数一把梭!!

各位大佬觉得本文写的不错的话,可以一键四连哦。

### 小红书 JavaScript 逆向工程 x-s 签名生成代码实现 为了理解如何通过JavaScript逆向工程技术生成小红书平台所需的`x-s`签名,可以从已有的资料中获取一些线索。具体来说,在处理这类问题时通常涉及以下几个方面: #### 获取源码与环境模拟 对于像小红书这样的应用,其前端请求往往包含了多种加密或混淆过的参数,其中就包括了`X-S`这一重要字段[^2]。要成功解析并模仿这些操作,则需要先捕获实际运行中的JavaScript文件——例如提到的`cb0dcfde4b4748b6c333e0383316910bfd13cfbb.js`,并通过构建相似执行上下文的方式来重现目标函数的行为。 #### 关键算法定位 一旦拥有了完整的脚本资源后,下一步就是识别出负责创建`X-S`值的具体逻辑位置。这可能涉及到对整个项目结构的理解以及利用调试工具逐步跟踪变量变化直至找到最终赋值语句为止。值得注意的是,由于此类过程高度依赖于特定版本的应用程序内部细节,因此任何细微改动都可能导致原有方法失效。 #### Python辅助下的逆向分析实践 考虑到手动完成上述任务存在较大难度,借助编程语言如Python可以帮助简化流程。下面给出了一段基于已有信息推测而来的伪代码片段作为参考,展示了怎样使用PyExecJS库加载远程下载下来的js文件,并调用其中公开的方法计算所需的结果: ```python import execjs # 加载本地保存好的 js 文件内容 with open('path_to_js_file/cb0dcfde4b4748b6c333e0383316910bfd13cfbb.js', 'r') as f: ctx = execjs.compile(f.read()) # 调用指定名称的 JS 函数, 并传入必要的参数列表 result = ctx.call('_genXSValueFunctionNameHere_', param1, param2) print(result) ``` 这段代码假设读者已经找到了正确的函数入口及其对应的输入参数形式;实际上这个查找的过程可能会非常复杂且耗时较长。此外还需注意不同时间点上发布的客户端之间可能存在差异,所以建议定期更新所使用的样本以保持兼容性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值