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

aeshook问题

[复制链接]

126

主题

376

帖子

447

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
447

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

发表于 2021-8-1 20:20:12 | 显示全部楼层 | 阅读模式
// ==UserScript==
// @name       陈_AesHook
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  hookaes测试
// @author       陈
// @match        https://*/*
// @match        http://*/*
// @icon         https://www.google.com/s2/favicons?domain=baidu.com
// @grant        none
// ==/UserScript==


(function() {
    'use strict';
    console.log('小陈AesHook测试初始化成功,自动下断请输入“IsDebugger = true”。');
    var IsDebugger = false;
    //对window对象的属性进行检测
    if( window.CryptoJS != undefined){
        console.log('检测到标准加密库')
        var CryptoJS = window.CryptoJS;
        if(CryptoJS.AES != undefined ){
            window.CryptoJS.AES.encrypt = function(){
                console.log('已检测到Aes算法')
                let password = CryptoJS.enc.Utf8.stringify(arguments[0]);
                let key = CryptoJS.enc.Utf8.stringify(arguments[1]);
                let iv = CryptoJS.enc.Utf8.stringify(arguments[2]['iv']);
                console.log('已hook到Aes算法,参数如下:');
                console.log('password:'+password);
                console.log('key:'+key);
                console.log('iv:'+iv);
                if(IsDebugger = true){
                    debugger;
                }
            }


        }
    }else{
        console.log('未检测到标准加密库');
    }
})();



这样感觉局限的地方很多,混淆之后或者名称改了应该都拦截不到...哥哥们有点思路或者建议...?

Vx:rsnhkx2015  公众号:陈公子的话

118

主题

906

帖子

529

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
529
发表于 2021-8-1 20:44:01 | 显示全部楼层
遍历windows下属性,对属性返回的内容判断是否是函数,如果是函数tostring,然后tostring查找是否存在一些关键字符串?
但是可能尿崩把...
回复

使用道具 举报

4

主题

77

帖子

27

积分

新手上路

Rank: 1

积分
27

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

发表于 2021-8-1 20:53:55 | 显示全部楼层
学习中... window.CryptoJS是不是包括AES,如果是的话就直接弄残它了,还要判断干什么
回复

使用道具 举报

70

主题

682

帖子

596

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
596

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

发表于 2021-8-1 21:35:51 | 显示全部楼层
可以这样判断
if(window.CryptoJS && window.CryptoJS.AES)
上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
回复

使用道具 举报

118

主题

906

帖子

529

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
529
发表于 2021-8-1 23:38:16 | 显示全部楼层
脚本体验师001 发表于 2021-8-1 20:53
学习中... window.CryptoJS是不是包括AES,如果是的话就直接弄残它了,还要判断干什么 ...

那样网页的自身功能也会残疾,这样可以获取一些内容,比如拓展网页功能,利用自身的加密函数,或者在加密过程中做篡改什么的
回复

使用道具 举报

5

主题

65

帖子

113

积分

注册会员

Rank: 2

积分
113

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

发表于 2021-8-2 13:46:24 | 显示全部楼层
本帖最后由 cxxjackie 于 2021-8-2 13:48 编辑
  1. const windowKeys = Object.getOwnPropertyNames(window);
  2. for (let windowKey of windowKeys) {
  3.   if (typeof(window[windowKey]) == 'object') {
  4.     const firstKeys = Object.keys(window[windowKey]);
  5.     for (let firstKey of firstKeys) {
  6.       if (firstKey.toLowerCase() == 'aes' && typeof(window[windowKey][firstKey]) == 'object') {
  7.         const secondKeys = Object.keys(window[windowKey][firstKey]);
  8.         for (let secondKey of secondKeys) {
  9.           if (secondKey.toLowerCase() == 'encrypt' && typeof(window[windowKey][firstKey][secondKey]) == 'function') {
  10.             //hook
  11.             break;
  12.           }
  13.         }
  14.         break;
  15.       }
  16.     }
  17.   }
  18. }
复制代码

这样?感觉还是很难解决混淆的问题,而且性能捉鸡。还有你别把原算法弄没了,可以把原有的encrypt用一个_encrypt保存起来,然后return _encrypt.apply(this, arguments);
回复

使用道具 举报

118

主题

906

帖子

529

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
529
发表于 2021-8-2 14:58:01 | 显示全部楼层
cxxjackie 发表于 2021-8-2 13:46
这样?感觉还是很难解决混淆的问题,而且性能捉鸡。还有你别把原算法弄没了,可以把原有的encrypt用一个_e ...

我也觉得...性能做鸡的不行
回复

使用道具 举报

发表回复

本版积分规则

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