声明:本文仅作研究分享,如有侵权,还请告知删除,谢谢。
搞过某号店登录的朋友都知道有个“window._t”变量,该变量如果不依靠工具来查找生成的位置,比较难,非常的难,掉的头发比较多。如果你能使用AST进行还原,则能很顺利的找到其加密位置,这里不讲怎么将混淆的代码还原。我们通过油猴插件+脚本的方式来定位,我们来看代码:
-
// ==UserScript==
-
// @name Hook global
-
// @namespace http://tampermonkey.net/
-
// @version 0.1
-
// @description try to take over the world!
-
// @author 悦来客栈的老板
-
// @include *
-
// @grant none
-
// @run-at document-start
-
// ==/UserScript==
-
-
-
(function() {
-
'use strict';
-
//全局变量 监控
-
var t = window._t
-
Object.defineProperty(window, '_t', {
-
get: function() {
-
console.log('Getting window._t');
-
return t;
-
},
-
set: function(val) {
-
console.log('Setting window._t', val);
-
debugger;
-
t = val;
-
}
-
})
-
})();
代码可以Hook到加密生成的地方,但是有个坑:
// @run-at document-start
这行代码的目的是脚本注入的时机。
参考油猴手册的解释:
油猴手册地址:
https://www.tampermonkey.net/documentation.php#_run_at
看不懂英文的我猜出来了它的大致意思:尽可能快的注入到js代码中,这样才能Hook,如果去掉这行代码,是无法拦截的,读者朋友们可以自行尝试。
下面介绍另外一种方式进行变量定位:reres插件,其github地址:
https://github.com/annnhan/ReRes
下载插件后安装到浏览器上面,如图:
安装好后,注意按照它的教程勾选允许访问文件地址:
我们现在来看看它到底怎么帮我们定位到变量的位置。
使用谷歌浏览器打开如下网址,并按下F12,打开开发者工具:
https://passport.yhd.com/passport/login_input.do
随便输入用户名和密码,点击登陆按钮,进行抓包。在查找 captchaToken 参数时,全局搜索,定位到了这里:
控制台分析得知:
j2[hr[b('0x361', 'XzVN')]('_', 't')]
这行代码就是 window._t:
可是它已经生成了,按照传统的方法去找加密的位置,得靠极大的耐心和运气。
3.我们将这个页面上的所有代码复制,一共4191行代码,并保存到电脑上,我这边保存到了E盘(Hook.js):
4.在文件末尾加入如下的JS代码,并保存:
-
(function() {
-
'use strict';
-
var t = window._t
-
Object.defineProperty(window, '_t', {
-
get: function() {
-
console.log('Getting window._t');
-
return t;
-
},
-
set: function(val) {
-
console.log('Setting window._t', val);
-
debugger;
-
t = val;
-
}
-
})
-
})();
这个就是上面油猴脚本里的代码,只不过不需要下面这些信息:
-
// ==UserScript==
-
// @name Hook global
-
// @namespace http://tampermonkey.net/
-
// @version 0.1
-
// @description try to take over the world!
-
// @author 悦来客栈的老板
-
// @include *
-
// @grant none
-
// @run-at document-start
-
// ==/UserScript==
4.单击reres插件按钮,再单击 添加规则:
5.按照它的规则,需要找到匹配的url:
这里JS的url地址是这个:
在箭头所指的位置单击右键,选择 Copy link address:
这样就将要匹配的url复制到了剪切板,将其复制到这里:
下面的 Response根据添加规则,
线上地址请以http://开头,本地地址以file:///开头,比如http://cssha.com或file:///D:/a.js
我这里在E盘,因此按照它的方式这样添加:
点击保存即可。
6.这个时候我们刷新 一号店 登陆的页面,发现停在了这里:
再观察堆栈,点击下一行:
一下子就找到了它生成的位置,是不是非常的快.
直接本地修改JS代码,那是不是可以*******?
和谐社会,请遵纪守法,做一个好公民。
文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq523176585/article/details/109508013