爱游戏全站app官网入口-爱游戏官网

js逆向实战20——某头条jsvm逆向 -爱游戏全站app官网入口

2023-09-06,,

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标网站:ahr0chm6ly93d3cudg91dglhby5jb20v

数据接口:ahr0chm6ly93d3cudg91dglhby5jb20vyxbpl3bjl2xpc3qvzmvlzd9vzmzzzxq9mczjagfubmvsx2lkptk0mzq5ntq5mzk1jm1hef9izwhvdf90aw1lptamy2f0zwdvcnk9cgnfchjvzmlszv9jagfubmvsjmrpc2fibgvfcmf3x2rhdge9dhj1zszhawq9mjqmyxbwx25hbwu9dg91dglhb193zwi=

这个网站的的数据包有点多,为了更好的筛选,所以我们这里使用charles去抓包,也为了更加清楚的展示。因为charles的包 是分网站的

抓到了如下的包,我们挨个看下 首先我们看看第一个请求

果然是这个数据包,

然后我们看看这个的请求参数 如下图所示

可以看到除了 | channel_id | _signature 除了这两个参数,其他值好像都是定值。

为了确保玩意,我们再抓包一次。

哦吼,我们对比一下 发现好像只有 _signature 不太一样。

第一次:

| channel_id | 94349549395 |
| _signature | _02b4z6wo00f01z9d1bwaaidcyii.ikukhqm.edeaakt.nqumn4ygaiosxwakaigcoeg56ff89u.9vp6b6ub68vuks2n8mhe1ooq3yqayt9lukweo58z5cbtbu8m9.kvq5ziywt7.zvqbympff7 |

第二次

| channel_id | 94349549395 |
| _signature | _02b4z6wo00f01npipegaaidblx1pdbeq8ljarqfaafjaobbdigxrf3fs2skprzr3jjy4vzp3kg7vb7l1w4c5lnkjnonz-driqsx4s8hbvv4x8o4bjxjqi6byxnsx9cglbfcqe.nfmtpz8dz57e |

这个值每次都不一样,所以我们可以大胆猜测 这个值就是我们所需要的值。

我们直接开始去搜索 _signature 这个值

刚好发现第一个地点 就很像参数生成的地方,我们在这里打上断点。然后再搜索一下_signature 这个值

这里还有个值,我们也打上断点。

发现这个值虽然对了 ,但是好像传的参数不是我们所要的那个链接啊

我们继续往下走,跳过非我们所需的接口 也就是看看 f.geturi(e) 这个值。

在跳过三个请求后 终于找到我们所需要的这个接口了

我们接下里就逐步进栈。然后一直追。这个时候要有些耐心。

在经过几层跳站,终于找到了 参数生成的地点,这个a.call(n, o) 就是生成签名的地方。

我们可以看到 这个o 是个对象,里面是存放的url键值对。

而这个n 应该就是函数,我们把这个n抠出来,应该就大功告成了。

接上一段。

我们打上断点再逐步进栈。

然后发现进到了acrawler.js 这个文件里面。我们简单过一下这个文件。发现这是个自执行函数啊。那我们直接全部复制下来补环境是不是就ok了。

我们试一试哈。

这里复制下来。会发现后面执行的参数很长,很影响观感。pycharm 设置一下js换行。

如上图设置即可。

我们在下面执行这句话。为什么是这句话呢。我们跳到外面这个栈去看看

window.byted_acrawler.sign({
"url":"http://localhost:8080"
})

然后运行。这个时候会报错

这个时候就奇怪了。这个地方怎么会报错呢。我们打印一下282行这个值看看。

分别打印下 s[r] r a 你就全懂了。尤其是是打印 a 这不就是妥妥的环境检测吗

我们给他补上

window = global;
window.document = {
referrer: ''
}

然后我们再次运行,发现还是不行 会报找不到sign这个值

那这就奇怪了,我们放到浏览器环境上运行下看看

发现在浏览器上流程运行,那就只有一种可能了,就是环境没补好。有些环境检测过不去。

我们把断点打在这个地方,这就是底下传参的地方

经过不断的 debugger 测试,将下图的两句话 改成 undefined

改好之后还会报一个错 ,我们再补上

由于这个href里面东西也不是很多,我们就全补上了

window.location = {
"ancestororigins": {},
"href": "https://www.toutiao.com/?wid=1688368231201",
"origin": "https://www.toutiao.com",
"protocol": "https:",
"host": "www.toutiao.com",
"hostname": "www.toutiao.com",
"port": "",
"pathname": "/",
"search": "?wid=1688368231201",
"hash": ""
}

然后还会报一个 useragent的错误

我们继续补上

navigator = {
"useragent": 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/114.0.0.0 safari/537.36 edg/114.0.1823.67'
}

然后就扣代码扣成功了。

这个值好短啊。我们对比一下

_02b4z6wo00f01vfjpbwaaidbcbxaq1vn84b3waeaanlo3f
_02b4z6wo00f01z9d1bwaaidcyii.ikukhqm.edeaakt.nqumn4ygaiosxwakaigcoeg56ff89u.9vp6b6ub68vuks2n8mhe1ooq3yqayt9lukweo58z5cbtbu8m9.kvq5ziywt7.zvqbympff7

足足长了一大截。

我们再挨个进断点看看。在如图的位置打上断点。挨个追栈查看。

后面发现在之前获取浏览器环境中发现,在出_signature之前,获取过一次cookie

所以我们还需要加上cookie 直接写死即可

document.cookie = 'mstoken=yt_cakc4j1yowgmxbb2jtttvxroozg34lny5cf7g7_jsz377ge4xfhp07hzpujoaohevch4egs8rxblhnvydeizruwfzzd7gnpayfzsnwya=; __ac_signature=_02b4z6wo00f017ckgvwaaidcqnxwy7zfvko3lh5aailpcknviv2dvvvh6x4q.qt77mgqzraif9hmrcihwwafpkykg89jhy8hzzwesxocl0ugv6qsblqywa5ptcrdbddylncegfmxuims3ocrf6; local_city_cache=苏州; csrftoken=a08a7c6e066f7118fe2f379bb779e6f5; _ga_qehzpbe5hh=gs1.1.1688368982.1.0.1688368982.0.0.0; _ga=ga1.1.1087552243.1688368983; s_v_web_id=verify_ljmjastc_1g6mv2zq_y8pe_4qln_8mk4_sm1m5ze46fyx; tt_scid=f-2key1r0ronaee9xhlvyzzulietyppb9gsm9ul-tamwfndlcgdmdvipv9tgci1rf76e'

然后就能运行成功了

然后我们封装一下 顺便替换一下某些值。

部分代码如下图

完成!!

js实战20——某jsvm逆向的相关教程结束。

网站地图