rs-reverse/README.md
2023-12-13 15:00:39 +08:00

72 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

这个项目是瑞数加密的逆向研究,代码开发基于网站链接:`http://wcjs.sbj.cnipa.gov.cn/sgtmi`
研究包括动态代码生成原理及动态cookie生成原理。
**点赞是我坚持的动力,希望该研究也能给一样好奇瑞数原理的人答疑解惑。**
## 1. 博客文章
1. [瑞数vmp-动态代码生成原理](https://howduudu.tech/#/blog/article/1701276778000)
2. [补环境-document.all的c++方案](https://howduudu.tech/#/blog/article/1702313578000)
## 2. 瑞数算法还原
### 2.1. makecode子命令
执行子命令`makecode`生成动态代码, 可以传入包含`$_ts.nsd``$_ts.cd`的文本文件或者直接给url让程序自己去拿。
如运行:`node main.js makecode -u http://wcjs.sbj.cnipa.gov.cn/sgtmi`,后生成三个文件:
1. 动态代码文件`output/dynamic-code.js`
2. `$_ts`文件`output/input_ts.json``output/output_ts.json`
```console
$ node main.js makecode -h
main.js makecode
生成动态代码
Options:
-h 显示帮助信息 [boolean]
-f, --file 含有nsd, cd值的json文件 [string]
-u, --url 瑞数返回204状态码的请求地址 [string]
-v, --version 显示版本号 [boolean]
Examples:
main.js makecode -f example/codes/1-$_ts.json
main.js makecode -u http://url/path
```
调用示例:
```bash
$ node main.js makecode -u http://wcjs.sbj.cnipa.gov.cn/sgtmi
文件写入成功:./rsvmp/output/dynamic-code.js
文件写入成功:./rsvmp/output/output_ts.json
文件写入成功:./rsvmp/output/input_ts.json
```
### 2.2. makecookie子命令
执行子命令`makecookie`生成cookie。
进行中...
## 3. 手动获取动态代码和$_ts的方法
目录`example/codes/`下的文件为手动保存,用于验证代码功能,如运行:`npm run test`后会比对程序生成的动态代码与`$_ts`文件是否与相关静态文件文本内容一致。
当然也可以自己手动拿动态代码和$_ts以验证程序是否还有效可以通过控制台拿到相关文本
1. 在文件中`http://wcjs.sbj.cnipa.gov.cn/c5rxzYrjRT2h/cCdzB9ZjDFks.294cc83.js`找到代码`_$_q.call(_$gP, _$_y)`并打入断点(文件找不到可以通过其它两种方法定位);
2. 找到如第一条的js文件搜索`.call(`找到调用方法;
2. 通过代理cookie变动的方式打断点通过堆栈找到调用方法。
断点后复制相关文本:
1. 拿到动态代码:`copy(_$_y)`
2. 拿到`$_ts`: `console.log(JSON.stringify(window.$_ts))`,这里有点蒙,可以用`JSON.stringify(window.$_ts)`或者`copy(JSON.stringify(window.$_ts))`试试
*初始的`$_ts`可以在这个文件入口处打断点获取。*