js混淆对抗之变量名优化

本文讨论了JavaScript中常见的混淆变量名问题,提出了一种基于AST结构的优化方案,通过语句类型生成具有意义的变量名,如局部变量、全局变量等,以提高代码可读性和观赏性。作者提供了GitHub项目和B站视频链接供读者参考。
摘要由CSDN通过智能技术生成

基于目前市面上大多数的混淆变量名情况分析,主要恶心人的点是变量名无意义还不好看.

常见例子: _0x123123, O00oO , ill1il.

瑞数:_$aa

极验:  $_aa

还有某些混淆是单个字母做变量,导致会有很多重命名但实际定义以及作用域不同的问题。

而众所周知变量名混淆是不可还原的,菜老板的文章已经说过。只能优化,

目前已知优化方案有:

1. 对变量名进行遍历,随机生成两个或三个字母组合进行作用域替换,优点: 观赏性提高了点 。缺点: 变量名还是一样无任何意义

2. 把js放gpt上直接优化。优点: 观赏性最高,且变量名有意义。 缺点: 一小段js还行,代码量大就不行。一段一段js放上去优化的话可能会有代码上下文不一致优化出来也有问题。

3.对变量名当前语句状态做模板匹配,给一个含有一定意义的词

所以我选择了3,作为一个居中的方案,既有点意义也能把变量名区分,也提高一点观赏性。

主要是以AST结构的语句类型做名字生成

github链接: GitHub - neverl805/AST_rename_iden: js混淆变量名优化

b站视频链接:js混淆逆向对抗之变量名优化_哔哩哔哩_bilibili

变量名映射表:

效果:

        

变量名解释:

loc开头代表此变量是一个局部变量.

glb开头代表此变量是一个全局变量

loc_call : 局部变量,代表值是调用函数返回的结果

loc_arr_fun:局部变量,代表值是箭头函数

Arr_arg: 箭头函数的形参

Exp_arg: 函数表达式形参

loc_id : 局部变量,代表值是一个变量名

loc_mem: 局部变量,代表是一个对象取属性值

loc_str: 局部变量,代表值是一个字符串

loc_num: 局部变量,代表值是一个数值

loc_bin: 局部变量, 代表值是一个运算表达式

loc_asgE: 局部变量,代表值是赋值表达式

更多的请看映射表.

主要文件是main.js,可自己修改使用,有什么建议也可以提一下呀

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值