Skip to content

grandpaxizhilang/Environmental-frame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

补环境框架

学习志远大佬的补环境课程实现的此框架

日志更新

2024-03-30

  • 简单实现HTMLScriptElementHTMLAnchorElementHTMLButtonElementHTMLInputElementHTMLLabelElementHTMLLinkElementHTMLImageElementHTMLAudioElement接口

2024-03-31

  • 简单实现XMLHttpRequestEventTargetXMLHttpRequestMediaDevicesNodeList接口

  • 补充了部分接口里面的属性和方法

2024-04-14

  • 改错了EventUIEvent接口多次new时,导致前面new出来实例中的type会跟着改变

  • 简单实现了ImageDataCanvasRenderingContext2DTextMetricsMouseEventHTMLOptionElementOptionAudioContextBaseAudioContextExternalWebGLRenderingContextWebGL2RenderingContextImageBitmapRenderingContextSchedulingUserActivationNetworkInformationGeolocationBluetoothClipboardCredentialsContainerKeyboardNavigatorManagedDataStorageManagerServiceWorkerContainerVirtualKeyboardWakeLockInkHIDLockManagerMediaCapabilitiesMediaSessionPermissionsSerialGPUUSBWindowControlsOverlayXRSystemNavigatorUADataCSSStyleDeclarationHTMLParagraphElementHTMLHeadingElementHTMLSpanElementHTMLUListElementHTMLLIElementDOMImplementationWebGLDebugRendererInfo接口

  • 完善HTMLCanvasElement接口中getContext方法

  • 完善Document接口中createEvent、createElement方法

  • 完善补充Navigator接口中的部分属性和方法

  • 实现将navigator冻结,防止navigator里面的属性的值被更改

  • 实现了Object接口,把Object大概率会被检测的方法进行了hook

  • 实现了RegExp接口,对RegExp进行代理。如果有调用正则来检测堆栈等等可以被捕获到

  • 实现了DOMException接口,实现throw弹出报错

  • 完善了Node接口中的appendChild方法,实现在实际的DOM结构中,一个元素不能成为其自身的子元素,也不能成为其子元素的子元素

  • 补充CanvasRenderingContext2D接口部分方法

2024-04-23

  • 简单实现NamedNodeMapAttrTextEncoderTextDecoderIDBFactoryHTMLAllCollectionDOMTokenListScreenOrientationPerformanceAudioSelectionCustomEventDocumentTypeTimeRangesDOMParserRangeAbstractRangeDataTransferCDATASectionTextCharacterDataCSSStyleRuleCSSRuleStyleSheetSVGElementCSSRuleListCSSMediaRuleCSSConditionRuleCSSGroupingRuleMessageEvent接口

  • 补充了window接口的部分属性和方法

  • 完善Node接口中removeChild方法

  • 实现完善BlobURL接口

  • 完善TextEncoder接口中的encode方法

2024-05-04

  • 简单实现CryptoHTMLMetaElement 、IDBOpenDBRequestIDBRequest接口

  • 收录简单吐环境代码

  • 补充部分接口中的属性和方法

2024-06-01

  • 补充了常用接口对于原型上的获取会报错的问题

2024-07-30

  • 增加了有关各类标签的检测,检测代码如下:
    function test_action() {
        let form = document.createElement("form");
        let input1 = document.createElement("input");
        input1.id = "username";
        input1.content = "action";
        input1.name = "action";
        form.appendChild(input1);
        let input2 = document.createElement("input");
        input2.name = "textContent";
        input2.id = "password";
        form.appendChild(input2);
        let input3 = document.createElement("input");
        input3.id = "innerText";
        input3.type = "submit";
        input3.name = "id";
        form.appendChild(input3);
        a = form.action;
        b = form.textContent;
        c = form.id;
        d = form.innerText;
        form.id='yq'
        form.name='yqName'
        document.body.appendChild(form)
        
        if (a.name == 'action' && a.id == 'username' && b.name == 'textContent' && b.id == 'password' && c.id == "innerText" && c.name == 'id' && d.id == 'innerText' && d.name == 'id' &&globalThis.yq==form &&globalThis.yqName==form) {
            console.log(`test_action 检测通过`)
        } else {
            console.log(`test_action 被检测`);

2024-08-06

  • 补充了一些接口的方法和属性
  • 优化了部分方法的代码逻辑
  • 使用插件解决typeof(document.all)为undefined的问题,J检测代码如下:
var text = document.all;
if(text != undefined){
    console.log('被1检测到')
}else if(text.length == 0){
    console.log('被2检测到')
}
else if(text.toString() != '[object HTMLAllcollection]'){
    console.log('被3检测到')
}else if(text.toString.toString() != "function toString() { [native code] }"){
    console.log('被4检测到')
}else
    console.log('通过了document.all检测!!!')

console.log(text)

目前存在的问题

  • 大部分接口中对于原型上的获取会报错的问题没有实现

  • 大部分接口的属性和方法没有实现

  • 框架里面还缺少所需的接口

  • 接口中输入错误的参数产生的报错输出( 比如new一个对象没有传入参数的报错 )

  • document.all的检测还没过 —— 已解决

  • 有些属性或者方法的定义在window作用域里面,放到内存中才是正确的做法

  • 可枚举/不可枚举属性可能会被检测

  • Error异常打印出来的调用栈(输出的文本不一样)可能会有检测

About

补环境框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published