因为在一开始用一个返利的软件,但是有时候需要抢一些东西.所以就想研究一下,看看能不能写个程序出来,所以就开始了研究之路.

一.分析

首先这个应用是通过微信里面打开的,通过微信进行登录的. 所以首先第一步,要能获取到请求的链接和返回的数据.

image

因为在微信里面打开链接是无法打开控制台和开发者模式的. 所以,我使用浏览器来模拟微信浏览器环境,然后进入控制台查看请求信息.

image

首先将浏览器转换成移动端模式,然后修改一下模拟设备,改成微信的设备信息

image

将设备信息更改成Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V) > AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 > Chrome/37.0.0.0 Mobile Safari/537.36 > MicroMessenger/6.0.2.56_r958800.520 NetType/WIFI​

image

然后保存,选择微信设备,刷新页面,就可以看到正常请求了.

image

二. 找到关键请求信息

在控制台的网络界面,找到获取列表的请求,首先看到关键的请求有这些,然后根据请求的路径可以大致看出来应该就是api_overbear_business_take_away_index_list​这个是获取列表数据的请求.

image

然后我们看一下这个的请求响应数据,可以看到data数据是被加密了(这样的话就不是太明显了),这样就不能确定到底是不是这个获取的数据,所以也大概看一下别的请求都是什么.

image

可以看到,对于别的请求来说,有的也是和这个一样的加密串,有的没有什么用处(可以直接排除了),那么问题的重点就是破解这个加密串

image

在破解之前,我们再看一下请求的参数都是什么. 可以看到请求的参数也都是进行加密过的. 所以重点就是加密的过程.

image

三.破解加密

我们首先根据请求的地方找到发起请求的js, 就是这个index的js,然后我们进入这个js, 可以看到这个js非常的长,东西很多

image

image

好在,我们可以从上面请求直接点进来,就可以直接定位到请求发起的方法上面, 就是这个方法. 通过这个发起的请求

image

然后分析一下这个返回的解析过程,主要是根据code进行判断的. 所以将我们一开始返回的code是1 所以应该是下面的方法

image

image

然后我们看到基本上是这个decrypt$1​进行解密的方法.为了验证我们可以在这块打一个断点试一下. 我们可以看到这个确定是解密的方法,传入加密的字符串,然后就可以解密出list数组了

image

然后全局搜索一下这个decrypt$1​可以找到这个解密的方法了. 所以我们可以断定是通过CryptoJS 进行加密和解密的.

image

然后我们将这个方法单独提取出来,做个测试,看看能不能进行解密, 写了一个测试页面

image

可以看到我们吧加密串输入进去,然后进行解密直接解密出来了.

image

四.发送请求

我们研究好了请求返回的数据,后期我们可以根据这个进行解析数据,但是我们还需要研究一下发送请求的参数是怎么样的.然后我们才能写个脚本,通过脚本去跑数据.

我们可以看到这个请求参数也是经过加密的,所以还需要研究一下这个请求参数的加密过程.

image

我们找到这个请求的发起过程的开始,可以看到是这个一整串的内容,然后下一步就需要分析了

image

通过断点,我们可以看到c的参数,里面包含了body,headers,method,mode,然后bod就是加密的.

image

然后我们接着再向上找,发现c是在这块进行组装的,但是这快没有body,所以得需要找一下body

image

在下面我们可以看到这个body,是根据请求路径的不同,body的方式也不同,因为我们上面的就是json参数,所以属于第三个if.然后直接就可以看到使用了postForm$1​方法加密了i这个参数

imageimage

image

然后我们就可以根据这个方法名找到这个加密的方法了

image

五.总结

由此我们可以发现,他的这个加密和解密的t都是一样的,所以我们试想一下,是不是可以用解密的方法来解密参数呢?

我们可以把加密后的参数复制出来试一下,结果还真的是可以的.那么这个参数和请求结果都有的,下面的就可以去写个脚本去跑数据了

image

注: 本文章只用于测试学习,没有任何违法行为,如有侵权去,请及时联系博主进行删除!