首页 > 其他分享 >JS逆向总结

JS逆向总结

时间:2024-08-19 11:28:42浏览次数:9  
标签:总结 逆向 false name Object JS person true 属性

总结在进行JS逆向中常用的手段

1)Object.defineProperty: 对于对象属性的监控

 

该方法是es5的方法(千万不要以为是es6的哦),作用是直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。(切记只能用在对象身上不能用在数组身上

1、语法

  代码解读
Object.defineProperty(obj, prop, descriptor)

2、参数说明:

  • obj:必需。目标对象 
  • prop:必需。需定义或修改的属性的名字
  • descriptor:必需。目标属性所拥有的特性

3、属性使用案例

修改某个属性的值时,给这个属性添加一些特性。

  代码解读 复制代码
let person = {}; 
Object.defineProperty(person, 'name', {   
    writable: true || false,   
    configurable: true || false,   
    enumerable: true || false,  
    value:'gjf' 
});

 

属性详解:

  • writable:是否可以被重写,true可以重写,false不能重写,默认为false。
  • enumerable:是否可以被枚举(使用for...in或Object.keys())。设置为true可以被枚举;设置为false,不能被枚举。默认为false。
  • value:值可以使任意类型的值,默认为undefined
  • configurable:是否可以删除目标属性或是否可以再次修改属性的特性(writable, configurable, enumerable)。设置为true可以被删除或可以重新设置特性;设置为false,不能被可以被删除或不可以重新设置特性。默认为false。

4、存取器描述(get和set)

  • 注意:当使用了getter或setter方法,不允许使用writable和value这两个属性
  代码解读
let person = {};
let n = 'gjf';
Object.defineProperty(person, 'name', { 
    configurable: true,  
    enumerable: true, 
    get() {    
        //当获取值的时候触发的函数    
        return n  
    },  
    set(val) {    
        //当设置值的时候触发的函数,设置的新值通过参数val拿到    
        n = val;  
    }
});
console.log(person.name) //gjf
person.name = 'newGjf'
console.log(person.name) //newGif

  2)            

标签:总结,逆向,false,name,Object,JS,person,true,属性
From: https://www.cnblogs.com/xingxia/p/18366954/js_crack

相关文章

  • 【Three.JS零基础入门教程】第八篇:材质详解
     前期回顾:【Three.JS零基础入门教程】第一篇:搭建开发环境【Three.JS零基础入门教程】第二篇:起步案例【Three.JS零基础入门教程】第三篇:开发辅助【Three.JS零基础入门教程】第四篇:基础变换【Three.JS零基础入门教程】第五篇:项目规划【Three.JS零基础入门教程】第六篇:物体......
  • Node.js使用Axios发起http调用
    axios功能比较多,除了基本get/post调用之外,还支持多个接口并发调用、全局配置、拦截器等功能。笔者这里只介绍简单使用方法。安装npminstallaxiosGET请求:constaxios=require('axios');axios.get('http://api.qingyunke.com/api.php',{params:{key:'fre......
  • 放弃fastjson拥抱jackson
    放弃fastjson拥抱jackson背景功能强大好用;不亏是国人更懂国人;但是安全漏洞频发;生产项目总是告警勒令修改放弃使用。坑爹玩意fastjson漏洞太多直接搞了fastjson2;虽然大部分兼容远古项目还需要升级谁敢动呀。动了引发一些未知BUG那岂不是背锅侠(玩笑该干还得干挣得就是......
  • js阻止右键复制
    $(".article-content-wrap").unbind("copy").bind("copy",(function(e){e.preventDefault()e.stopPropagation()event.clipboardData.setData("text/plain","")Login()//这一句显示为弹出登录框之类的retur......
  • 总结指针数组与数组指针的区别
    1、指针数组1-1、定义指针数组是一个数组,其元素是指针。这意味着数组的每个位置都存储了一个指针,这些指针可以指向任何类型的数据(包括其他数组、结构体等)。1-2、类型如果有一个指向整数的指针数组,其类型可能是 int*arr[N];,这里 arr 是一个数组,包含 N 个 int* 类型......
  • 自制最简易版vue.js
    classMyVue{constructor(options){this.$el=document.querySelector(options.el)this.$data=options.datathis.$methods=options.methodsthis.init()this.compile(this.$el)}compile(node){letthat=thisnode.chi......
  • C++ 各种初始化方法总结
    在各种编程语言中,初始化都是非常重要的步骤,用于确保对象在使用前具有确定的初始状态。C++提供了多种初始化方法,每种方法都有其特定的使用场景和注意事项。以下是一些主要的初始化方法及其注意事项:默认初始化(Default-initialization):形如Tobj、newT等方式的初始化,其中T为类......
  • java打印流,commons-io工具包,IO总结
    一.打印流1.概述:平时我们在控制台打印输出,是调用print()方法和println()方法完成的,这两个方法都来自于java.io.PrintStream类作用:该类能够方便地打印各种数据类型的值,写入数据后可以实现自动换行。通常用于日志记录2打印流的构造方法publicPrintStream(StringfileName)......
  • 动态规划 总结
    DAG上的动态规划与树形DP这两个词看上去很高大上,但实则就是记忆化搜索,而记忆化搜索其实就是DP的本质。当选择一个需要用全局变量来参与描述状态的方式时,就只能用常规搜索。但当状态可以完全被几个非全局参数确定性的描述时,就可以用记忆化搜索,记忆化搜索可以通过存储答案并直接提取......
  • 深入理解 `@DateTimeFormat` 和 `@JsonFormat` 注解
    前言在Java应用程序中,处理日期和时间是一个常见的需求。无论是从数据库读取还是通过API接收数据,正确的日期和时间格式都是确保应用正确运作的关键因素。本文将深入探讨两个常用的注解——@DateTimeFormat和@JsonFormat——以及它们如何帮助我们在Spring和使用Jackson库的应......