上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

js hook

[复制链接]

4

主题

6

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2021-11-20 14:10:21 | 显示全部楼层 | 阅读模式
下面是一个示例:这个示例演示了hook全局的cookie设置点
!(function() {
    //严谨模式 检查所有错误
    'use strict';
    //document 为要hook的对象   这里是hook的cookie
        var cookieTemp = "";
    Object.defineProperty(document, 'cookie', {
                //hook set方法也就是赋值的方法
                set: function(val) {
                                //这样就可以快速给下面这个代码行下断点
                                //从而快速定位设置cookie的代码
                                console.log('Hook捕获到cookie设置->', val);
                                cookieTemp = val;
                                return val;
                },
                //hook get方法也就是取值的方法
                get: function()
                {
                        return cookieTemp;
                }
    });
})();

首先这是一个规范的HOOK例子,在js逆向时你是否很多时候看到一个值但是断不到他是在哪里加密或者在哪里生成的,那么通过HOOK就可以获取,hook原理就是把每个值对比,然后自行进行一切判断是否是你自己想要的那个值
1.hook js是有时间性的例如在网页加载后你进行hook那么结果已经产生那么肯定是不行的。
2.你得知道是那个对象调用产生的,因为需要传递对象,get,set方法不可改变,规范写法
3.一般方法有fd拦截服务器返回的数据进行替换(通杀,可在任意地方下断点修改代码),脚本,手动注入(在网页加载第一个js的时候打下断点然后进行hook大部分可用)
4.其核心是把获取到的值保存然后导出,其次这玩意就是个自执行函数加导出,在逆向的时候经常会用到类似的,通过v8引擎本地实现js加密 或生成实现反反爬,模拟登录等
5.道总以前发过我这是一些玩了几次的个人见解不足得道总给我纠正下

12

主题

223

帖子

1768

积分

开发者

Rank: 6Rank: 6

积分
1768

猫咪币纪念章活跃会员三好学生热心会员中秋纪念章国庆纪念章

发表于 2021-11-20 17:28:50 | 显示全部楼层
ggnb!!!!              
布[
回复

使用道具 举报

8

主题

41

帖子

16

积分

开发者

Rank: 6Rank: 6

积分
16

国庆纪念章中秋纪念章

发表于 2021-11-20 17:56:18 | 显示全部楼层
ggnb呀
死混子没货,开始灌水了
回复

使用道具 举报

8

主题

157

帖子

202

积分

开发者

Rank: 6Rank: 6

积分
202

活跃会员热心会员突出贡献三好学生猫咪币纪念章中秋纪念章国庆纪念章

发表于 2021-11-20 19:46:39 | 显示全部楼层
这个写法不太好,因为cookie有这种赋值方法:
  1. document.cookie = 'test=1;domain=test.com;path=/';
复制代码

这样只会改变某个值,而访问document.cookie时得到的是所有值,还有个毛病是没有set之前去get,会得到空值,这个也不符合预期。建议改成这样,直接调用原型上的get、set方法:
  1. const descriptor = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie');
  2. Object.defineProperty(document, 'cookie', {
  3.   configurable: true,
  4.   get: descriptor.get,
  5.   set: function(val) {
  6.     console.log('Hook捕获到cookie设置->', val);
  7.     descriptor.set.call(document, val);
  8.   }
  9. });
复制代码


回复

使用道具 举报

4

主题

6

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 3 天前 | 显示全部楼层
cxxjackie 发表于 2021-11-20 19:46
这个写法不太好,因为cookie有这种赋值方法:

这样只会改变某个值,而访问document.cookie时得到的是所有 ...

哥哥nb!!!!!!!!!!!!!!!!
回复

使用道具 举报

发表回复

本版积分规则

快速回复 返回顶部 返回列表