先贴代码

今天来教大家怎么解密别人加密的js,为了方便调试,我们加密的例子很简单 console.log('magua');

var _0xodQ='jsjiami.com.v6',_0xodQ_=['‮_0xodQ'],_0x4dca=[_0xodQ,'wpnCm30=','jqZsrjATDtAiamil.fcom.vTD6Mp=='];if(function(_0x3e36fe,_0x55b35c,_0x385d02){function _0x2a493b(_0x5b0185,_0x2bff71,_0x2d62b1,_0x5dc4a4,_0x1c239e,_0x1ece41){_0x2bff71=_0x2bff71>>0x8,_0x1c239e='po';var _0x4f9849='shift',_0x25f1aa='push',_0x1ece41='‮';if(_0x2bff71<_0x5b0185){while(--_0x5b0185){_0x5dc4a4=_0x3e36fe[_0x4f9849]();if(_0x2bff71===_0x5b0185&&_0x1ece41==='‮'&&_0x1ece41['length']===0x1){_0x2bff71=_0x5dc4a4,_0x2d62b1=_0x3e36fe[_0x1c239e+'p']();}else if(_0x2bff71&&_0x2d62b1['replace'](/[qZrATDtAlfTDMp=]/g,'')===_0x2bff71){_0x3e36fe[_0x25f1aa](_0x5dc4a4);}}_0x3e36fe[_0x25f1aa](_0x3e36fe[_0x4f9849]());}return 0x1013a8;};return _0x2a493b(++_0x55b35c,_0x385d02)>>_0x55b35c^_0x385d02;}(_0x4dca,0xff,0xff00),_0x4dca){_0xodQ_=_0x4dca['length']^0xff;};function _0x245f(_0x4ca09c,_0x166f45){_0x4ca09c=~~'0x'['concat'](_0x4ca09c['slice'](0x1));var _0x17ae61=_0x4dca[_0x4ca09c];if(_0x245f['uJjjRc']===undefined){(function(){var _0x5b7cb7=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x15268a='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x5b7cb7['atob']||(_0x5b7cb7['atob']=function(_0x486ab5){var _0x6b8ef3=String(_0x486ab5)['replace'](/=+$/,'');for(var _0x5c5f9d=0x0,_0x17c6c5,_0x563905,_0x5df67d=0x0,_0x47688d='';_0x563905=_0x6b8ef3['charAt'](_0x5df67d++);~_0x563905&&(_0x17c6c5=_0x5c5f9d%0x4?_0x17c6c5*0x40+_0x563905:_0x563905,_0x5c5f9d++%0x4)?_0x47688d+=String['fromCharCode'](0xff&_0x17c6c5>>(-0x2*_0x5c5f9d&0x6)):0x0){_0x563905=_0x15268a['indexOf'](_0x563905);}return _0x47688d;});}());function _0x34ec75(_0x5f1f12,_0x166f45){var _0x214a1f=[],_0x1fb9f9=0x0,_0x955dc,_0x1ff5d2='',_0x1f59d5='';_0x5f1f12=atob(_0x5f1f12);for(var _0x60941f=0x0,_0xf4689c=_0x5f1f12['length'];_0x60941f<_0xf4689c;_0x60941f++){_0x1f59d5+='%'+('00'+_0x5f1f12['charCodeAt'](_0x60941f)['toString'](0x10))['slice'](-0x2);}_0x5f1f12=decodeURIComponent(_0x1f59d5);for(var _0x4a70ae=0x0;_0x4a70ae<0x100;_0x4a70ae++){_0x214a1f[_0x4a70ae]=_0x4a70ae;}for(_0x4a70ae=0x0;_0x4a70ae<0x100;_0x4a70ae++){_0x1fb9f9=(_0x1fb9f9+_0x214a1f[_0x4a70ae]+_0x166f45['charCodeAt'](_0x4a70ae%_0x166f45['length']))%0x100;_0x955dc=_0x214a1f[_0x4a70ae];_0x214a1f[_0x4a70ae]=_0x214a1f[_0x1fb9f9];_0x214a1f[_0x1fb9f9]=_0x955dc;}_0x4a70ae=0x0;_0x1fb9f9=0x0;for(var _0x2d95ac=0x0;_0x2d95ac<_0x5f1f12['length'];_0x2d95ac++){_0x4a70ae=(_0x4a70ae+0x1)%0x100;_0x1fb9f9=(_0x1fb9f9+_0x214a1f[_0x4a70ae])%0x100;_0x955dc=_0x214a1f[_0x4a70ae];_0x214a1f[_0x4a70ae]=_0x214a1f[_0x1fb9f9];_0x214a1f[_0x1fb9f9]=_0x955dc;_0x1ff5d2+=String['fromCharCode'](_0x5f1f12['charCodeAt'](_0x2d95ac)^_0x214a1f[(_0x214a1f[_0x4a70ae]+_0x214a1f[_0x1fb9f9])%0x100]);}return _0x1ff5d2;}_0x245f['WbDzHT']=_0x34ec75;_0x245f['ZIlezY']={};_0x245f['uJjjRc']=!![];}var _0x3a092f=_0x245f['ZIlezY'][_0x4ca09c];if(_0x3a092f===undefined){if(_0x245f['ROPEwu']===undefined){_0x245f['ROPEwu']=!![];}_0x17ae61=_0x245f['WbDzHT'](_0x17ae61,_0x166f45);_0x245f['ZIlezY'][_0x4ca09c]=_0x17ae61;}else{_0x17ae61=_0x3a092f;}return _0x17ae61;};console[_0x245f('‫0',')*m#')]('magua');;_0xodQ='jsjiami.com.v6';

格式化一下,看看代码结构

var _0xodR = 'jsjiami.com.v6', _0xodR_ = ['‮_0xodR'],_0x2190 = [_0xodR, 'wrbDvsKBwo4L', 'DAdo', 'jsjwiamHDFYi.cuYZlwom.CXvf6ge=='];
if (function (_0x2495fa, _0x3bf006, _0x100650) {function _0x3b33c5(_0x54dff1, _0x164ebe, _0x32273e, _0x285dfc, _0x17a2c3, _0x7c092c) {_0x164ebe = _0x164ebe >> 0x8, _0x17a2c3 = 'po';var _0x550248 = 'shift', _0x56e977 = 'push', _0x7c092c = '‮';if (_0x164ebe < _0x54dff1) {while (--_0x54dff1) {_0x285dfc = _0x2495fa[_0x550248]();if (_0x164ebe === _0x54dff1 && _0x7c092c === '‮' && _0x7c092c['length'] === 0x1) {_0x164ebe = _0x285dfc, _0x32273e = _0x2495fa[_0x17a2c3 + 'p']();} else if (_0x164ebe && _0x32273e['replace'](/[wHDFYuYZlwCXfge=]/g, '') === _0x164ebe) {_0x2495fa[_0x56e977](_0x285dfc);}}_0x2495fa[_0x56e977](_0x2495fa[_0x550248]());}return 0x1013a4;}return _0x3b33c5(++_0x3bf006, _0x100650) >> _0x3bf006 ^ _0x100650;
}(_0x2190, 0x1c3, 0x1c300), _0x2190) {_0xodR_ = _0x2190['length'] ^ 0x1c3;
}function _0x2e58(_0xb479be, _0x4bb6ab) {_0xb479be = ~~'0x'['concat'](_0xb479be['slice'](0x1));var _0x1ce7ab = _0x2190[_0xb479be];if (_0x2e58['ZnyOlV'] === undefined) {(function () {var _0x28d2fd = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this;var _0x5c3961 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x28d2fd['atob'] || (_0x28d2fd['atob'] = function (_0x363646) {var _0x3b7cce = String(_0x363646)['replace'](/=+$/, '');for (var _0x13baec = 0x0, _0x5e5845, _0x3c5167, _0x31fd7a = 0x0, _0x4462fe = ''; _0x3c5167 = _0x3b7cce['charAt'](_0x31fd7a++); ~_0x3c5167 && (_0x5e5845 = _0x13baec % 0x4 ? _0x5e5845 * 0x40 + _0x3c5167 : _0x3c5167, _0x13baec++ % 0x4) ? _0x4462fe += String['fromCharCode'](0xff & _0x5e5845 >> (-0x2 * _0x13baec & 0x6)) : 0x0) {_0x3c5167 = _0x5c3961['indexOf'](_0x3c5167);}return _0x4462fe;});}());function _0x175702(_0x3b5cdb, _0x4bb6ab) {var _0x5012ac = [], _0x5cc4d8 = 0x0, _0x11c3a0, _0x36393a = '', _0x48a116 = '';_0x3b5cdb = atob(_0x3b5cdb);for (var _0x7d3665 = 0x0, _0x5ce8fb = _0x3b5cdb['length']; _0x7d3665 < _0x5ce8fb; _0x7d3665++) {_0x48a116 += '%' + ('00' + _0x3b5cdb['charCodeAt'](_0x7d3665)['toString'](0x10))['slice'](-0x2);}_0x3b5cdb = decodeURIComponent(_0x48a116);for (var _0x496c04 = 0x0; _0x496c04 < 0x100; _0x496c04++) {_0x5012ac[_0x496c04] = _0x496c04;}for (_0x496c04 = 0x0; _0x496c04 < 0x100; _0x496c04++) {_0x5cc4d8 = (_0x5cc4d8 + _0x5012ac[_0x496c04] + _0x4bb6ab['charCodeAt'](_0x496c04 % _0x4bb6ab['length'])) % 0x100;_0x11c3a0 = _0x5012ac[_0x496c04];_0x5012ac[_0x496c04] = _0x5012ac[_0x5cc4d8];_0x5012ac[_0x5cc4d8] = _0x11c3a0;}_0x496c04 = 0x0;_0x5cc4d8 = 0x0;for (var _0x1833e3 = 0x0; _0x1833e3 < _0x3b5cdb['length']; _0x1833e3++) {_0x496c04 = (_0x496c04 + 0x1) % 0x100;_0x5cc4d8 = (_0x5cc4d8 + _0x5012ac[_0x496c04]) % 0x100;_0x11c3a0 = _0x5012ac[_0x496c04];_0x5012ac[_0x496c04] = _0x5012ac[_0x5cc4d8];_0x5012ac[_0x5cc4d8] = _0x11c3a0;_0x36393a += String['fromCharCode'](_0x3b5cdb['charCodeAt'](_0x1833e3) ^ _0x5012ac[(_0x5012ac[_0x496c04] + _0x5012ac[_0x5cc4d8]) % 0x100]);}return _0x36393a;}_0x2e58['ijKboh'] = _0x175702;_0x2e58['VAzepW'] = {};_0x2e58['ZnyOlV'] = !![];}var _0x2d1a4a = _0x2e58['VAzepW'][_0xb479be];if (_0x2d1a4a === undefined) {if (_0x2e58['ZMLlec'] === undefined) {_0x2e58['ZMLlec'] = !![];}_0x1ce7ab = _0x2e58['ijKboh'](_0x1ce7ab, _0x4bb6ab);_0x2e58['VAzepW'][_0xb479be] = _0x1ce7ab;} else {_0x1ce7ab = _0x2d1a4a;}return _0x1ce7ab;
}console[_0x2e58('‮0', 't1KB')](_0x2e58('‫1', '0Yl$'));
_0xodR = 'jsjiami.com.v6';

js解密一定要有良好的心理素质,看到一堆代码不要慌,我们慢慢分析,先把第一个代码块拎出来分析,看上去这些变量名就是经过了js编码和解码处理

_0x4dca是一个字符串数组,有几个元素看上去是Base64编码后的样子。我试了下,解出来都是乱码。

然后下边一大串代码,仔细看的话其实整个函数返回的是一个布尔类型的值作为if的判断条件。

我们把这个函数单独拎出来,代码就变成下边这样了。

const v = function(_0x3e36fe, _0x55b35c, _0x385d02) {function _0x2a493b(_0x5b0185, _0x2bff71, _0x2d62b1, _0x5dc4a4, _0x1c239e, _0x1ece41) {_0x2bff71 = _0x2bff71 >> 0x8, _0x1c239e = 'po';var _0x4f9849 = 'shift',_0x25f1aa = 'push',_0x1ece41 = '‮';if (_0x2bff71 < _0x5b0185) {while (--_0x5b0185) {_0x5dc4a4 = _0x3e36fe[_0x4f9849]();if (_0x2bff71 === _0x5b0185 && _0x1ece41 === '‮' && _0x1ece41['length'] === 0x1) {_0x2bff71 = _0x5dc4a4, _0x2d62b1 = _0x3e36fe[_0x1c239e + 'p']();} else if (_0x2bff71 && _0x2d62b1['replace'](/[qZrATDtAlfTDMp=]/g, '') === _0x2bff71) {_0x3e36fe[_0x25f1aa](_0x5dc4a4);}}_0x3e36fe[_0x25f1aa](_0x3e36fe[_0x4f9849]());}return 0x1013a8;};return _0x2a493b(++_0x55b35c, _0x385d02) >> _0x55b35c ^ _0x385d02;
}(_0x4dca, 0xff, 0xff00);
if (v, _0x4dca) {_0xodQ_ = _0x4dca['length'] ^ 0xff;
}

我们先看整体结构有什么变化,函数和if分离了,if中有2个值,逗号分割了,这时候是否执行函数内的代码块由最后一个参数决定,也就是_0x4dca。而上边代码中_0x4dca是一个数组,那么if就永远为true,if里的代码也就是永远都执行的了。我们先看下这串代码做了什么

_0x4dca = ['jsjiami.com.v6', 'wpnCm30=', 'jqZsrjATDtAiamil.fcom.vTD6Mp=='];
_0xodQ_ = _0x4dca['length'] ^ 0xff;
// 也就是
_0xodQ_ = 3 ^ 255 = 252;

上边的函数体也同理,都可以用这个方法一步步解出来,看看这个方法的作用是什么。这是最简单也是最慢的解密方式。

整体解密思路如下

1.先格式化

2.看整体代码结构

3.将大的加密代码剖析成一个个小的代码块

4.挨个解密一个个小的代码块,明白每个小代码块的业务目的

5.把所有解密的结果汇总做总结

如果还有什么疑问可以评论在下方我随时回答。

----------分享一个好用的js代码解密工具--------

一般的加密能直接解出来,难一点的加密解完后比之前阅读好很多,难一点的加密可以先在线解密再自己人工解密。

www.jsjiami.com

JS解密-JS在线解密-JS脚本解密-JS格式化去注释-JS美化 - [JavaScript加密]

分享一种最简单的JS解密技巧(sojson.v6解密)相关推荐

  1. 分享一种超简单的js解密方法

    加密代码如下 eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a ...

  2. 怎么给照片换背景颜色?分享几种非常简单的操作方法

    照片的背景颜色怎么更换呢?如果我们想要发布一张自拍照并想要突出自己的服装,可以更改背景颜色,使服装更加突出,更受关注.还有很多小伙伴的证件照背景颜色不符合要求,需要更换背景色,但是怎么才能做到呢?给大 ...

  3. 视频剪辑器都有哪些?分享几种操作简单的视频剪辑工具

    通过剪辑视频,可以将视频中的无用镜头和重复内容去掉,使得视频更加紧凑,节奏更加流畅,提高观看体验.在现今的快节奏社会,观众对于时间的精打细算,因此,视频的剪辑显得尤为重要.如果视频过于冗长,观众会感到 ...

  4. 怎么将录音转换成文字?分享四种简单好用的转换方法

    录音转换成文字应该怎么做呢?如果你需要记录一次会议的内容,录音转文字软件是一个非常方便的工具.通过将录音转换成文字,你可以更容易地跟进会议的讨论和行动项,并且能够更方便地分享会议内容给其他人.很多小伙 ...

  5. 如何自己制作头像?分享两种简单易制作头像的方法

    想要自己制作头像应该怎么做呢?随着社交媒体的发展,头像已经成为了个人或品牌在社交媒体平台上的重要组成部分.大家想要制作自己的头像可以更好地与朋友互动,例如在聊天应用程序中使用自己的头像,或者在社交媒体 ...

  6. 人像抠图怎么抠出来?分享几种抠图小妙招

    图片中的人像怎么抠出来呢?很多小伙伴在日常中会喜欢拍照,对于拍出来的照片背景如果不满意的话,我们可以将照片中的人像给抠出来进行换背景,也有很多小伙伴喜欢使用搞怪背景来做出一些有趣的效果,但是这些都是需 ...

  7. C++运用类函数创造对象,求自定义边长的长方形的周长和面积(分享两种方法)

    利用类与对象来自定义长方形长和宽进行求一个矩形的周长和面积: 1.首先分享一种最简单的方法,在class类内进行周长与面积的求解,利用类内可以访问private成员数据的特征,在public里定义di ...

  8. 证件照怎么制作?分享几种证件照生成器

    怎么制作出证件照呢?自己制作证件照可以带来许多帮助.传统上,为了得到符合规定的证件照,人们需要前往照相馆等地方,又费时又费力.而自己制作证件照可以在家中或办公室等地方方便快捷地完成,非常的简单方便,那 ...

  9. 图片中的人物怎么抠出来?分享几种好用抠图方法

    怎么把图片中的人物给抠出来呢?对于广告.海报等宣传材料,抠出图片中的人物可以使宣传信息更加突出.通过将人物抠出并放置在适当位置,可以吸引更多的注意力.还有很多小伙伴也喜欢把自己的照片人像抠出来,进行换 ...

最新文章

  1. HANA数据库为何如此之快
  2. boost:stl概念检查的测试程序
  3. SAP Spartacus元素被选中后,focus颜色的css实现
  4. BZOJ 2440: [中山市选2011]完全平方数
  5. 代码重构的方法和经验_关于烂代码优化重构的几点经验
  6. 安卓能硬改的手机机型_手机后盖材质,金属比塑料的好,玻璃比金属的好,是这样么?...
  7. php codesniffer 代码规范,规范三:PHP_CodeSniffer 辅佐代码规范
  8. 计算机实验室工作案例,2011年计算机学院实验室工作计划.
  9. Python之 while循环
  10. Istio 组件详解
  11. 离合器膜片弹簧的优化设计matlab,基于matlab目标函数的建立优化离合器膜片弹簧的设计研究.doc...
  12. 京瓷打印机p5026cdn_京瓷ECOSYS P5026cdn驱动
  13. 提问的艺术,原文链接
  14. xshell功能大全(上)
  15. element ui字段_ui备忘单下拉字段
  16. iPhone如何开启头部追踪功能 iPhone头部追踪功能使用方法
  17. Java8函数式接口与Lambda表达式
  18. [机器学习] SSE,MSE,RMSE,R-square指标讲解
  19. Gridea+Coding Page个人网站搭建
  20. 不联网计算机软件升级,不能联网的电脑如何升级病毒库

热门文章

  1. 网络爬虫——Jsoup
  2. 教你学会塔罗免费占卜十八招
  3. clientX,screenX,pageX,offsetX的区别
  4. mysql生成固定位数随机数_mysql生成指定位数的随机数
  5. 放不下的原理_分开后表面坚定不移,内心始终放不下的四个星座
  6. vue-router和location.href的用法区别是什么?
  7. 中国汽车销量9月份分析数据和猜想
  8. 一张表可以有多少个主键
  9. 005-webbuilder应用-访问数据库-basic-dialog-edit
  10. 不是吧,谷歌浏览器也有问题?连CSND都没有逃过的厄运?两个元素之间明明没有间距,哪来的迷之白线?高分屏的DPI设置引发的血案