aeshook问题
```// ==UserScript==
// @name 陈_AesHook
// @namespace http://tampermonkey.net/
// @version 0.1
// @descriptionhookaes测试
// @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);
let key = CryptoJS.enc.Utf8.stringify(arguments);
let iv = CryptoJS.enc.Utf8.stringify(arguments['iv']);
console.log('已hook到Aes算法,参数如下:');
console.log('password:'+password);
console.log('key:'+key);
console.log('iv:'+iv);
if(IsDebugger = true){
debugger;
}
}
}
}else{
console.log('未检测到标准加密库');
}
})();
```
这样感觉局限的地方很多,混淆之后或者名称改了应该都拦截不到...哥哥们有点思路或者建议...?
遍历windows下属性,对属性返回的内容判断是否是函数,如果是函数tostring,然后tostring查找是否存在一些关键字符串?
但是可能尿崩把... 学习中... window.CryptoJS是不是包括AES,如果是的话就直接弄残它了,还要判断干什么 可以这样判断
if(window.CryptoJS && window.CryptoJS.AES) 脚本体验师001 发表于 2021-8-1 20:53
学习中... window.CryptoJS是不是包括AES,如果是的话就直接弄残它了,还要判断干什么 ...
那样网页的自身功能也会残疾,这样可以获取一些内容,比如拓展网页功能,利用自身的加密函数,或者在加密过程中做篡改什么的 本帖最后由 cxxjackie 于 2021-8-2 13:48 编辑
const windowKeys = Object.getOwnPropertyNames(window);
for (let windowKey of windowKeys) {
if (typeof(window) == 'object') {
const firstKeys = Object.keys(window);
for (let firstKey of firstKeys) {
if (firstKey.toLowerCase() == 'aes' && typeof(window) == 'object') {
const secondKeys = Object.keys(window);
for (let secondKey of secondKeys) {
if (secondKey.toLowerCase() == 'encrypt' && typeof(window) == 'function') {
//hook
break;
}
}
break;
}
}
}
}
这样?感觉还是很难解决混淆的问题,而且性能捉鸡。还有你别把原算法弄没了,可以把原有的encrypt用一个_encrypt保存起来,然后return _encrypt.apply(this, arguments); cxxjackie 发表于 2021-8-2 13:46
这样?感觉还是很难解决混淆的问题,而且性能捉鸡。还有你别把原算法弄没了,可以把原有的encrypt用一个_e ...
我也觉得...性能做鸡的不行
页:
[1]