代码案例:
var _0xodR='jsjiami.com.v6',_0xodR_=function(){return['_0xodR'],_0x4311=[_0xodR,'TMO+w51jPALDkw==','w6LDqcOhw7PCqQ==','I8OkP0zDs8KF','fyjCv8OB','CMOdEk5b','OnthccOZHXXDoA==','UnDCrcKvw61VAsKNw7TCoRN8wpkhFVzCgA40woV6wrTCtMOXbXo=','CMOiwohCXsKhw4PDq8KKw5MbPMOnWVjCpzQJw6t0','woVfIsOiw6w=','BMOLFFnDsw==','bTnCscORMgQ=','TEEIjEWesjxMidwKyMamQi.com.v6=='];}();if(function(_0x8b258c,_0x327557,_0x139c24){function _0x597bb6(_0x4fb83f,_0x11ca90,_0x195cb6,_0x59118d,_0x29fcaf,_0xebc496){_0x11ca90=_0x11ca90>>0x8,_0x29fcaf='po';var _0x33469c='shift',_0x190c3c='push',_0xebc496='';if(_0x11ca90
开始:
首先,我们来看整段代码的结构:
var _0xodR = 'jsjiami.com.v6';
var _0xodR_ = function () {
return ['_0xodR'], _0x4311 = [
_0xodR, 'TMO+w51jPALDkw==', 'w6LDqcOhw7PCqQ==', 'I8OkP0zDs8KF', 'fyjCv8OB',
'CMOdEk5b', 'OnthccOZHXXDoA==', 'UnDCrcKvw61VAsKNw7TCoRN8wpkhFVzCgA40woV6wrTCtMOXbXo=',
'CMOiwohCXsKhw4PDq8KKw5MbPMOnWVjCpzQJw6t0', 'woVfIsOiw6w=', 'BMOLFFnDsw==',
'bTnCscORMgQ=', 'TEEIjEWesjxMidwKyMamQi.com.v6=='
];
}();
// Step 1: 定义变量 _0xodR,赋值为字符串 'jsjiami.com.v6'
var _0xodR = 'jsjiami.com.v6';
// Step 2: 定义函数 _0xodR_,函数体为空,返回一个包含一个元素 '_0xodR' 的数组
var _0xodR_ = function () {
return ['_0xodR'], _0x4311 = [
_0xodR, 'TMO+w51jPALDkw==', 'w6LDqcOhw7PCqQ==', 'I8OkP0zDs8KF', 'fyjCv8OB',
'CMOdEk5b', 'OnthccOZHXXDoA==', 'UnDCrcKvw61VAsKNw7TCoRN8wpkhFVzCgA40woV6wrTCtMOXbXo=',
'CMOiwohCXsKhw4PDq8KKw5MbPMOnWVjCpzQJw6t0', 'woVfIsOiw6w=', 'BMOLFFnDsw==',
'bTnCscORMgQ=', 'TEEIjEWesjxMidwKyMamQi.com.v6=='
];
}();
以上是代码的前两个步骤,主要是定义了两个变量 _0xodR
和 _0xodR_
。其中 _0xodR
被赋值为字符串 'jsjiami.com.v6'
,而 _0xodR_
是一个函数,返回一个包含单个元素 '_0xodR'
的数组。请注意,'_0xodR'
中的
字符是一个特殊字符,可能影响代码的执行和解读。
接下来,我们继续分析代码的其余部分:
if (function (_0x8b258c, _0x327557, _0x139c24) {
// Step 3: 使用了一个立即执行函数
!function (_0x327557) {
for (; --_0x327557; ) {
// Step 4: 对变量 _0x8b258c 进行一系列位运算操作
_0x8b258c['push'](_0x8b258c['shift']());
}
}(++_0x327557);
}(/* 数字参数1 */, /* 数字参数2 */),
Step 3 中,代码使用了一个立即执行函数,其参数为两个数字。这个立即执行函数在执行过程中,会对参数 _0x8b258c
进行一系列位运算操作。具体操作的目的和含义需要进一步解析 _0x8b258c
变量的定义。
继续分析代码的下一部分:
function (_0x4688b3, _0x33d81e) {
// Step 5: 使用了一个立即执行函数
var _0x4e9d98 = function (_0x8b258c) {
// Step 6: 在函数内部定义了一个变量 _0x8b258c,并赋值为参数值
while (--_0x8b258c) {
// Step 7: 对变量 _0x4688b3 进行一系列位运算操作
_0x4688b3['push'](_0x4688b3['shift']());
}
};
// Step 8: 调用函数 _0x4e9d98,传入参数 _0x33d81e
_0x4e9d98(++_0x33d81e);
}(/* 数字参数1 */, /* 数字参数2 */);
在 Step 5 中,又出现了一个立即执行函数,该函数接受两个数字作为参数。函数内部定义了一个函数 _0x4e9d98
,该函数接受一个参数 _0x8b258c
,并进行一系列位运算操作。
在 Step 7 中,对变量 _0x4688b3
进行了一系列位运算操作。与之前的 _0x8b258c
相关的操作类似,这里需要进一步解析 _0x4688b3
变量的定义。
以上是对jsjiami.v6加密结构的简单分析,今天就写这么多,有需要点点关注收藏后续继续跟进。
如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我、到我们的官网找客服号都可以。
如遇自己js加密源码加密后没备份,可以找我们解决解出恢复源码,任何加密都可以
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: RabbitMQ消费消息方法basicConsume
RabbitMQ-消费消息 Address[] addresses = new Address[] {new Address(IP_ADDRESS, PORT)}; /** * 1.建立连接工厂 */ ConnectionFactory connectio…