2023年7月9日发(作者:)
某段x16进制和unicode加密与混淆js代码的解密与反加密
某天,在⿎捣⼀个ems系统,想⽤来做成新闻资讯类⽹站。弄了好多天,各个框架和结构都差不多了,重新调整了结构,⼀个偶然的机会,发现搜索框点击的时候不能⾃动清空先前的内容,于是想添加⼀段js代码去修改,找了半天,没有看到⼀个类似的⽹站通⽤js代码,倒是发现⼀个奇怪的js⽂件,并且是加密的,这肯定引起了我的兴趣哈。看看这段代码。
1. var _0xe2a1=ThinkOver(_0x31c5x2,_0x31c5x3){if(_0x31c5x2[_0xe2a1[0]]==_0xe2a1[1]){return ;} ;var _0x31c5x4=_0x31c5x2[_0xe2a1[3]][_0xe2a1[2]];var_0x31c5x5=document[_0xe2a1[6]](_0x31c5x4)[_0xe2a1[5]](_0xe2a1[4]);for(i=0;i<_0x31c5x5[_0xe2a1[7]];i++){if(i==_0x31c5x3){_0x31c5x2[_0xe2a1[0]]=_0xe2a1[1];document[_0xe2a1[6]](_0x31c5x4+_0xe2a1[10]+i)[_0xe2a1[9]][_0xe2a1[8]]=_0xe2a1[11];} else {_0x31c5x5[i][_0xe2a1[0]]=_0xe2a1[12];document[_0xe2a1[6]](_0x31c5x4+_0xe2a1[10]+i)[_0xe2a1[9]][_0xe2a1[8]]=_0xe2a1[13];} ;} ;} ;function b(){h=$(window)[_0xe2a1[14]]();t=$(document)[_0xe2a1[15]]();if(t>h){$(_0xe2a1[17])[_0xe2a1[16]]();} else {$(_0xe2a1[17])[_0xe2a1[18]]();} ;} ;$(document)[_0xe2a1[26]](function (_0x31c5x7){b();$(_0xe2a1[17])[_0xe2a1[19]](function (){$(document)[_0xe2a1[15]](0);} );$(_0xe2a1[25])[_0xe2a1[24]](function (){$(this)[_0xe2a1[21]](_0xe2a1[2],_0xe2a1[20]);$(_0xe2a1[22])[_0xe2a1[16]]();} ,function (){$(this)[_0xe2a1[21]](_0xe2a1[2],_0xe2a1[23]);$(_0xe2a1[22])[_0xe2a1[18]]();} );} );$(window)[_0xe2a1[27]](function (_0x31c5x7){b();} );⼀个js代码的解密并不难,难得是搞明⽩这些乱七⼋糟的是什么加密,难的是对那些进⾏了代码混淆使得可读性极差的代码的整理与翻译!很明显,上⾯这个代码进⾏了混淆!0xe2a1这类变量名搞得像蓝屏代码错误号,吓死⼈,⼀般⼈没认真看还真搞不明⽩这是些什么东西。⾸先我们搜索“_0xe2a1”,可以发现存在46个这种变量。我们将其命名为strone,全部替换之。_0x31c5x2,_0x31c5x3,_0x31c5x4,_0x31c5x5,_0x31c5x6,_0x31c5x7全是这些变量,可以跟随个⼈喜欢,换成喜欢的变量名。下⾯的就是混淆,使得不容易阅读代码。_0xe2a1的值才是加密的重点。有经验的程序员应当⼀眼就可以看出,这是我标题⾥⾯所说的Javascript x 16进制加密。这个解密⾮常简单,⽹上⽅法很多,直接⽤就可以写出明⽂。代码如下。
["x63x6Cx61x73x73x4Ex61x6Dx65","x61x63x74x69x76x65","x69x64","x70x61x72x65x6Ex74x4Ex6Fx64x65","x6Cx69","x67x65x74x451. var _0xc828=["x63x6Cx61x73x73x4Ex61x6Dx65","x61x63x74x69x76x65","x69x64","x70x61x72x65x6Ex74x4Ex6Fx64x65","x6Cx69","x67x65x74x452. for(i=0;i<_;i++){3. (i+"="+_0xc828[i]+"");4. }
把上⾯的代码放在html的之间运⾏就可以解密了,解密结果如下
1. 0=className1=active2=id3=parentNode4=li5=getElementsByTagName6=getElementById7=length8=display9=style10=C11=block12=normal13=none14=height15=scrollTo该模板尚未授权此站使⽤,请购买授权34=href解密后明码如下
1. var _0xe2a1 = ["className", "active", "id", "parentNode", "li", "getElementsByTagName", "getElementById", "length", "display", "style", "C", "block","normal", "none", "height", "scrollTop", "show", "#gotop", "hide", "click", "code_hover", "attr", "#code_img", "code", "hover", "#code", "ready", "scroll","domain", "", "indexOf", "127.0.0.1", "localhost", "买种⼦就上百蔬⽹", "href", ""];2.
3. function ThinkOver(_0x31c5x2, _0x31c5x3) {4. if (_0x31c5x2[_0xe2a1[0]] == _0xe2a1[1]) {5. return;6. };7. var _0x31c5x4 = _0x31c5x2[_0xe2a1[3]][_0xe2a1[2]];8. var _0x31c5x5 = document[_0xe2a1[6]](_0x31c5x4)[_0xe2a1[5]](_0xe2a1[4]);9. for (i = 0; i < _0x31c5x5[_0xe2a1[7]]; i++) { if (i == _0x31c5x3) { _0x31c5x2[_0xe2a1[0]] = _0xe2a1[1]; document[_0xe2a1[6]](_0x31c5x4 +_0xe2a1[10] + i)[_0xe2a1[9]][_0xe2a1[8]] = _0xe2a1[11]; } else { _0x31c5x5[i][_0xe2a1[0]] = _0xe2a1[12]; document[_0xe2a1[6]](_0x31c5x4 +_0xe2a1[10] + i)[_0xe2a1[9]][_0xe2a1[8]] = _0xe2a1[13]; }; }; }; function b() { h = $(window)[_0xe2a1[14]](); t = $(document)[_0xe2a1[15]](); if (t > h){10. $(_0xe2a1[17])[_0xe2a1[16]]();11. } else {12. $(_0xe2a1[17])[_0xe2a1[18]]();13. };14. };15. $(document)[_0xe2a1[26]](function(_0x31c5x7) {16. b();17. $(_0xe2a1[17])[_0xe2a1[19]](function() {18. $(document)[_0xe2a1[15]](0);19. });20. $(_0xe2a1[25])[_0xe2a1[24]](function() {21. $(this)[_0xe2a1[21]](_0xe2a1[2], _0xe2a1[20]);22. $(_0xe2a1[22])[_0xe2a1[16]]();23. }, function() {24. $(this)[_0xe2a1[21]](_0xe2a1[2], _0xe2a1[23]);25. $(_0xe2a1[22])[_0xe2a1[18]]();26. });27. });28. $(window)[_0xe2a1[27]](function(_0x31c5x7) {29. b();30. });这个解密和上⾯的html解密⼀样。”你js真的很diaome?来试试,⼤⽓哦”,不同的是他将那些原来链接到⼀起,堆砌成⼀句话的js代码进⾏了结构整理,使得结构清晰,很容易看懂,但是如果使⽤您⾃⼰的代码混淆,你也看不出来吧?可以看到解密出来的结果中有⽹址和提⽰,因为他涉及到⼀些⽹站需要的js切换代码,所以不能完全删除这个js⽂件,如果我们把这些内容替换成我们⾃⼰的内容,再加密放回去,会不会很爽?就像前⾯说的,搞明⽩了是什么加密,就可以进⾏加密与反加密。仔细查看_0xe2a1变量,会发现他是由很多双引号括起来的多个值的⼀个字串,熟悉的知道这是x 16进制加密,他的加解密代码如下
1. 是否启⽤x加密 这段代码猛看上去⼤部分都是x 16进制加密,其实在⾥⾯明显还有⼀段代码他是不同的。
1. u8BE5u6A21u677Fu5C1Au672Au6388u6743u6B64u7AD9u4F7Fu7528x2Cu8BF7u8D2Du4E70u6388u6743换成⾃⼰想要的东东,替换回去,就可以弄成我们想要的效果了。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688894158a181783.html
评论列表(0条)