简单记录一下补环境过瑞数vmp的笔记
暗号:5rqQ56CBK3YgUHltLTExNDUxNA==
第一个环境点
以下内容需与浏览器一致
1. try{return (window instanceof Window);}catch(e){}
2. try{return __filename;}catch(e){}
3. return typeof __loadScript == "function" && typeof __date_clock == "function"
4. return typeof _globalObject != "undefined" && typeof window != "undefined" && _globalObject == window
第二个环境点
eval hook检测,除了常规的toString方法还用了以下代码进行检测
eval('!new function(){eval("this.a=1")}().a')
正常浏览器运行
随便找了段网上hook eval的结果
如果不用.call方法返回为undefined
第三个环境点
document.all
分享一个不用插件的方法
const v8 =require('v8');
const vm=require('vm');
v8.setFlagsFromString('--allow-natives-syntax');
let undetectable = vm.runInThisContext("%GetUndetectable()");
v8.setFlagsFromString('--no-allow-natives-syntax');
document = {
all:undetectable,
};
Object.defineProperty(document.all,'length',{
get : function (){
return Object.keys(document.all).length
}
})
document.all[0] = null;
document.all[1] = {"a":"2"};
console.log(document.all == undefined);
console.log(document.all !== undefined);
console.log(document.all.length);
第四个环境点
拿几个典型的toString演示
window.CanvasRenderingContext2D.prototype.getImageData.toString()
window.HTMLCanvasElement.prototype.toBlob.toString()
window.HTMLCanvasElement.prototype.toDataURL.toString()