找不到变量生成的位置?让插件来帮你轻松定位

声明:本文仅作研究分享,如有侵权,还请告知删除,谢谢。

搞过某号店登录的朋友都知道有个“window._t”变量,该变量如果不依靠工具来查找生成的位置,比较难,非常的难,掉的头发比较多。如果你能使用AST进行还原,则能很顺利的找到其加密位置,这里不讲怎么将混淆的代码还原。我们通过油猴插件+脚本的方式来定位,我们来看代码:


   
  1. // ==UserScript==
  2. // @name Hook global
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author 悦来客栈的老板
  7. // @include *
  8. // @grant none
  9. // @run-at document-start
  10. // ==/UserScript==
  11. (function() {
  12. 'use strict';
  13. //全局变量 监控
  14. var t = window._t
  15. Object.defineProperty(window, '_t', {
  16. get: function() {
  17. console.log('Getting window._t');
  18. return t;
  19. },
  20. set: function(val) {
  21. console.log('Setting window._t', val);
  22. debugger;
  23.             t = val;
  24. }
  25. })
  26. })();

代码可以Hook到加密生成的地方,但是有个坑:

// @run-at document-start

  

这行代码的目的是脚本注入的时机。

参考油猴手册的解释:

油猴手册地址:

https://www.tampermonkey.net/documentation.php#_run_at

  

看不懂英文的我猜出来了它的大致意思:尽可能快的注入到js代码中,这样才能Hook,如果去掉这行代码,是无法拦截的,读者朋友们可以自行尝试。

下面介绍另外一种方式进行变量定位:reres插件,其github地址:

https://github.com/annnhan/ReRes

  

下载插件后安装到浏览器上面,如图:


安装好后,注意按照它的教程勾选允许访问文件地址:

我们现在来看看它到底怎么帮我们定位到变量的位置。

  1. 使用谷歌浏览器打开如下网址,并按下F12,打开开发者工具:

    https://passport.yhd.com/passport/login_input.do
    
        
  2. 随便输入用户名和密码,点击登陆按钮,进行抓包。在查找 captchaToken 参数时,全局搜索,定位到了这里:

    控制台分析得知:

    j2[hr[b('0x361', 'XzVN')]('_', 't')]
    
        

       这行代码就是 window._t:

  可是它已经生成了,按照传统的方法去找加密的位置,得靠极大的耐心和运气。

3.我们将这个页面上的所有代码复制,一共4191行代码,并保存到电脑上,我这边保存到了E盘(Hook.js):


4.在文件末尾加入如下的JS代码,并保存:


   
  1. (function() {
  2. 'use strict';
  3. var t = window._t
  4. Object.defineProperty(window, '_t', {
  5. get: function() {
  6. console.log('Getting window._t');
  7. return t;
  8. },
  9. set: function(val) {
  10. console.log('Setting window._t', val);
  11. debugger;
  12. t = val;
  13. }
  14. })
  15. })();

这个就是上面油猴脚本里的代码,只不过不需要下面这些信息:


   
  1. // ==UserScript==
  2. // @name Hook global
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author 悦来客栈的老板
  7. // @include *
  8. // @grant none
  9. // @run-at document-start
  10. // ==/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

(完)