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

aeshook问题

[复制链接]
  • TA的每日心情
    慵懒
    18 分钟前
  • 签到天数: 78 天

    [LV.6]常住居民II

    142

    主题

    519

    帖子

    832

    积分

    版主

    Rank: 8Rank: 8

    积分
    832

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

    发表于 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('未检测到标准加密库');
        }
    })();
    

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

    bilibili:陈公子的话   公众号:陈公子的话
  • TA的每日心情

    2022-6-4 20:51
  • 签到天数: 32 天

    [LV.5]常住居民I

    321

    主题

    2838

    帖子

    2846

    积分

    荣誉开发者

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    2846

    猫咪币纪念章

    发表于 2021-8-1 20:44:01 | 显示全部楼层
    遍历windows下属性,对属性返回的内容判断是否是函数,如果是函数tostring,然后tostring查找是否存在一些关键字符串?
    但是可能尿崩把...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2022-6-12 21:47
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    9

    主题

    219

    帖子

    168

    积分

    中级工程师

    Rank: 5Rank: 5

    积分
    168

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-6-8 21:09
  • 签到天数: 48 天

    [LV.5]常住居民I

    135

    主题

    1798

    帖子

    1972

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    1972

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

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

    使用道具 举报

  • TA的每日心情

    2022-6-4 20:51
  • 签到天数: 32 天

    [LV.5]常住居民I

    321

    主题

    2838

    帖子

    2846

    积分

    荣誉开发者

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    2846

    猫咪币纪念章

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

    那样网页的自身功能也会残疾,这样可以获取一些内容,比如拓展网页功能,利用自身的加密函数,或者在加密过程中做篡改什么的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    10

    主题

    347

    帖子

    427

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    427

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

    发表于 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);
    回复

    使用道具 举报

  • TA的每日心情

    2022-6-4 20:51
  • 签到天数: 32 天

    [LV.5]常住居民I

    321

    主题

    2838

    帖子

    2846

    积分

    荣誉开发者

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    2846

    猫咪币纪念章

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

    我也觉得...性能做鸡的不行
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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