吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6726|回复: 28
收起左侧

[其他转载] [Javascript] 极限省字节(看懂混淆后的代码)

  [复制链接]
Tairraos 发表于 2019-11-17 12:17
本帖最后由 Tairraos 于 2020-10-25 15:52 编辑

吾爱竟然没有Javascript类

帖子不长,但是收藏下来必然某天用得到。
喜欢请点击下方免费评分,谢谢
======================
还有几帖你一定会喜欢的:
Python资源大全:https://www.52pojie.cn/thread-1081229-1-1.html
Python tkinter UI指南 https://www.52pojie.cn/thread-1290751-1-1.html
原生 Javascript 实现 jQuery 的功能: https://www.52pojie.cn/thread-1084552-1-1.html
Chrome调试器Console的进阶用法 https://www.52pojie.cn/thread-1156239-1-1.html
Javascript 极限省字节(看懂混淆后的代码) https://www.52pojie.cn/thread-1056860-1-1.html
JS必备,ESLINT配置说明 https://www.52pojie.cn/thread-1290700-1-1.html
======================

以下是我的笔记分享,大部分是自己看混淆代码的时候慢慢整理的,有一些笔记是网上看来的内容。

代码混淆工具除了会把作用域变量名方法名改名成单个字母,还会对表达式写法进行替换

当然,有时候如果有需要自己写代码的时候也可以使用这种省字节的写法

功能 省字节的字法 不省字节的写法 说明
变量赋初值 a=a||b; if(!a) { a = b; }
变量赋初值 b=a||0; if(a) { b = a; } else { b = 0; }
取整 ~~a 或者 a|0 parseInt(a, 10)Math.floor(a)a>>0
运算后取整 a+b|0 parseInt(a+b,10)Math.floor(a+b)(a+b)>>0~~(a+b)
四舍五入 a+.5|0 Math.round(a)
除2并取整 a>>1 Math.floor(a/2)
除4并取整 a>>2 Math.floor(a/4) 其它2的整数次方类推
取时间戳 +new Date (new Date()).getTime()
转布尔型 !!a Boolean(a)
转数值型 +a Number(a)
undefined void 00[0] undefined void 0快速,被频繁调用的方法使用void 0来定义undefined
Infinity 1/0 Infinity
布尔值短写法 !0 true
布尔值短写法 !1 false
定义变量 function(a,b,c){...} function(){var a,b,c;...}
定义变量 function(a,b){b=1;...} function(a){var b=1;...}
测试方法参数个数 1 in arguments arguments.length>1
setInterval和setTimeout setInterval('console.log("z")',100); setInterval(function(){console.log("z")},100);
setInterval和setTimeout setInterval('console.log("z")'); setInterval('console.log("z")',1);
表达式可以做方法参数 if(a=this.localStorage){...} a=this.localStorage;if(a){...}
表达式可以做方法参数 (b.pop(a=b.pop())+c) ((a=b.pop(),b.pop())+c)
表达式可以做方法参数 x(a=b,1) a=b; x(a,1);
交换变量的值 a=[b,b=a][0]; c = a; a = b; b = c;
用for代替while for(i=10;i--;){...} i=10; while(i--) {...}
常用for的简写 for(var i=x.length;i--;){ } for(var i=0; i<x.length;i++){ }
数字简写 2e6 2*Math.pow(10,6)2000000
数值比较 if(a^123){ } if(a != 123) { }
随机数 new Date % 100 (Math.random() * 100)|0 较小的随机数,不密集使用时,用时间戳省字节
字符串有link方法生成a标签 html=text.link(url); html="<a href='"+url+"'>"+text+"</a>";
指定长度重复字符串 a=Array(33).join(0); for(a="",i=32;i--;)a+=0;
判断类型 if(x.call){ } if(typeof x==='function'){ }
判断类型 if(x.big){ } if(typeof x==='string'){ }
判断类型 if(x.toFixed){ } if(typeof x==='number'){ }
判断类型 if(x.pop){ } if($.isArray(x)){ }
数组转字串会自带逗号 "rgb("+[x,y,z]+")" "rgb("+x+","+y+","+z+")"
判断数组长度 if(array[1]){ } if(array.length>1){ }
省略new r=RegExp(".",g); r=new RegExp(".",g);
省略new l=Function("x","console.log(x)"); l=new Function("x","console.log(x)");
立即执行函数 !function(){...}() (function(){...})() 比用括号省一个字节,混淆后的代码都会转成这种写法
省略的getElementById a.innerHTML = "foo"; document.getElementById('a').innerHTML = "foo"; a没有被使用过的话

重复字串,在新浏览器里可以写成 a="0".repeat(32); //ES6的方法
在立即执行的顶层闭包中传入void 0目的是为了传入undefined值,这样可以避免代码被Hack。undefined不是保留字,可以被重新赋值。



喜欢请点击下方免费评分,谢谢
======================
还有几帖你一定会喜欢的:
Python资源大全:https://www.52pojie.cn/thread-1081229-1-1.html
Python tkinter UI指南 https://www.52pojie.cn/thread-1290751-1-1.html
原生 Javascript 实现 jQuery 的功能: https://www.52pojie.cn/thread-1084552-1-1.html
Chrome调试器Console的进阶用法 https://www.52pojie.cn/thread-1156239-1-1.html
Javascript 极限省字节(看懂混淆后的代码) https://www.52pojie.cn/thread-1056860-1-1.html
JS必备,ESLINT配置说明 https://www.52pojie.cn/thread-1290700-1-1.html
======================

免费评分

参与人数 13吾爱币 +14 热心值 +12 收起 理由
banhave + 1 + 1 我很赞同!
abcdpm + 1 + 1 谢谢@Thanks!
向灬南 + 1 + 1 我很赞同!
wh1sper + 1 + 1 热心回复!
kiviki + 1 + 1 我很赞同!
德古拉伯 + 1 + 1 热心回复!
浣熊 + 1 + 1 热心回复!
牧鱼龙 + 1 + 1 谢谢@Thanks!
thinkingbullet2 + 1 谢谢@Thanks!
513337765 + 1 + 1 谢谢@Thanks!
思君879 + 1 + 1 我很赞同!
天空宫阙 + 1 + 1 用心讨论,共获提升!
李玉风我爱你 + 2 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

  • · TIPS|主题: 14, 订阅: 5

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

天空宫阙 发表于 2019-11-18 12:41
js逆向使人头秃,特别是混淆后的函数名,从a用到z我也是醉了
 楼主| Tairraos 发表于 2019-12-26 22:30
kiviki 发表于 2019-11-18 11:14
支持,对于出初学JavaScript逆向有帮助

支持请点击顶楼免费评分表示呀,谢谢
aaa3145 发表于 2019-11-17 15:38
 楼主| Tairraos 发表于 2019-11-17 17:28
aaa3145 发表于 2019-11-17 15:38
顶一下吧 辛苦了!

谢谢支持
 楼主| Tairraos 发表于 2019-11-18 09:03
没人喜欢JS呀,那下回我发点py笔记吧,也有大量~ micropython有人喜欢吗
xiaoyu0814 发表于 2019-11-18 09:43
也是哦   我觉得写的挺好的啊   为什么顶的人这么少
kiviki 发表于 2019-11-18 11:14
支持,对于出初学JavaScript逆向有帮助
浩浩912 发表于 2019-12-16 10:50
支持就完了
小恒啊 发表于 2019-12-23 14:07
有没有HTML网页源码,需要交个作业
namegu 发表于 2019-12-23 15:47
骚操作啊,秀得很
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 22:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表