同城头条  >  技术分享  >  [Web逆向] Js 逆向之补环境到底是在补什么?
[Web逆向] Js 逆向之补环境到底是在补什么?
2021年09月20日 06:29   浏览:0   来源:小报道

虽然当时的主题写的是 App 爬虫,不过并不妨碍的我们理解爬虫。

今天写的 Js 逆向之补环境,就可以理解是在 Js 环境下精进我们的 " 骗术 "

正文

大家在看文章之前应该都清楚,Node 环境和浏览器环境是完全不同的,平台有很多的检测点可以发现我们是在浏览器运行 Js 还是在 Node 环境下运行 Js

补环境做的就是尽可能根据网页上的 Js 完善本地的 Node 环境,让 Js 运行在 Node 中像浏览器一样不报错就可以了。

window

最基本的补环境是早期的文章,大家经常遇到的是

 复制代码 隐藏代码
'window' is not defined

那像这样的报错提示应该如何处理?

Node 环境下一般如下定义

 复制代码 隐藏代码
window = global;

如果只是单单缺少了window这一个变量的定义,像上面这样报错自然就消失了。

document

除了window之外,我们经常还遇到类似下面这些文章中的情况

https://www.52pojie.cn/thread-1513028-1-1.html

这些网站我们一般称之为加速乐,因为标志性的 cookie 参数是以jsl开头,而这种类型的加密一般操纵的是document.cookie这个参数

那像这样的document应该怎么补?

在没有检测只是为了能让 js 运行不报错的情况下,我是这样写的

 复制代码 隐藏代码
var document = {     cookie:"xxxxxx"}

或者像下面这样写

那么这样写就一定保险吗?

不一定。开头就已经提及,要根据网页上的 Js 完善本地的 Node 环境,所以只要网页上的 Js 不检测我们这么写也没毛病

那么检测的 Js 长什么样?

Object.getOwnPropertyDescriptor

这里可以参考之前写的关于某乎的分析文章

https://www.52pojie.cn/thread-1495847-1-1.html

这里Header中的x-zse-96的加密逻辑之前看过文章的,通过插桩调试应该可以看到下面这样的代码

这个东西是个啥?

官方定义是这样的

Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)

通过描述有点晦涩,你可以这样理解,如果是自己构造的对象,例如

 复制代码 隐藏代码
var navigator = {     platform:"win32"}

就没办法通过这样的检测

这里是检测对象的属性是不是自己赋值给他的

这里打印下刚刚的例子看看有啥不一样的地方

先是我们自己写的例子

 复制代码 隐藏代码
var navigator1 = {     platform:"win32"}

再看看浏览器里面是啥样的

所以对于这样的代码检测,我们应该如何构造呢?

这里站在前人的肩膀上,写一下

 复制代码 隐藏代码
var Navigator = function() {}; Navigator.prototype = {   "platform": "win32"}; navigator = new Navigator();# 只针对检测 Navigator 原型链的写法

这样就可以通过上面的原型链检测了

这里的platformNavigator上的属性,在使用 new 实例化后,navigator.platform 取到的是继承自Navigator的属性值,而不是直接赋予该对象的属性,所以得到的结果和浏览器是一样的。

这样看是不是很简单,但是像某乎的校验用到了很多次getOwnPropertyDescriptor,就需要一个个插桩调试他检测了什么对象的什么属性,相当恶心。

那么又回到上面的代码,这里用到的prototype又是个啥?

为什么像上面那样用到prototype去定义对象就可以通过的检测?

prototype 与 proto

首先先上一张图

是不是很懵逼,懵逼就对了,我们是搞爬虫的,知道个大概意思就行了。

我们需要知道的是 prototype 与 proto 咋对应起来就行了

按照官方的说法

在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。
即:对象具有属性 proto ,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

方法(Function)这个特殊的对象,除了和其他对象一样有上述_proto_属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

理解大概的意思(别被搞晕了)可以得出下面这行代码

 复制代码 隐藏代码
xxx.__proto__ == yyy.prototype

这里我们需要用到谷歌浏览器验证一下我们的想法

有一定基础的同学知道,浏览器里 window 是由 Window 实例而来的,那么 Window 是怎么来的?

我们在浏览器的控制台里看看

可以看到原来我们之前以为简简单单就构造出来的 window 和 navigator 这么复杂

这样一看像我们上面直接使用var定义的方法去补环境就很容易被识别

例如

 复制代码 隐藏代码
var window1 = {     bbb:"xxxx"};# 在浏览器里没法定义 window 这里用 window1 做个样子

这里window1的结果和我们上面浏览器中window的输出结果大相径庭。

不仅仅是window,包括document以及navigator等等囊括DOMBOMworker、网络请求这些的方方面面都需要我们一个一个分析他的__proto__以及属性是定义在自己的prototype上还是继承自上一层。

这里就又涉及了关于上述各类的继承关系,这里分享我找到的一张DOM中各类的继承关系图,希望对大家补环境有所帮助

总结

这篇文章我的定义并不是关于补环境的总纲或者是总述,只能说是掀起了补环境神秘面纱的一角,希望大家多多交流,不断完善自己的环境框架,做到一键通杀~

还有就是关于文章中如果描述不准确的地方,欢迎在留言区指正,大家共同进步。

以上就是本次的全部内容了,咱们下次再会~

Peace and Love


头条号
小报道
介绍
报道大小信息,宣传正能量!
推荐头条
Keywords" 仪陇网、仪陇生活网、专注仪陇本地信息真实传递_仪陇网d-sj.cn/学法减分好助理答题神器一扫就出答案、学法减分好助理扫一扫知道答案app、学法减分好助理考试题库、学法减分好助理20道题模拟考试、学法减分好助理可以减多少分?、学法减分好助理拍照搜题 秒出答案免费、学法减分好助理拍照搜题、学法减分好助理拍照搜题 秒出答案、学法减分好助理可以申请几次?、学法减分好助理题库最新版、仪陇生活网、仪陇生活网招聘、仪陇招聘驾驶员、仪陇新政有哪些厂还在招工、仪陇人才网、仪陇在线、仪陇新政最新急招聘58同城、仪陇新政哪有做兼职的、仪陇县招聘信息最新招聘仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网二手房、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网住房出租最新消息、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇人才招聘信息生活网、仪陇生活网、仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网住房出租最新消息、仪陇生活网最新招聘暑假工、四川仪陇生活网、仪陇手机生活网、仪陇招聘网最新招聘信息、仪陇招聘驾驶员、仪陇县租房信息、仪陇新政招聘网最新招聘、仪陇找工作、仪陇最新招聘、仪陇生活网招聘、仪陇人才网、仪陇招聘信息招聘仪陇招聘信息信息、仪陇招聘c1驾照、仪陇房价、四川仪陇县房价多少钱一平方米、仪陇县房价现在是多少、仪陇房产网、仪陇新政房价多少钱一平米、仪陇新政房价、仪陇房价为什么这么高、仪陇房价多少钱一平方、仪陇房价如何走、仪陇房价为什么这么高2019、仪陇新闻网、仪陇新闻网头条、仪陇新闻最新消息今天、仪陇新闻网今日新闻、仪陇新闻直播、仪陇新闻网丁强、仪陇新闻网直播视频、仪陇新闻视频、仪陇新闻综合频道直播、仪陇广告公司、仪陇广告语、仪陇金山广告、仪陇驾校、仪陇驾校报名费用、仪陇驾校C1多少费用、仪陇驾校88队哪个教练好、仪陇驾校在什么地方、仪陇驾校科目一考试、仪陇驾校学费、仪陇驾校科一早上笫一堂几点、仪陇驾校蒲、仪陇坤安驾校、仪陇工厂招聘、仪陇工厂有拿回家干的活吗?、仪陇新政工厂招聘、仪陇新政招聘信息工厂、仪陇家电维修、仪陇家电回收、仪陇家电清洗、仪陇电脑维修哪家好、仪陇电脑城在哪里、仪陇电脑销售在什么地方、仪陇电脑回收、仪陇电脑培训、仪陇电脑商家、壹家电脑维修、仪陇二手家具市场、仪陇家具城、仪陇家具厂、仪陇家具维修师傅、仪陇家具定制、仪陇家具厂网上程、仪陇家具市场、仪陇家具城在哪里、仪陇二手家具回收、南充仪陇二手家具市场、四川仪陇房产信息网、仪陇马鞍房价、广西桂林房价、仪陇一中录取分数线2021、仪陇翰林锦府、仪陇金城二手房的房价、仪陇房价为什么这么高、仪陇新政租房最新消息、仪陇县金城镇房价下跌、仪陇县招聘信息最新招聘、仪陇房产网、仪陇河西工业区招聘、仪陇门面出租、四川仪陇黑老大周超、仪陇县金城镇二手房最新消息、仪陇新政本地招聘启事、四川仪陇新镇最新招聘、仪陇县找工作生活网、如何自学电脑维修、娄星区关家垴附近电脑维修、恒达行家维修培训怎么样、珠海唐家电脑维修、台式机维修去哪家好、笔记本维修哪家好、仪陇电脑维修哪家好、电脑维修公司哪家好、秀洲区电脑维修哪家好、仪陇新政本地招聘启事、仪陇县金城镇二手房最新消息、仪陇招聘网最新招聘信息、仪陇新政有哪些厂还在招工、仪陇县河西工业区招工、南部人才网、四川仪陇黑老大周超、仪陇新政哪有做兼职的、四川仪陇新镇最新招聘、长津湖电影、长津湖电影时间多长、长津湖电影完整版免费观看、长津湖电影观后感、长津湖电影完整版免费观看HD、长津湖电影完整版免费观看2021、长津湖电影完整版免费观看网站、长津湖电影观后感500字、长津湖电影票多少钱一张、长津湖电影票购买、长津湖成影史历史片票房冠军、长津湖电影完整版免费观看、长津湖3个冰雕连仅2人生还、长津湖战役、长津湖2021免费完整版观看、长津湖票房破30亿、长津湖作文、长津湖观后感、长津湖手抄报、长津湖观后感10篇、刷手机下拉示选上海百首网络、刷手机下拉述约上海百首网络、刷手机下拉安选上海百首网络、刷手机下拉尚选上海百首网络、刷手机下拉安信上海百首网络、苹果手机下拉菜单、华为手机不能下拉、手机下拉功能在哪里设置、手机下拉设置在哪里设置、手机不能下拉通知栏、仪陇天气、仪陇房产网新楼盘、仪陇县楼盘房价最新消息、仪陇县、仪陇天气预报15天、仪陇县房价、仪陇招聘网最新招聘信息、仪陇属于四川哪个市、仪陇县金城镇、仪陇网、仪陇房产网新楼盘、仪陇县招聘网、仪陇网上在逃人员、仪陇网吧多久开业、仪陇网约车平台、仪陇网红地、仪陇网吧、仪陇网吧开门了吗、仪陇网络电视台、仪陇生活网、仪陇生活网招聘、仪陇生活网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇手机生活网、仪陇人才招聘信息生活网、仪陇丁家大院、仪陇森家环保、仪陇县房价、仪陇二手房、仪陇二手房出售信息、仪陇房产查询系统、仪陇房子出售、仪陇房子能不能买、仪陇房子贵、仪陇房子还会拆迁、仪陇房子出租、仪陇首座房子好不好、仪陇房产网新楼盘、仪陇房产网、仪陇房产备案查询、仪陇房产信息网、仪陇房产查询系统、仪陇房产管理局官网、仪陇房产交易网、仪陇房产价格、仪陇房产中介、仪陇房产局、仪陇河西工业区有些什么厂、仪陇县河西工业区招工、仪陇河西工业园2020招聘、仪陇河西电子厂招聘信息、仪陇河西招聘驾驶员、仪陇河西大华宝公学、仪陇河西工业区有哪些制衣厂、仪陇河西工业园、仪陇河西工业区电子厂、仪陇河西工业区灯泡厂、薇仪陇之家、薇仪陇生活网新政房价、仪陇新政房价、仪陇新政二手房出售、仪陇新政楼盘、仪陇在线、仪陇生活网、仪陇生活网是大家了解仪陇的资讯窗口,同时也是仪陇人的网上家园,为大家提供免费查询发布仪陇便民生活信息,是仪陇地区综合信息门户网站!

Copyright ©2021 仪陇家园同城网--版权所有   蜀ICP备2022002889号-1