当前位置:网站首页>JS逆向教程第一发
JS逆向教程第一发
2022-07-07 06:54:00 【学编程的小w】
JS逆向教程第一发
项目简介
- 本文适合爬虫新手初步接触js逆向时进行阅读,初步接触JS逆向,并不是很熟悉逆向操作的,可以以本文为参考,初步入门,如果有大佬,也欢迎批评指正
- 本文以企名科技这个网站为例,初步介绍JS逆向的基本操作
环境准备
- 此次项目涉及到JS的调试验证,所以需要有Chrome浏览器,Nodejs(js的运行环境),WebStorm(IDE)
- nodejs直接在官网下载安装即可,安装完毕之后输入node --version,出现版本号即为安装成功。
- WebStorm安装后需要激活,百度激活教程非常多,大家自行搜索,如果需要,也可以评论或者私信我来获取教程。
分析过程
首先,进入网站https://www.qimingpian.cn/finosda/project/pinvestment:
查看源代码:
发现全部都是js文件调用,直接通过源代码是无法获取到数据的。打开开发者工具,进行抓包,选择Fetch/XHR和文档,来查看网站发送的请求:
可以看到存在productListVip和industryFiledVip两个文件,盲猜第一个文件是页面的标签列表,第二个文件为页面的公司数据*-.-*,点开第一个文件发现存在数据encrypt_data,但是是经过加密过的数据,所以需要对js文件进行分析:
首先,我们可以盲猜该数据就是我们需要得到的数据,那么我们就可以奔着对该数据进行解密的目的去进行js调试,
首先,既然js文件中存在对该数据加密的代码,那么必然存在对该数据进行解密的代码,因为最后要显示再html上嘛,如果没有解密,又是如何进行显示的呢?
所以,我们可以再source面板中找到页面使用的js代码文件:
选择我们需要调试的js文件,根据之前的页面源代码查看,我们可以首先选择app.c68…这个js文件进行调试,源代码页面右边有“XHR/提取断点”,其作用就是在页面进行请求数据时,对其进行拦断。如果代码堆叠在一行,可以点击代码页面左下角的{}符号进行格式化。
我们设置XHR断点:
当请求数据网址中包含industryFiledVip时即为截断,刷新页面,可以发现调试已经开始:
我们可以一直往下执行,如果发现可疑的代码,可以将鼠标放到该变量上面可以查看该变量的值:
也可以直接在控制台输出该变量的值:
此时,我们经过调试,可以定位到下图中的语句存在可疑的数据:
输出该参数,查看数据:
可以发现,该数据似乎就是我们所需要的industryFiledVip文件中的encrypt_data参数,此时我们的目标就很明确了,就是去找对该参数进行解密的函数。
此时进行函数调用执行,查看该语句中调用的函数:
此时我们可以看见存在一个s(e)函数,其中存在对json进行解析的代码,这时我们在控制台输出这个s(e)函数执行的结果:
此时,我们可以清晰的看见,这个函数的返回值就是我们想要的数据,即之前的加密数据进行解密后的结果,所以这个函数内部的o()函数的作用一定是对加密数据进行解密,而且其中的参数只有一个是经过函数执行的结果,其余都是写死的。
这时我们打开WebStorm,新建一个js文件,将涉及到的函数全部复制到js文件中:
最后将entry_data带入到函数中进行执行运算,即可得到自己想要的数据,可继续进行下一步操作:
至此,本次较为简单的js逆向即为结束,欢迎大家进行批评指正。(*.*)
边栏推荐
- Postman interface test (I. installation and use)
- Entity of cesium data visualization (Part 1)
- Skill review of test engineer before interview
- 华为HCIP-DATACOM-Core_03day
- Jenkins task grouping
- DRF authentication, permissions, and flow restrictions (only for views in DRF)
- 【云原生】DevOps(一):DevOps介绍及Code工具使用
- esp8266使用TF卡并读写数据(基于arduino)
- Upload taro pictures to Base64
- 嵌套(多级)childrn路由,query参数,命名路由,replace属性,路由的props配置,路由的params参数
猜你喜欢
随机推荐
正则匹配以XXX开头的,XXX结束的
Mysql database transaction learning notes
JS inheritance prototype
Redis common commands
How to solve the problem of golang select mechanism and timeout
答案在哪里?action config/Interceptor/class/servlet
Regular matching starts with XXX and ends with XXX
Unity shader (basic concept)
进程和线程的区别
Mysql:select ... for update
Netease Cloud Wechat applet
Skill review of test engineer before interview
(3/8) method parameters of improper use of enumeration (2)
Jenkins task grouping
Unittest simple project
華為HCIP-DATACOM-Core_03day
Jemter operation
golang select机制和超时问题怎么解决
四、机器学习基础
shake数据库中怎么使用Mongo-shake实现MongoDB的双向同步啊?