JS逆向教程第一发

项目简介

  • 本文适合爬虫新手初步接触js逆向时进行阅读,初步接触JS逆向,并不是很熟悉逆向操作的,可以以本文为参考,初步入门,如果有大佬,也欢迎批评指正
  • 本文以企名科技这个网站为例,初步介绍JS逆向的基本操作

环境准备

  • 此次项目涉及到JS的调试验证,所以需要有Chrome浏览器,Nodejs(js的运行环境),WebStorm(IDE)
  • nodejs直接在官网下载安装即可,安装完毕之后输入node --version,出现版本号即为安装成功。
  • WebStorm安装后需要激活,百度激活教程非常多,大家自行搜索,如果需要,也可以评论或者私信我来获取教程。

分析过程

首先,进入网站https://www.qimingpian.cn/finosda/project/pinvestment:

windows java程序逆向 javascript 逆向_数据

查看源代码:

windows java程序逆向 javascript 逆向_数据_02

发现全部都是js文件调用,直接通过源代码是无法获取到数据的。打开开发者工具,进行抓包,选择Fetch/XHR和文档,来查看网站发送的请求:

windows java程序逆向 javascript 逆向_javascript_03

可以看到存在productListVip和industryFiledVip两个文件,盲猜第一个文件是页面的标签列表,第二个文件为页面的公司数据*-.-*,点开第一个文件发现存在数据encrypt_data,但是是经过加密过的数据,所以需要对js文件进行分析:

windows java程序逆向 javascript 逆向_爬虫_04

首先,我们可以盲猜该数据就是我们需要得到的数据,那么我们就可以奔着对该数据进行解密的目的去进行js调试,

首先,既然js文件中存在对该数据加密的代码,那么必然存在对该数据进行解密的代码,因为最后要显示再html上嘛,如果没有解密,又是如何进行显示的呢?

所以,我们可以再source面板中找到页面使用的js代码文件:

windows java程序逆向 javascript 逆向_javascript_05

选择我们需要调试的js文件,根据之前的页面源代码查看,我们可以首先选择app.c68…这个js文件进行调试,源代码页面右边有“XHR/提取断点”,其作用就是在页面进行请求数据时,对其进行拦断。如果代码堆叠在一行,可以点击代码页面左下角的{}符号进行格式化。

我们设置XHR断点:

windows java程序逆向 javascript 逆向_爬虫_06

当请求数据网址中包含industryFiledVip时即为截断,刷新页面,可以发现调试已经开始:

windows java程序逆向 javascript 逆向_爬虫_07

我们可以一直往下执行,如果发现可疑的代码,可以将鼠标放到该变量上面可以查看该变量的值:

windows java程序逆向 javascript 逆向_windows java程序逆向_08

也可以直接在控制台输出该变量的值:

windows java程序逆向 javascript 逆向_windows java程序逆向_09

此时,我们经过调试,可以定位到下图中的语句存在可疑的数据:

windows java程序逆向 javascript 逆向_爬虫_10

输出该参数,查看数据:

windows java程序逆向 javascript 逆向_开发语言_11

可以发现,该数据似乎就是我们所需要的industryFiledVip文件中的encrypt_data参数,此时我们的目标就很明确了,就是去找对该参数进行解密的函数。

此时进行函数调用执行,查看该语句中调用的函数:

windows java程序逆向 javascript 逆向_爬虫_12

此时我们可以看见存在一个s(e)函数,其中存在对json进行解析的代码,这时我们在控制台输出这个s(e)函数执行的结果:

windows java程序逆向 javascript 逆向_javascript_13

此时,我们可以清晰的看见,这个函数的返回值就是我们想要的数据,即之前的加密数据进行解密后的结果,所以这个函数内部的o()函数的作用一定是对加密数据进行解密,而且其中的参数只有一个是经过函数执行的结果,其余都是写死的。

这时我们打开WebStorm,新建一个js文件,将涉及到的函数全部复制到js文件中:

windows java程序逆向 javascript 逆向_windows java程序逆向_14

windows java程序逆向 javascript 逆向_windows java程序逆向_15

windows java程序逆向 javascript 逆向_javascript_16

windows java程序逆向 javascript 逆向_windows java程序逆向_17

最后将entry_data带入到函数中进行执行运算,即可得到自己想要的数据,可继续进行下一步操作:

windows java程序逆向 javascript 逆向_windows java程序逆向_18

至此,本次较为简单的js逆向即为结束,欢迎大家进行批评指正。(*.*)