js常用套路(数值的七种写法)
js常用套路(数值的七种写法)
2024-09-30 07:58:41  作者:浮生亂  网址:https://m.xinb2b.cn/sport/abd288721.html

JS奇淫技巧:数值的七种写法

JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手

你知道吗?在JS编程中,数值可以有很多种写法。

第一种写法:

一般情况而言,数值就是数值。

比如:

var a = 1;

你可知,这个1可以有很多种变形的写法,甚至是变态的写法。

第二种写法:

var a= !!{};

console.log(a);


即:1变成了 !!{}。

数值1为什么能用 !!{}来表示呢?原因如下:

在JS语法中,!{}是布尔值false,强制转换成数字为0,!!{}则是true,用 号做强制转换,变成数值即为1。

以此类推:

2=( !!{}) (!!{})

3=( !!{}) (!!{}) (!!{})

111= (( !!{}) [] ( !!{}) ( !!{}))

第三种写法:

var a=266119^266118;

console.log(a);


即:将异常运算的结果,等于我们使用的数值。

这也就意味着,同一个数,比如1,可以有多种异或写法,比如:

var a=596219^596218;

var a=115812^115813;

第四种写法:

var a = function (s, h) {

return s ^ h;

}(719028, 719029);

console.log(a);


也就是把第三种写法中的异或运算变成函数,将异或的两个数以参数的形式传入,在函数中运算并返回数值结果。

第五种写法:

把第三种写法中的亦或运算转成ast(抽象语法树)。

var a = ast({"type":"File","program":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"BinaryExpression","left":{"type":"NumericLiteral","value":115812},"operator":"^","right":{"type":"NumericLiteral","value":115813}}}]}});

console.log(a);


变成AST之后,还得带一段执行AST的代码,也就是AST的解释器。

当然,这里是简单的仅解析异或运算的解释器:(AST解释器的雏形)

function ast(node) {

if(node.type == "File"){

return ast_excute(node.program);

}

if(node.type == "Program"){

return ast_excute(node.body[0]);

}

if(node.type == "ExpressionStatement"){

return ast_excute(node.expression);

}

if(node.type == "BinaryExpression"){

var left_value = node.left.value;

var right_value = node.right.value;

var operator = node.operator;

if(operator == "^"){

return left_value ^ right_value;

}

}

}

此操作,等于将异或运算代码编译为AST,再带了一个AST解释器运行它。

第六种写法

eval的使用。

直接的写法:

var a = eval(1);

console.log(a);


Eval的变形写法:

var a = window[(14).toString(32) (31).toString(32) (10).toString(32) (21).toString(32)](1); console.log(a);


对方法四的代码做升级,也可加入eval:

var a = function (s, h) {

return eval(String.fromCharCode(115, 32, 94, 32, 104));

}(678405, 678404);

console.log(a);


即:把return s ^ h用eval进行了包裹,并用formCharCode做了加密。

第七种写法:

构造函数的使用。

与eval有些类似,但eval做为高风险函数,容易被检测或禁用,因此使用构造函数实现代码运行,与eval效果类似。

原始形态:

var a = [].constructor.constructor("return 1")();

console.log(a);


升级一下,对return语句进行编码以隐藏关键字:

var a = [].constructor.constructor("\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0031")();

console.log(a);


再升级,将constructor字符也隐藏:

var a = []["\u0063\u006f\u006e\u0073\u0074\u0072\u0075\u0063\u0074\u006f\u0072"]["\u0063\u006f\u006e\u0073\u0074\u0072\u0075\u0063\u0074\u006f\u0072"]("\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0031")();

console.log(a);


还有更复杂的写法:

var $ = ["\u0061", "\u0062", "\u0063", "\u0064", "\u0065", "\u0066", "\u0067", "\u0068", "\u0069", "\u006a", "\u006b", "\u006c", "\u006d", "\u006e", "\u006f", "\u0070", "\u0071", "\u0072", "\u0073", "\u0074", "\u0075", "\u0076", "\u0077", "\u0078", "\u0079", "\u007a", "\u0028", "\u0029", "\u0027", "\u0022", "\u005b", "\u005d", "\u002e"];

var a = [][$[443650 ^ 443648] $[169829 ^ 169835] $[338738 ^ 338751] $[745099 ^ 745113] $[847761 ^ 847746] $[986395 ^ 986378] $[591407 ^ 591419] $[989467 ^ 989465] $[820242 ^ 820225] $[848420 ^ 848426] $[782593 ^ 782608]][$[972307 ^ 972305] $[406834 ^ 406844] $[838220 ^ 838209] $[317151 ^ 317133] $[799896 ^ 799883] $[655841 ^ 655856] $[333562 ^ 333550] $[745730 ^ 745728] $[843076 ^ 843095] $[151776 ^ 151790] $[832229 ^ 832244]]("\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0031")();

console.log(a);


这个方法的原理,在之前的文章《JS奇淫技巧:alert有几种写法?》一文中有详细讲解,有兴趣的朋友可以去翻看那篇文章。

以上所述技术,由JShaman团队提供,JShaman是专业的JS代码混淆加密服务提供方,本文实现的功能大多数已在JShaman官网提供。


到此时,还记的本文的标题吗?

请注意:

[][$[443650 ^ 443648] $[169829 ^ 169835] $[338738 ^ 338751] $[745099 ^ 745113] $[847761 ^ 847746] $[986395 ^ 986378] $[591407 ^ 591419] $[989467 ^ 989465] $[820242 ^ 820225] $[848420 ^ 848426] $[782593 ^ 782608]][$[972307 ^ 972305] $[406834 ^ 406844] $[838220 ^ 838209] $[317151 ^ 317133] $[799896 ^ 799883] $[655841 ^ 655856] $[333562 ^ 333550] $[745730 ^ 745728] $[843076 ^ 843095] $[151776 ^ 151790] $[832229 ^ 832244]]("\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0031")();

这是数值1。

这便是JS代码混淆加密的魅力,让别人无法看懂你的代码!让他人看到你的代码时,只能会发出“哇”的惊呼,而不敢轻易维护你的代码,无从下手啊。JS代码的安全性得到了大大的提升。

这些变态的写法,你能看懂几种呢?

或者你有什么新奇的手法?评论区交流一下吧。

  • 秦朝地方组织机构的特点(秦代县级机构组织架构继承自西周王廷)
  • 2024-09-30秦代县级机构组织架构继承自西周王廷上文中,我们已经讨论了秦国的县制由来,以及县吏的基本“两分”,更重要的是指出了“初为县有秩、令史”与商鞅变法后广泛设县的制度性联系,也就意味着,早在商鞅变法的时代,已经确立了“诸官”、“令史”分权的县。
  • 金卡戴珊的个人生活(风流多情的金卡戴珊)
  • 2024-09-30风流多情的金卡戴珊【作者:小娱兒】期待您的关注、转发和点赞,么么哒如果说妈妈Kris是卡戴珊家族的军师,那二姐kim(金·卡戴珊)就是第一颗重磅炸弹!以前Kim在大多数人眼里就只是一个“大屁股网红”但如今的Kim,不再。
  • 横店艺人是什么意思(横店介绍)
  • 2024-09-30横店介绍横店指横店影视城,而横店艺人则是指在横店拍摄影片的明星艺人们横店影视城位于浙江省金华市东阳市横店镇,处于江、浙、沪、闽、赣四小时交通旅游经济圈内自1996年以来,横店集团累计投入30个亿资金兴建广州街。
  • 印象最深的科幻故事有哪些(空间科学最亮的星)
  • 2024-09-30空间科学最亮的星赵九章人物简介  赵九章,浙江吴兴人,1907年出生于河南开封,我国杰出气象学家、地球物理和空间物理学家1955年被选为中国科学院学部委员(院士)  出身中医世家,幼年就读于私塾,预备从事文学在五四运。
  • 黑龙江三甲医院排名(来看看具体排名)
  • 2024-09-30来看看具体排名哈尔滨医科大学附属第一医院哈尔滨医科大学第一临床医学院始建于1949年,是一所三级甲等综合性医院2018年12月4日,被国家卫健委公布为首批肿瘤多学科诊疗试点医院学院拥有心血管内科、神经外科、普通外科。
  • 牛角梳送女朋友有什么意义(如果送她一份梳心如意)
  • 2024-09-30如果送她一份梳心如意木梳是一件寓意十分美好的物拾从魏晋开始,每位女子的梳妆盒内,都会有一把木梳这把梳子不仅有每日晨间洗漱打扮的用途,还被插于盘起的发髻上,当作发簪用苏轼就有一句诗,专门写了宋代女子以梳为簪:“山人醉后铁冠。
  • 糖糖宝和糖小宝(糖小宝和金大宝的烦恼生活第一集)
  • 2024-09-30糖小宝和金大宝的烦恼生活第一集今天是2020年5月26日我开始写我的第一篇文章了,这篇文章的内容是我和妹妹的生活,不多说了,开始写了我今天是我开学的第一天,在教室里上各种的课都得戴口罩,唉闷死我了现在连下课都得在教室里写作业,而且。
  • 吴氏十七届祭祖大会(世界吴氏宗亲恳亲大会)
  • 2024-09-30世界吴氏宗亲恳亲大会原创2017-02-19吴卫东吴氏网加入吴氏家族!吴氏网微信公众号:cwu2015无论您在哪里,只要您姓“吴”,请您先点击上面的蓝色字“吴氏网”,再点击“关注”,即可成功加入华夏吴氏大家庭“搭建寻根平。
  • 起亚k3和全新伊兰特同平台吗(终端价格相差近4万元)
  • 2024-09-30终端价格相差近4万元在每个月的轿车销量榜单中,几乎前15位中60%是合资紧凑型轿车选择一款家用型轿车,不但要实用、好开,经济更为重要,而合资紧凑型轿车最适合不过对于初入职场的年轻人,抑或是新婚的小两口,经济实用的合资紧凑。
  • 五五开斗鱼盛宴(德云色之师重聚虎牙)
  • 2024-09-30德云色之师重聚虎牙很多人说:“6324的弹幕文化领先直播5年,却只比西西卡快1s”,可以说如果没有6324的弹幕文化,我们现在的弹幕文化基本上就是五年前的弹幕文化!是6324引领的弹幕文化潮流,产生大量弹幕文化!而且创。
  • 武当秘拳三十六式口诀 武当内家秘传正宗36功
  • 2024-09-30武当秘拳三十六式口诀 武当内家秘传正宗36功武当三十六功乃武当镇山之宝,来自清末武当山道总徐本善大师其中绝技均来自手抄秘本,非常珍贵徐本善弱冠之年即拜王复邈、刘复空二位道长为师,承袭道门内丹秘功武当“明了真人”把徐本善培养成为武当山一代道宗,并。