首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS代码之还原

基于 Babel 对 JS 代码进行混淆与还原操作的网站 JS 代码混淆与还原 (kuizuo.cn) 还原前言​ AST 仅仅只是静态分析,但可以将还原出来的代码替换原来的代码,以便更好的动态分析找出相关点...在还原时,并不是所有的代码都能还原成一眼就识破代码执行逻辑的,ast 也并非万能,如果你拥有强大的 js 逆向能力,有时候动态调试甚至比 AST 静态分析来的事半功倍。...1,而这对应 js 中也就是true与false,所以也可以遍历这部分的代码,然后将其还原成 Boolean,像这种表达式就不细说了(有点类似 jsfuck),ast 结构自行分析。...运行还原后的代码​ 最终整个还原后的代码可以在newCode.js中查看,但到目前为止还没有测试还原后的代码到底能否正常运行,或者是替换节点导致语法错误,所有就需要将还原后的代码与混淆过的代码替换运行这样才能测试的出来...JS 混淆与还原的网站​ 针对上述还原操作其实还不够明显,于是就编写了一个在线对 JS 代码混淆与还原的网站(主要针对还原)– JS 代码混淆与还原 (kuizuo.cn) 其实也就是对上述的还原代码进行封装成工具使用

18.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

js解构赋值如何定义默认值?

在JavaScript中,我们可以在解构赋值语句中定义默认值。这就意味着,如果我们试图解构一个不存在的属性,或者属性值为undefined,那么我们可以为这个属性定义一个默认值。...下面是一些例子来说明如何在解构赋值中定义默认值: 对象解构赋值: const { a = 10, b = 5 } = { a: 3 }; console.log(a); // 3 console.log...但是属性b在我们的对象中并不存在,所以我们使用了默认值5。...解构赋值注意:冒号代表重命名, 等号代表赋值默认值,重命名之后,原变量名称不可访问 const { a:aaa, b:bbb } = { a: 3 }; console.log(a) // a is not...但是第二个元素在我们的数组中并不存在,所以我们使用了默认值5。 这样,当我们在解构对象或数组时,可以确保我们总是得到一个值,即使该值在原始数据结构中并不存在。

18310

JS 函数参数默认值、Arguments 和 Rest parameter

一、ES 5 中函数默认值写法 function total(x, y, z) { if (y === undefined) { y = 2 } if (z === undefined...console.log(total(1, undefined, 100)) // 103 console.log(total(1, 10, 100)) // 111 二、ES 6 中函数默认值写法...console.log(total(1, undefined, 100)) // 103 console.log(total(1, 10, 100)) // 111 参数设置注意事项 有默认值的参数要往后靠...参数的默认值可以是其它参数的运算表达式(如 z = x+y) 三、arguments 获取传入参数的个数 用来表示当前函数传入的参数,作为伪数组输出(可通过 Array.from 转换成数组) 示例...arguments.length } console.log(total(1, 10, 100, 1000)) // 4 通过以上代码可知,arguments 只要传入的参数都计算在内 四、.length 获取函数没有默认值的参数

2.8K30

JS 逆向百例】反混淆入门,某鹏教育 JS 混淆还原

逆向过程 本次逆向的目标同样是一个登录接口,其中的加密 JS 使用了简单的混淆,可作为混淆还原的入门级教程,来到登录页面,随便输入账号密码进行登录,其中登录的 POST 请求里, Form Data 有个加密参数...# @Software: PyCharm # @describe: 混淆还原小脚本 # ================================== # 待替换的值(太多了,仅列出少部分)...] # 混淆后的 JS with open("fm_old.js", "r", encoding="utf-8") as f: js_lines = f.readlines() js = "..."Qo00o[{}]".format(item.index(i)) js = js.replace(str_old, '"' + i + '"') # 还原后的 JS with open("...将 JS 还原后,我们可以将还原后的 JS 替换掉网站本身经过混淆后的 JS,这里替换方法有很多,比如使用 Fiddler 等抓包工具替换响应、使用 ReRes 之类的插件进行替换、使用浏览器开发者工具自带的

7.2K40

JS实现select选中option触发事件操作示例

本文实例讲述了JS实现select选中option触发事件操作。...分享给大家供大家参考,具体如下: 我们在用到下拉列表框select时,需要对选中的选项触发事件,其实本身没有触发事件方法,我们只有在select里的onchange方法里触发。...,需要在select中加onchange事件,虽然我曾经处理过类似的问题,用过就忘是不是猪脑子… 这次记住了吧应该 当我们触发select的双击事件时,用ondblclick方法。...当我们要取得select的选中事件时,用document.all[‘name’].value来获取,其中name是select的名称。 如果我们要得到select的全部的值就用一个for循环来实现。...document.all['list'].length; for(var i=0;i<vi;i++){ document.form2.list(i).value; //form2是的名称 } JS

10.5K20

App逆向案例 X嘟牛 - Frida监听 & WT-JS工具还原(一)

App逆向案例 X嘟牛 - Frida监听 & WT-JS工具还原(一) ---- 提示:文章仅供参考,禁止用于非法途径; 文章目录 App逆向案例 X嘟牛 - Frida监听 & WT-JS工具还原...(一) 前言 一、资源推荐 二、App抓包分析 三、反编译逆向分析 四、还原JS加密 1.Hook示例代码 2.JS还原 五、python登录实现代码 1.python示例代码 2.python运行结果...DES加密生成encrypt,public static String encodeDesMap(String data, String desKey, String desIV) 四、还原...还原 1、运行Hook代码 2、分析加密参数: sign的加密参数:equtype=ANDROID&loginImei=Android354730613429558&timeStamp=1670240167016&...还原MD5 4、使用WT-JS生成MD5的加密代码 5、查看生成的代码 6、WT-JS还原DES public static final String BASE_DES_IV

1.1K20

JS 逆向百例】某音 X-Bogus 逆向分析,JSVMP 纯算法还原

除了匡开圆的论文以外,还有以下文章也值得学习: H5应用加固防破解-js虚拟机保护方案浅谈 JS加密?...用虚拟机opcode保护JS源码 给"某音"的js虚拟机写一个编译器 JSVMP 逆向方法有哪些?...就目前来讲,JSVMP 的逆向方法有三种(自动化不算):RPC 远程调用,补环境,日志断点还原算法,其中日志断点也称为插桩,找到关键位置,输出关键参数的日志信息,从结果往上倒推生成逻辑,以达到算法还原的目的...这里就是生成参数的主要 JS 逻辑了,也就是 JSVMP,整体上做了一个混淆,这里可以使用 AST 来解混淆,K哥以前同样也写过 AST 的文章,这里还原混淆不是重点,咱们直接使用 V 佬的插件 v_jstools...来还原: 图片 还原后使用浏览器的 Overrides 替换功能将 webmssdk.js 替换掉,往上跟栈,如下图所示,到 W 这里就已经生成了 X-Bogus 了,this.openArgs[1]

3.3K20

下拉菜单11+原生js获取select下拉框的selected的option项

selected"); //获取选中的项 2:alert(options.val()); //拿到选中项的值 3:alert(options.text()); //拿到选中项的文本 [2]js...数组转json并在后台对其解析具体实现 想必大家在开发过程中也遇到类似问题,如果直接将js获取的数组传给后台,后台是无法区分数组的,因为js数组如果是二维的就是这样的:1,张三,23,2,李四,26...希望能给大家带去帮助 首先需要在js里面对数组进行转换为json格式 js代码如下: 代码如下: /**      *js数组转json      *      */     function arrayToJson...使用 原生js,获取select标签下属性有selected的option项。...js获取select标签这个 对象 : var selectTest = document.getElementById("selectBox"); 然后找到 selected 的option标签的

49340

Oracle 数据库常用操作语句大全

compress=y ;如果需要日志,后面: log=d:\log.txt 备份远程服务器的数据库 exp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y 4、数据库还原...完整还原 imp demo/demo@orcl file=d:\back.dmp full=y ignore=y log=D:\implog.txt 指定log很重要,便于分析错误进行补救。...导入指定表 imp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students) 还原到远程服务器 imp 用户名/密码@远程的IP:端口/...rename to 新表名 eg:alter table tablename rename to newtablename 4、增加字段 说明:alter table 表名 add (字段名 字段类型 默认值...table tablename add (ID varchar2(30) default '空' not null); 5、修改字段 说明:alter table 表名 modify (字段名 字段类型 默认值

909100

Oracle 常用SQL语句大全(精)

compress=y ;如果需要日志,后面: log=d:\log.txt 备份远程服务器的数据库 exp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y 4、数据库还原...完整还原 imp demo/demo@orcl file=d:\back.dmp full=y ignore=y log=D:\implog.txt 指定log很重要,便于分析错误进行补救。...导入指定表 imp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students) 还原到远程服务器 imp 用户名/密码@远程的IP:端口...新表名 eg:alter table tablename rename to newtablename 4、增加字段 说明:alter table 表名 add (字段名 字段类型 默认值...table tablename add (ID varchar2(30) default '空' not null); 5、修改字段 说明:alter table 表名 modify (字段名 字段类型 默认值

4K32
领券