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

aeshook问题

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:59
  • 签到天数: 532 天

    [LV.9]以坛为家II

    148

    主题

    420

    回帖

    1215

    积分

    版主

    积分
    1215

    油中2周年生态建设者

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

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

    I don't hate programming but the fucking world.
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

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

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-1 20:44:01 | 显示全部楼层
    遍历windows下属性,对属性返回的内容判断是否是函数,如果是函数tostring,然后tostring查找是否存在一些关键字符串?
    但是可能尿崩把...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-30 00:00
  • 签到天数: 122 天

    [LV.7]常住居民III

    29

    主题

    601

    回帖

    542

    积分

    专家

    积分
    542

    油中2周年生态建设者油中3周年挑战者 lv2

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

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

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

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

    那样网页的自身功能也会残疾,这样可以获取一些内容,比如拓展网页功能,利用自身的加密函数,或者在加密过程中做篡改什么的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 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的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

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

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

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

    我也觉得...性能做鸡的不行
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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