逆向技术学习与研究之 coco 漫画

前言

遇事不决看刑法

2021 年 3 月 1 日开始生效的《中华人民共和国刑法修正案(十一)》:

二十、将刑法第二百一十七条修改为:“以营利为目的,有下列侵犯著作权或者与著作权有关的权利的情形之一,违法所得数额较大或者有其他严重情节的,处三年以下有期徒刑,并处或者单处罚金;违法所得数额巨大或者有其他特别严重情节的,处三年以上十年以下有期徒刑,并处罚金:
“(一)未经著作权人许可,复制发行、通过信息网络向公众传播其文字作品、音乐、美术、视听作品、计算机软件及法律、行政法规规定的其他作品的;
“(二)出版他人享有专有出版权的图书的;
“(三)未经录音录像制作者许可,复制发行、通过信息网络向公众传播其制作的录音录像的;
“(四)未经表演者许可,复制发行录有其表演的录音录像制品,或者通过信息网络向公众传播其表演的;
“(五)制作、出售假冒他人署名的美术作品的;
“(六)未经著作权人或者与著作权有关的权利人许可,故意避开或者破坏权利人为其作品、录音录像制品等采取的保护著作权或者与著作权有关的权利的技术措施的。”

二十一、将刑法第二百一十八条修改为:“以营利为目的,销售明知是本法第二百一十七条规定的侵权复制品,违法所得数额巨大或者有其他严重情节的,处五年以下有期徒刑,并处或者单处罚金。”

然后开始

起初是我姐突然让我帮忙找下《天官赐福》的漫画,看了下现在的版权在 阿 B 手里。
我寻思应该是个大会员的事吧,一看跟大会员没有一毛钱关系,阿 B 的漫画站是独立运营的,行 8。
免费到 18 话,《天官赐福》只支持整卷购买,而且想付费还要必须下手机 APP,您配钥匙吗。

首先我不是美化自己的行为,我以个人娱乐为目的使用盗版虽然没有犯罪,但根据普世价值观显然是不道德的行为。
我就是盗版狗,该骂就骂。

接着我再说我的观点,动漫之家被高限处罚还是上个月的事(这里腾讯新闻用看热闹不嫌事大的语气相当戏谑地陈述了相关事件)。
我这里就不阴谋论「肯定是阿 B 举报的」了,B 漫的吃相继承了阿 B 一贯的「优良」历史传统,就凭你这个吃相,我说「肯定不关阿 B 的事我们小破站是无辜的白莲花」不知道有没有人会信。

字幕组

字幕组是一个灰色地带,但不管怎么灰色,「购入图源 / 扫图 / 翻译 / 修图 / 嵌字」整套流程走下来也不是什么轻松的活,有时候确实有金主赞助,但很多时候字幕组都是用爱发电的,硬要算的话人家怎么说也是公益组织。
白嫖归白嫖,但实际跟钱其实关系不大,大家更在乎的都是内容,你画得不好看谁 TM 闲得蛋疼给你汉化;画一堆厕纸倒贴钱请人看,人家都未必愿意抽出这个时间。
最典型的例子:《异世界叔叔》在动漫之家反响很好,于是字幕组去联系的作者,跟他说中国有很多读者喜欢你的漫画,但我们就是一群屁民没那个能力帮你正规引进,能不能弄个途径方便我们打钱。
所以在我看来,字幕组是对原作者是寄生关系,但大部分时候是迫于无奈(「一刀切 = 懒政」是中央定性的,不是我乱说的。但我们就是不做分级制度ᕕ( ᐛ )ᕗ有可能影响到未成年就是一刀切),而且有时候是能够反哺原作者的。因为对我们这代人来说,给当年的情怀「补票」想必是一件很普遍的雅事了。

阿 B 的吃相

B 漫先是砸钱拿下人气高的漫画版权(还不用我们自己出市场调查的成本,反正你们动漫之家有现成的排行榜。商业道德?什么商业道德,能吃吗),然后堂而皇之地把字幕组的用爱发电的成品偷过去了,反正你们都已经在夹缝里求生存了,你小小字幕组敢跟我们对着干吗。( ˇωˇ)鲁迅知道你们是这样用「拿来主义」的吗?
被声讨之后,B 漫做了一个更离谱的操作,它把原汉化组精心翻译校对的字幕涂了,然后用机翻重新汉化了一遍,机翻的质量网上很多评价我就不说了。这套操作背后的商业逻辑是「反正我们全网独家,爱看看不看滚」。根据这套逻辑,所以 B 漫的定价也是相当放飞自我的,颇有破罐破摔的意思:我摊牌了,我不装了,我就是吃相难看,你能怎么着吧。
B 漫具体是怎么起家的,即使陈叔叔公关这一块拿捏得再死,互联网也是有记忆的,更多详情有兴趣可以自己搜。

盗版站

盗版怎么洗都洗不白,看盗版是不道德的,盗版站更不是什么好东西。
他们以提供免费资源为饵,吸引因为各种原因不想付费的用户来观看,靠(擦边球或者直球)违法的广告攫取私益。
这种行为更是明确触犯了上面提到的第二百一十七条刑法。

所以这件事三方都不是什么好东西,版权方(你 B)、盗版站、使用盗版的我。

正文

科技伦理捋清楚了,我们正式开始。
俗话说得好「白嫖者人恒嫖之」,我嫖盗版站唯一的心理包袱是「我正在使用盗版」。
这次的受害者是「COCO 漫画」(曾用名「OH 漫画」、「One 漫画」)。
逆向思路参考了:
coco漫画获取图片下载链接js逆向分析 @2020.11.26
tachiyomi 的扩展插件源码 @2021.1.5

前菜

coco 漫画 js 逆向分析》这篇博文已经有些过时了,目前最新的加密方式已经针对这个逆向过程做出了改进。
最明显的,加入了反调试功能,只要 F12 打开控制台,js 会自动暂停(进入断点 debug 模式),即使手动点击继续,还是会无限重复暂停。
用常规的调试手段,右键行号选择 Never pause here 也无法破解。

查看关键 js custom.js 可以发现这样一段代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//前略

function devmodedetect() {
    if (useDevModeDetect && plantformIsComputer()) {
        window[__Oxb02b6[0x16]][__Oxb02b6[0x15]] = __Oxb02b6[0x17]
    }
}

//中略

!function() {
    var _0xb51bx10 = 50;
    var _0xb51bx11 = false;
    setInterval(function() {
        var _0xb51bx12 = new Date();
        debugger ;if (new Date() - _0xb51bx12 > _0xb51bx10) {
            _0xb51bx11 = true;
            devmodedetect()
        } else {
            _0xb51bx11 = false
        }
    }, 500)
}();

//后略

__Oxb02b6 是文件开头定义的数组常量:

1
var __Oxb02b6 = ["\u6D4F\u89C8\u5668\u5C4F\u853D\u4E86\u91CD\u8981\u5143\u4EF6\u65E0\u6CD5\u52A0\u8F7D\u9875\u9762\uFF0C\u8BF7\u786E\u4FDD\u6CA1\u6709\u5F00\u542F\u4EFB\u4F55\u5C0F\u63D2\u4EF6\uFF0C\u5F71\u54CD\u9875\u9762\u52A0\u8F7D\uFF01\x20\x20\x20\u5B9E\u5728\u4E0D\u884C\u8BF7\u66F4\u6362\u6D4F\u89C8\u5668\uFF01\x20\u63A8\u8350\x20\x55\x43\x2F\u641C\u72D7\u6D4F\u89C8\u5668\u3002\x20\u6709\u7F51\u53CB\u53CD\u9988\x6E\x6F\x64\x33\x32\x20\u4E4B\u7C7B\u7684\u6740\u8F6F\u4E5F\u4F1A\u5C4F\u853D\u4E00\u4E9B\u4E1C\u897F", "\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65", "\x75\x73\x65\x72\x41\x67\x65\x6E\x74", "\x6D\x61\x74\x63\x68", "\x71\x75\x61\x72\x6B", "\u4E0D\u652F\u6301\u7684\u6D4F\u89C8\u5668\uFF0C\u8BF7\u66F4\u6362\uFF01", "\x68\x74\x6D\x6C", "\x62\x6F\x64\x79", "\x70\x6C\x61\x74\x66\x6F\x72\x6D", "\x6E\x61\x76\x69\x67\x61\x74\x6F\x72", "\x4D\x61\x63\x69\x6E\x74\x6F\x73\x68", "\x4D\x61\x63\x49\x6E\x74\x65\x6C", "\x4D\x61\x63\x50\x50\x43", "\x4D\x61\x63\x36\x38\x4B", "\x57\x69\x6E\x33\x32", "\x57\x69\x6E\x36\x34", "\x57\x69\x6E\x64\x6F\x77\x73", "\x57\x69\x6E\x43\x45", "\x69\x50\x61\x64", "\x74\x65\x73\x74", "\x69\x6E\x64\x65\x78\x4F\x66", "\x68\x72\x65\x66", "\x6C\x6F\x63\x61\x74\x69\x6F\x6E", "\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x77\x77\x2E\x67\x6F\x6F\x67\x6C\x65\x2E\x63\x6F\x6D", "\x69\x73\x4F\x70\x65\x6E", "\x64\x65\x76\x74\x6F\x6F\x6C\x73", "\x64\x65\x76\x74\x6F\x6F\x6C\x73\x63\x68\x61\x6E\x67\x65", "\x64\x65\x74\x61\x69\x6C", "\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72", "\x73\x63\x72\x69\x70\x74", "\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65", "\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74", "\x73\x72\x63", "\x68\x74\x74\x70\x73\x3A\x2F\x2F\x76\x31\x2E\x63\x6E\x7A\x7A\x2E\x63\x6F\x6D\x2F\x7A\x5F\x73\x74\x61\x74\x2E\x70\x68\x70\x3F\x69\x64\x3D\x31\x32\x37\x39\x33\x32\x37\x33\x39\x39\x26\x77\x65\x62\x5F\x69\x64\x3D\x31\x32\x37\x39\x33\x32\x37\x33\x39\x39", "\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65", "\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65", "\x3A", "\x73\x70\x6C\x69\x74", "\x70\x72\x6F\x74\x6F\x63\x6F\x6C", "\x68\x74\x74\x70\x73", "\x68\x74\x74\x70\x73\x3A\x2F\x2F\x7A\x7A\x2E\x62\x64\x73\x74\x61\x74\x69\x63\x2E\x63\x6F\x6D\x2F\x6C\x69\x6E\x6B\x73\x75\x62\x6D\x69\x74\x2F\x70\x75\x73\x68\x2E\x6A\x73", "\x68\x74\x74\x70\x3A\x2F\x2F\x70\x75\x73\x68\x2E\x7A\x68\x61\x6E\x7A\x68\x61\x6E\x67\x2E\x62\x61\x69\x64\x75\x2E\x63\x6F\x6D\x2F\x70\x75\x73\x68\x2E\x6A\x73", "", "\x75\x6E\x64\x65\x66\x69\x6E\x65\x64", "\x70\x61\x67\x65\x69\x64", "\x2F\x63\x6F\x75\x6E\x74\x69\x6E\x67", "\x70\x6F\x73\x74", "\x74\x69\x6D\x65\x6F\x75\x74", "\x61\x6A\x61\x78", "\x63\x6F\x6F\x6B\x69\x65", "\x65\x78\x70\x69\x72\x65\x73", "\x67\x65\x74\x54\x69\x6D\x65", "\x73\x65\x74\x54\x69\x6D\x65", "\x3D", "\x3B", "\x65\x78\x70\x69\x72\x65\x73\x3D", "\x74\x6F\x47\x4D\x54\x53\x74\x72\x69\x6E\x67", "\x3B\x70\x61\x74\x68\x3D\x2F\x3B", "\x64\x6F\x6D\x61\x69\x6E", "\x64\x6F\x6D\x61\x69\x6E\x3D", "\x28\x3F\x3A\x28\x3F\x3A\x5E\x7C\x2E\x2A\x3B\x29\x5C\x73\x2A", "\x5C\x73\x2A\x5C\x3D\x5C\x73\x2A\x28\x5B\x5E\x3B\x5D\x2A\x29\x2E\x2A\x24\x29\x7C\x5E\x2E\x2A\x24", "\x24\x31", "\x72\x65\x70\x6C\x61\x63\x65", "\x6E\x6F\x77", "\x74\x6F\x6D\x6F\x72\x72\x6F\x77", "\x67\x65\x74\x46\x75\x6C\x6C\x59\x65\x61\x72", "\x67\x65\x74\x4D\x6F\x6E\x74\x68", "\x67\x65\x74\x44\x61\x74\x65", "\x75\x41", "\x69\x73\x4D\x6F\x62\x69\x6C\x65\x41\x63\x63\x65\x73\x73", "\x69\x73\x49\x70\x61\x64", "\x69\x73\x43\x6F\x6D\x70\x75\x74\x65\x72", "\x57\x45\x42\x53\x49\x54\x45\x5F\x43\x4F\x55\x4E\x54\x52\x59\x5F\x54\x59\x50\x45", "\x2F\x67\x65\x74\x43\x6F\x75\x6E\x74\x72\x79\x54\x79\x70\x65", "\x67\x65\x74\x43\x6F\x75\x6E\x74\x72\x79\x43\x6F\x64\x65", "\x55\x53", "\x65\x78\x63\x6C\x75\x64\x65\x43\x6F\x75\x6E\x74\x72\x79", "\x2F", "\x63\x6F\x75\x6E\x74\x72\x79\x49\x73\x43\x4E", "\x43\x4E", "\x69\x6E\x41\x72\x72\x61\x79", "\x63\x6F\x75\x6E\x74\x72\x79\x49\x73\x4D\x61\x69\x6E\x6C\x61\x6E\x64", "\x69\x73\x49\x6E\x52\x65\x61\x64\x50\x61\x67\x65", "\x64\x6C\x53\x78\x48\x47\x64\x7A\x5A\x75\x45\x38\x49\x79\x45\x78\x4C\x79\x50\x30\x4D\x54\x55\x32\x4E\x57\x4D\x34\x5A\x6D\x49\x7A\x5A\x34\x67\x6D\x4E\x31\x5A\x68\x63\x69\x42\x31\x61\x46\x53\x7A\x56\x46\x68\x6B\x51\x6D\x56\x75\x61\x79\x7A\x6D\x55\x57\x72\x46\x59\x57\x51\x47\x4D\x58\x5A\x4B\x4C\x55\x53\x33\x59\x30\x68\x6E\x65\x55\x38\x53\x4C\x47\x6B\x6B\x56\x55\x5A\x4C\x54\x30\x68\x57\x4C\x45\x33\x47\x63\x79\x42\x54\x65\x6B\x5A\x73\x56\x44\x42\x79\x64\x34\x4D\x70\x63\x53\x51\x54\x56\x54\x6B\x53\x55\x79\x53\x61\x62\x57\x4D\x70\x59\x79\x49\x6A\x51\x46\x51\x79\x55\x56\x51\x4E\x54\x30\x39\x58\x62\x47\x42\x5A\x65\x6B\x49\x6E\x5A\x57\x30\x7A\x4C\x46\x50\x79\x57\x6A\x6B\x5A\x62\x6C\x68\x72\x59\x75\x4D\x4A\x55\x57\x49\x73\x62\x45\x4D\x69\x62\x6A\x49\x59\x55\x6A\x4C\x33\x64\x30\x53\x6F\x50\x6D\x64\x4E\x62\x6A\x30\x34\x59\x56\x56\x53\x4D\x46\x51\x72\x63\x44\x53\x4E\x56\x55\x56\x35\x56\x75\x49\x61\x61\x46\x4D\x45\x55\x6D\x39\x55\x65\x6C\x77\x4E\x52\x31\x39\x46\x51\x34\x48\x77\x56\x6A\x64\x52\x65\x6A\x32\x7A\x54\x6C\x33\x6A\x4D\x6B\x39\x55\x54\x54\x49\x52\x56\x6A\x7A\x7A\x56\x56\x64\x51\x4C\x57\x4D\x35\x54\x6A\x30\x55\x61\x6B\x6E\x76\x55\x56\x64\x52\x52\x53\x39\x70\x4E\x47\x5A\x75\x56\x55\x33\x51\x59\x55\x5A\x52\x4D\x55\x33\x55\x5A\x44\x53\x54\x4C\x75\x53\x51\x56\x56\x64\x52\x62\x30\x64\x73\x62\x31\x6B\x75\x4C\x7A\x49\x32\x56\x30\x64\x4D\x4D\x46\x56\x48\x51\x6C\x30\x61\x4C\x6A\x5A\x5A\x59\x6C\x72\x7A\x56\x6B\x49\x72\x4D\x57\x72\x6A\x62\x6C\x68\x55\x57\x54\x48\x30\x62\x30\x49\x46\x61\x53\x49\x54\x51\x34\x51\x73\x57\x75\x53\x4A\x56\x30\x59\x78\x4C\x58\x6B\x68\x56\x6C\x51\x33\x5A\x53\x4D\x79\x63\x6B\x6B\x56\x52\x6D\x64\x51\x56\x34\x68\x71\x56\x6A\x51\x46\x50\x7A\x33\x70\x59\x79\x49\x69\x4C\x6A\x5A\x57\x54\x44\x49\x4A\x4D\x57\x53\x57\x52\x6C\x33\x54\x51\x31\x42\x77\x59\x30\x56\x52\x63\x6B\x39\x56\x51\x6A\x6B\x6A\x62\x56\x56\x33\x55\x79\x49\x76\x52\x46\x50\x77\x54\x6B\x51\x54\x51\x79\x6B\x73\x55\x30\x56\x5A\x4D\x56\x50\x78\x5A\x31\x39\x57\x62\x6A\x49\x53\x54\x6C\x30\x6A\x64\x45\x33\x6F\x51\x6C\x33\x61\x4C\x57\x51\x76\x56\x57\x30\x56\x65\x55\x30\x73\x57\x6D\x51\x4D\x4C\x7A\x56\x78\x54\x6B\x64\x4E\x63\x53\x55\x78\x55\x6A\x6B\x4E\x61\x31\x51\x45\x59\x34\x30\x46\x57\x56\x6B\x35\x5A\x45\x49\x69\x4C\x47\x51\x4E\x59\x55\x51\x71\x55\x6A\x33\x35\x50\x6A\x68\x61\x56\x6A\x33\x30\x59\x75\x4D\x57\x4C\x45\x33\x53\x4D\x56\x53\x6B\x62\x54\x56\x58\x57\x6A\x51\x52\x4C\x57\x49\x53\x63\x31\x49\x55\x62\x53\x53\x35\x54\x44\x4D\x57\x65\x46\x48\x79\x55\x6A\x49\x4E\x4C\x6D\x68\x53\x52\x79\x4D\x46\x51\x6B\x56\x53\x64\x79\x42\x57\x61\x58\x51\x74\x54\x6C\x33\x6A\x4D\x6C\x4D\x72\x4C\x55\x49\x6B\x52\x45\x33\x4B\x54\x56\x4D\x7A\x65\x55\x33\x73\x50\x6C\x68\x4F\x56\x56\x5A\x59\x59\x30\x63\x30\x4C\x53\x4D\x47\x52\x6A\x49\x55\x65\x6B\x5A\x47\x57\x57\x77\x46\x51\x6B\x64\x58\x4E\x58\x4D\x56\x51\x7A\x32\x34\x54\x6A\x5A\x6E\x4C\x45\x30\x72\x4E\x54\x5A\x4D\x62\x46\x68\x70\x57\x57\x77\x46\x62\x7A\x38\x55\x51\x6A\x64\x54\x52\x47\x42\x35\x54\x56\x56\x6A\x62\x6B\x6E\x76\x51\x58\x68\x6B\x51\x54\x56\x4F\x5A\x53\x5A\x5A\x64\x30\x49\x6F\x55\x6B\x42\x58\x50\x31\x4D\x34\x56\x7A\x64\x71\x54\x34\x45\x76\x64\x53\x42\x69\x4C\x55\x39\x34\x52\x31\x39\x57\x4C\x55\x32\x77\x55\x6B\x6B\x61\x51\x58\x68\x77\x56\x7A\x5A\x4E\x56\x6C\x4D\x72\x4E\x58\x64\x4E\x61\x6B\x5A\x44\x54\x6A\x56\x6E\x63\x55\x33\x57\x50\x6C\x39\x51\x56\x46\x51\x46\x55\x75\x49\x76\x4D\x46\x51\x33\x4E\x47\x64\x69\x4C\x6A\x5A\x48\x59\x7A\x5A\x49\x65\x53\x5A\x46\x56\x6D\x5A\x75\x4C\x57\x4D\x34\x54\x75\x42\x71\x50\x6A\x76\x79\x52\x58\x49\x4D\x57\x45\x49\x74\x56\x57\x77\x43\x54\x30\x49\x55\x54\x75\x49\x75\x4C\x6B\x6A\x76\x56\x30\x56\x4E\x63\x56\x49\x53\x51\x75\x4D\x69\x56\x30\x49\x56\x52\x31\x6B\x7A\x56\x6B\x64\x48\x54\x6A\x5A\x4F\x56\x54\x45\x76\x55\x75\x4D\x51\x64\x30\x51\x45\x56\x6A\x30\x6A\x4C\x55\x7A\x7A\x54\x55\x56\x6D\x63\x6C\x4D\x6F\x54\x6A\x77\x55\x4C\x7A\x49\x4B\x54\x6C\x33\x61\x65\x53\x4C\x79\x51\x6C\x6B\x58\x56\x53\x49\x32\x55\x34\x33\x43\x54\x6B\x56\x72\x64\x44\x49\x6A\x62\x55\x5A\x31\x5A\x45\x68\x52\x64\x55\x76\x78\x65\x44\x5A\x52\x51\x7A\x33\x70\x56\x7A\x4D\x7A\x4D\x57\x53\x70\x64\x44\x49\x69\x56\x45\x32\x78\x59\x7A\x56\x32\x57\x56\x5A\x58\x61\x53\x56\x56\x51\x6A\x39\x58\x56\x56\x51\x6A\x50\x30\x5A\x70\x4E\x58\x56\x4C\x4C\x6C\x4C\x78\x54\x55\x68\x71\x55\x45\x38\x53\x55\x54\x49\x54\x4C\x55\x5A\x51\x57\x6C\x7A\x30\x61\x56\x48\x78\x63\x47\x51\x6A\x51\x45\x49\x7A\x55\x54\x53\x43\x51\x6A\x76\x77\x51\x6C\x39\x69\x62\x54\x68\x78\x56\x53\x64\x71\x54\x53\x4C\x78\x5A\x31\x5A\x61\x61\x6C\x51\x76\x57\x57\x72\x49\x65\x53\x49\x56\x52\x6A\x39\x61\x56\x53\x49\x50\x55\x30\x55\x77\x56\x7A\x38\x53\x61\x47\x4D\x75\x65\x6A\x49\x52\x57\x54\x53\x6D\x4D\x46\x4D\x70\x64\x31\x49\x75\x4C\x34\x77\x32\x54\x75\x42\x5A\x4D\x56\x5A\x71\x62\x45\x64\x56\x61\x7A\x33\x46\x55\x79\x49\x74\x63\x6B\x56\x58\x54\x6D\x53\x52\x51\x6A\x39\x76\x55\x6B\x5A\x52\x54\x53\x51\x45\x5A\x46\x68\x69\x51\x6B\x49\x79\x55\x7A\x51\x4A\x64\x30\x6A\x77\x57\x6D\x4D\x58\x51\x58\x51\x4A\x5A\x56\x68\x52\x4C\x6B\x53\x57\x52\x6D\x39\x68\x51\x79\x56\x30\x59\x79\x4D\x6D\x65\x6A\x77\x35\x57\x6A\x68\x4D\x51\x30\x5A\x4C\x56\x57\x30\x46\x52\x6C\x50\x77\x51\x6A\x38\x61\x4C\x6A\x39\x74\x54\x56\x5A\x52\x4C\x6B\x39\x6F\x51\x6B\x49\x68\x56\x45\x59\x76\x55\x34\x39\x46\x59\x56\x39\x53\x54\x6B\x6B\x6B\x56\x7A\x6A\x30\x56\x34\x33\x6E\x63\x6B\x4D\x71\x5A\x45\x38\x61\x4C\x6D\x67\x34\x54\x54\x4D\x71\x56\x6A\x7A\x78\x4C\x57\x30\x4D\x56\x58\x50\x30\x59\x6B\x68\x4A\x61\x53\x6B\x70\x61\x44\x4D\x50\x56\x44\x41\x38\x49\x79\x72\x34\x59\x58\x48\x67\x64\x31\x51\x6C\x4C\x75\x30\x66\x58\x34\x4D\x6A\x5A\x57\x4D\x78\x65\x58\x42\x7A\x4A\x47\x64\x7A\x5A\x75\x45\x71\x48\x45\x4D\x78\x65\x58\x42\x7A\x62\x7A\x39\x54\x4B\x6C\x56\x73\x59\x78\x33\x43\x59\x58\x4D\x6B\x4D\x75\x50\x73\x63\x46\x53\x78\x63\x34\x55\x6E\x64\x34\x68\x68\x64\x53\x51\x6E\x5A\x55\x5A\x30\x59\x34\x71\x39\x4B\x6D\x51\x74\x55\x31\x51\x78\x61\x57\x33\x6D\x4A\x45\x4D\x78\x65\x58\x42\x7A\x62\x7A\x39\x54\x4B\x6C\x56\x73\x59\x78\x33\x56\x64\x46\x59\x32\x4A\x52\x6A\x36\x5A\x58\x5A\x68\x62\x43\x68\x31\x64\x46\x59\x78\x4A\x54\x71\x3D", "\x64\x65\x63\x6F\x64\x65", "\x65\x6E\x63", "\x75\x72\x6C\x73\x5F\x5F\x64\x69\x72\x65\x63\x74", "\x70\x61\x72\x73\x65", "\x42\x61\x73\x65\x36\x34", "\x7C\x53\x45\x50\x41\x52\x41\x54\x45\x52\x7C", "\x69\x6D\x67\x5F\x74\x79\x70\x65", "\x43\x4E\x5F\x4C\x49\x4E\x45\x5F\x43\x4F\x4E\x54\x52\x4F\x4C", "\x72\x61\x6E\x64\x6F\x6D", "\x66\x6C\x6F\x6F\x72", "\x43\x4E\x5F\x44\x49\x52\x45\x43\x54", "\x43\x4E\x5F\x42\x41\x53\x49\x43", "\x64\x69\x73\x70\x6C\x61\x79\x41\x64\x64", "\x6C\x65\x6E\x67\x74\x68", "\x70\x75\x73\x68", "\x31", "\x55\x53\x45\x52\x5F\x47\x4C\x4F\x42\x41\x4C\x5F\x46\x4C\x41\x47", "\x59", "\x77\x72\x69\x74\x65", "\x75\x73\x65\x72\x52\x65\x61\x64\x4D\x6F\x64\x65", "\x6D\x68\x5F\x72\x65\x61\x64\x6D\x6F\x64\x65", "\x72\x65\x61\x64\x6D\x6F\x64\x65", "\x75\x72\x65\x63\x6F\x72\x64", "\x66\x72\x61\x6D\x65\x69\x6D\x67", "\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64", "\x27\x3C\x69\x6D\x67\x20\x69\x64\x3D\x22\x69\x6D\x67", "\x22\x20", "\x73\x72\x63\x3D\x5C\x27", "\x5C\x27", "\x20\x20\x73\x74\x79\x6C\x65\x3D\x22\x6D\x61\x78\x2D\x77\x69\x64\x74\x68\x3A\x31\x30\x30\x25\x3B\x6D\x69\x6E\x2D\x77\x69\x64\x74\x68\x3A\x31\x35\x30\x70\x78\x3B\x63\x75\x72\x73\x6F\x72\x3A\x70\x6F\x69\x6E\x74\x65\x72\x3B\x76\x65\x72\x74\x69\x63\x61\x6C\x2D\x61\x6C\x69\x67\x6E\x3A\x74\x6F\x70\x3B\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3D\x63\x65\x6E\x74\x65\x72\x3B\x22\x2F\x3E", "\x3C\x73\x74\x79\x6C\x65\x3E\x62\x6F\x64\x79\x7B\x6D\x61\x72\x67\x69\x6E\x3A\x30\x70\x78\x3B\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x30\x70\x78\x3B\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x63\x65\x6E\x74\x65\x72\x3B\x7D\x3C\x2F\x73\x74\x79\x6C\x65\x3E", "\x3C\x73\x63\x72\x69\x70\x74\x3E\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75\x20\x3D\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x29\x7B\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x7D\x3B\x20\x70\x61\x72\x65\x6E\x74\x2E\x77\x69\x6E\x64\x6F\x77\x2E\x5F\x5F\x63\x72\x2E\x66\x72\x61\x6D\x65\x49\x6D\x61\x67\x65\x62\x69\x6E\x64\x28\x5C\x27\x69\x6D\x67", "\x5C\x27\x2C\x5C\x27", "\x5C\x27\x29\x3B\x20\x77\x69\x6E\x64\x6F\x77\x2E\x6F\x6E\x6C\x6F\x61\x64\x20\x3D\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x29\x20\x7B", "\x20", "\x20\x70\x61\x72\x65\x6E\x74\x2E\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x5C\x27\x66\x72\x61\x6D\x65\x69\x6D\x67", "\x5C\x27\x29\x2E\x68\x65\x69\x67\x68\x74\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x5C\x27\x69\x6D\x67", "\x5C\x27\x29\x2E\x68\x65\x69\x67\x68\x74\x2B\x5C\x27\x70\x78\x5C\x27\x3B\x20\x7D\x3B\x20\x77\x69\x6E\x64\x6F\x77\x2E\x6F\x6E\x72\x65\x73\x69\x7A\x65\x20\x3D\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x29\x20\x7B\x20\x70\x61\x72\x65\x6E\x74\x2E\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x5C\x27\x66\x72\x61\x6D\x65\x69\x6D\x67", "\x5C\x27\x29\x2E\x68\x65\x69\x67\x68\x74\x2B\x5C\x27\x70\x78\x5C\x27\x3B\x20\x7D\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E\x27", "\x77\x69\x6E\x64\x6F\x77\x2E\x69\x6D\x67", "\x20\x3D\x20", "\x3C\x69\x66\x72\x61\x6D\x65\x20", "\x20\x69\x64\x3D\x22", "\x22\x20\x73\x72\x63\x3D\x22\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x70\x61\x72\x65\x6E\x74\x2E\x69\x6D\x67", "\x3B\x22\x20\x66\x72\x61\x6D\x65\x62\x6F\x72\x64\x65\x72\x3D\x22\x6E\x6F\x22\x20\x73\x63\x72\x6F\x6C\x6C\x69\x6E\x67\x3D\x22\x6E\x6F\x22\x20\x6D\x61\x72\x67\x69\x6E\x3D\x22\x30\x22\x20\x62\x6F\x72\x64\x65\x72\x3D\x22\x30\x22\x20\x70\x61\x64\x64\x69\x6E\x67\x3D\x22\x30\x70\x78\x22\x20\x73\x74\x79\x6C\x65\x3D\x22\x6D\x61\x78\x2D\x77\x69\x64\x74\x68\x3A\x20\x31\x30\x30\x25\x3B\x77\x69\x64\x74\x68\x3A\x31\x30\x30\x25\x3B\x64\x69\x73\x70\x6C\x61\x79\x3A\x62\x6C\x6F\x63\x6B\x3B\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x6D\x61\x67\x65\x46\x72\x61\x6D\x65\x53\x70\x65\x63\x69\x61\x6C\x22\x3E\x3C\x2F\x69\x66\x72\x61\x6D\x65\x3E", "\x73\x68\x61\x72\x65", "\x74\x69\x74\x6C\x65", "\x20\u592A\u597D\u770B\u4E86\uFF0C\u5FEB\u6765\u89C2\u8D4F\u5427\uFF01\x20", "\u5206\u4EAB\u94FE\u63A5", "\x34\x35\x25", "\u590D\u5236", "\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x65\x64\x2D\x6C\x69\x6E\x6B\x2D\x73\x68\x61\x72\x65\x22\x20\x73\x74\x79\x6C\x65\x3D\x22\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x61\x62\x73\x6F\x6C\x75\x74\x65\x3B\x6C\x65\x66\x74\x3A\x2D\x32\x30\x30\x70\x78\x3B\x20\x63\x6F\x6C\x6F\x72\x3A\x20\x72\x67\x62\x61\x28\x30\x2C\x30\x2C\x30\x2C\x30\x29\x3B\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x22\x3E", "\x3C\x2F\x64\x69\x76\x3E", "\x61\x70\x70\x65\x6E\x64", "\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x52\x61\x6E\x67\x65\x73", "\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E", "\x66\x65\x64\x2D\x6C\x69\x6E\x6B\x2D\x73\x68\x61\x72\x65", "\x63\x72\x65\x61\x74\x65\x52\x61\x6E\x67\x65", "\x73\x65\x6C\x65\x63\x74\x4E\x6F\x64\x65", "\x61\x64\x64\x52\x61\x6E\x67\x65", "\x43\x6F\x70\x79", "\x65\x78\x65\x63\x43\x6F\x6D\x6D\x61\x6E\x64", "\x69\x6E\x6E\x65\x72\x54\x65\x78\x74", "\x69\x6E\x70\x75\x74", "\x76\x61\x6C\x75\x65", "\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64", "\x73\x65\x6C\x65\x63\x74", "\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65", "\x64\x69\x73\x70\x6C\x61\x79", "\x73\x74\x79\x6C\x65", "\x6E\x6F\x6E\x65", "\u77ED\u94FE\u63A5\u590D\u5236\u6210\u529F\uFF0C\u8BF7\u7C98\u8D34\u5230\u4F60\u7684\x51\x51\x2F\u5FAE\u535A\x2F\u5FAE\u4FE1\u4E0A\u5206\u4EAB\u7ED9\u4F60\u7684\u597D\u53CB", "\x6D\x73\x67", "\x61\x6C\x65\x72\x74", "\x63\x6C\x69\x63\x6B", "\x2E\x66\x65\x64\x2D\x70\x6C\x61\x79\x2D\x73\x68\x61\x72\x65\x2C\x2E\x66\x65\x64\x2D\x67\x6F\x74\x6F\x2D\x73\x68\x61\x72\x65", "\x65\x72\x72\x6F\x72\x43\x6F\x6D\x6D\x65\x6E\x74\x41\x64\x64", "\x76\x61\x6C", "\x74\x65\x78\x74\x61\x72\x65\x61", "\x66\x69\x6E\x64", "\x66\x6F\x72\x6D", "\x70\x61\x72\x65\x6E\x74\x73", "\u8BF7\u8F93\u5165\u5185\u5BB9\uFF01", "\x2F\x61\x64\x64\x43\x6F\x6D\x6D\x65\x6E\x74", "\x50\x4F\x53\x54", "\x73\x65\x72\x69\x61\x6C\x69\x7A\x65", "\x26\x64\x61\x74\x61\x50\x61\x67\x65\x49\x64\x3D", "\x64\x61\x74\x61\x50\x61\x67\x65\x49\x64", "\x26\x64\x61\x74\x61\x49\x64\x3D", "\x64\x61\x74\x61\x49\x64", "\x6D\x65\x73\x73\x61\x67\x65", "\x74\x65\x78\x74", "\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x74\x69\x70\x73", "\x73\x74\x61\x74\x75\x73", "\x53", "\x66\x65\x64\x2D\x62\x74\x6E\x73\x2D\x64\x69\x73\x61\x64", "\x61\x64\x64\x43\x6C\x61\x73\x73", "\x70\x61\x67\x65", "\x63\x6C\x6F\x73\x65\x41\x6C\x6C", "\u9519\u8BEF\u4E0A\u62A5\u6210\u529F\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u67E5\u770B\uFF0C\u8C22\u8C22\uFF01", "\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5", "\x72\x65\x70\x6F\x72\x74\x52\x65\x61\x64\x45\x72\x72\x6F\x72\x42\x61\x63\x6B", "\x2F\x72\x65\x70\x6F\x72\x74\x45\x72\x72\x6F\x72", "\x72\x65\x70\x6F\x72\x74", "\u62A5\u9519", "\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x6C\x65\x66\x74", "\x2E\x66\x65\x64\x2D\x70\x6C\x61\x79\x2D\x69\x66\x72\x61\x6D\x65", "\x6D\x68\x6E\x61\x6D\x65", "\x70\x61\x67\x65\x6E\x61\x6D\x65", "\x20\u5B58\u5728\u95EE\u9898\u8BF7\u68C0\u67E5\u4FEE\u590D\u3002\u9875\u9762\u5730\u5740\uFF1A", "\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x66\x6F\x72\x6B\x20\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x74\x65\x78\x74", "\x72\x65\x6D\x6F\x76\x65\x43\x6C\x61\x73\x73", "\x6F\x70\x65\x6E", "\x67\x65\x74", "\x72\x65\x70\x6F\x72\x74\x52\x65\x61\x64\x45\x72\x72\x6F\x72", "\x6C\x69\x6E\x65\x5F\x69\x64", "\x6C\x6F\x63\x61\x6C\x5F\x77\x61\x74\x63\x68\x5F\x75\x72\x6C", "\u8FD9\u4E00\u96C6\u6709\u7A33\u5B9A\u8DEF\u7EBF\u54E6\uFF0C\u5FEB\u53BB\u770B\u5427\uFF01\uFF01\uFF01", "\u8D70\u8D77\uFF0C\u5E26\u6211\u98DE", "\u62A5\u9519\uFF0C\u95EA\u5F00", "\u8DEF\u7EBF\u63D0\u793A", "\x63\x6F\x6E\x66\x69\x72\x6D", "\x72\x65\x70\x6F\x72\x74\x45\x72\x72\x6F\x72", "\u5982\u6709\u6B64\u9875\u9762\u6709\u95EE\u9898\uFF0C\u60A8\u53EF\u8FDB\u5165\u8BC4\u8BBA\u9875\u56DE\u590D\u3002\x20\u5982\u679C\u5177\u4F53\u6F2B\u753B\u96C6\u52A0\u8F7D\u4E0D\u51FA\u6765\uFF0C\u60A8\u53EF\u4EE5\u5728\u56FE\u7247\u52A0\u8F7D\u5931\u8D25\u5904\u70B9\u51FB\u8FDB\u884C\u5177\u4F53\u62A5\u9519\u3002", "\x63\x68\x61\x6E\x67\x65\x54\x6F\x44\x69\x72\x65\x63\x74\x4C\x69\x6E\x65", "\u5DF2\u5C06\u7A33\u5B9A\u8DEF\u7EBF\u6E90\u5207\u6362\u4E3A\u76F4\u8FDE\uFF0C\u6548\u679C\u6301\u7EED\x20\x31\x20\u5C0F\u65F6\x20\uFF0C\u8BF7\u624B\u52A8\u5237\u65B0\u9875\u9762\u7EE7\u7EED\u89C2\u770B\uFF0C\u8C22\u8C22\uFF01", "\x63\x68\x61\x6E\x67\x65\x54\x6F\x43\x4E\x4C\x69\x6E\x65", "\u5DF2\u5C06\u7A33\u5B9A\u8DEF\u7EBF\u6E90\u5207\u6362\u4E3A\x20\u6781\u901F\u8DEF\u7EBF\uFF0C\u6548\u679C\u6301\u7EED\x20\x31\x20\u5C0F\u65F6\x20\uFF0C\u8BF7\u624B\u52A8\u5237\u65B0\u9875\u9762\u7EE7\u7EED\u89C2\u770B\uFF0C\u8C22\u8C22\uFF01", "\x73\x68\x6F\x77\x49\x6E\x64\x65\x78\x43\x6F\x6D\x6D\x65\x6E\x74", "\x2F\x6D\x65\x73\x73\x61\x67\x65\x73", "\x3F", "\x70\x61\x67\x65\x3D", "\u63D0\u4EA4\u6210\u529F", "\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x67\x62\x6F\x6F\x6B\x73", "\x73\x68\x6F\x77\x43\x6F\x6D\x6D\x65\x6E\x74", "\x61\x69\x64", "\x2F\x67\x65\x74\x63\x6F\x6D\x6D\x65\x6E\x74", "\x64\x61\x74\x61\x2D\x69\x64", "\x61\x74\x74\x72", "\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x69\x6E\x66\x6F", "\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x66\x6F\x72\x74", "\x63\x6F\x75\x6E\x74", "\x63\x6F\x6D\x6D\x65\x6E\x74", "\x64\x61\x74\x61\x2D\x72\x6F\x6C\x65", "\x2E\x66\x65\x64\x2D\x63\x6F\x6D\x6D\x2D\x63\x6F\x64\x65", "\x3C\x70\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x65\x64\x2D\x70\x61\x64\x64\x69\x6E\x67\x22\x3E\u8BC4\u8BBA\u52A0\u8F7D\u5931\u8D25\uFF0C\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x3B\x22\x20\x6F\x6E\x63\x6C\x69\x63\x6B\x3D\x22\x66\x65\x64\x2E\x63\x6F\x6D\x6D\x65\x6E\x74\x2E\x73\x68\x6F\x77\x28\x31\x29\x22\x3E\u70B9\u6211\u5237\u65B0\x3C\x2F\x61\x3E\x2E\x2E\x2E\x3C\x2F\x70\x3E", "\x73\x68\x6F\x77", "\x26", "\x61\x64\x64\x43\x6F\x6D\x6D\x65\x6E\x74", "\x64\x61\x74\x61\x2D\x6D\x69\x64", "\u5DF2\u6210\u529F\u8BB0\u5F55\uFF0C\u663E\u793A\u6709\u5EF6\u8FDF\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\uFF0C\u8C22\u8C22\uFF01", "\x61\x6A\x61\x78\x42\x69\x6E\x64\x4A\x75\x6D\x70", "\x2E\x66\x65\x64\x2D\x70\x61\x67\x65\x2D\x69\x6E\x66\x6F\x20\x69\x6E\x70\x75\x74", "\x2E\x73\x68\x6F\x77\x2D\x70\x61\x67\x65\x2D\x6A\x75\x6D\x70", "\x69\x6E\x69\x74\x54\x61\x62", "\x66\x65\x64\x2D\x62\x61\x63\x6B\x2D\x67\x72\x65\x65\x6E", "\x66\x65\x64\x2D\x76\x69\x73\x69\x62\x6C\x65", "\x68\x69\x64\x65", "\x66\x65\x64\x2D\x68\x69\x64\x64\x65\x6E", "\x66\x61\x64\x65\x49\x6E", "\x69\x6E\x64\x65\x78", "\x70\x61\x72\x65\x6E\x74", "\x65\x71", "\x69\x73\x6F\x70\x65\x6E\x6F\x72\x63\x6C\x6F\x73\x65", "\x64\x69\x73\x70\x6C\x61\x79\x42\x79\x41\x6C\x6C", "\x68\x65\x69\x67\x68\x74", "\x63\x73\x73", "\x2E\x61\x6C\x6C\x5F\x64\x61\x74\x61\x5F\x6C\x69\x73\x74", "\x61\x75\x74\x6F", "\u6536\x20\u7F29", "\x2E\x77\x65\x62\x73\x69\x74\x65\x2D\x64\x69\x73\x70\x6C\x61\x79\x2D\x61\x6C\x6C", "\u5C55\x20\u5F00", "\x77\x61\x74\x63\x68\x5F\x68\x69\x73", "\x63\x6C\x65\x61\x72", "\x73\x69\x74\x65\x5F\x75\x72\x65\x63\x6F\x72\x64", "\x3C\x6C\x69\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x72\x6F\x77\x73\x20\x66\x65\x64\x2D\x6C\x69\x6E\x65\x2D\x62\x6F\x74\x74\x6F\x6D\x22\x3E\x3C\x61\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x65\x6F\x6E\x65\x22\x20\x68\x72\x65\x66\x3D\x22\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x3B\x22\x3E\u5DF2\u6E05\u7A7A\u89C2\u770B\u8BB0\u5F55\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E", "\x2E\x66\x65\x64\x2D\x70\x6F\x70\x73\x2D\x72\x65\x63\x6F\x72\x64\x20\x75\x6C", "\x61\x64\x64", "\x74\x68\x69\x73\x70\x61\x67\x65", "\x5B\x5B\x27", "\x6D\x68\x69\x64", "\x27\x2C\x27", "\x27", "\x70\x61\x67\x65\x75\x72\x6C", "\x27\x5D", "\x2C\x5B\x27", "\x6A\x6F\x69\x6E", "\x65\x61\x63\x68", "\x5D", "\x6E\x75\x6C\x6C", "\x3C\x6C\x69\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x72\x6F\x77\x73\x20\x66\x65\x64\x2D\x6C\x69\x6E\x65\x2D\x62\x6F\x74\x74\x6F\x6D\x22\x3E\x3C\x61\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x72\x6F\x77\x73\x22\x20\x68\x72\x65\x66\x3D\x22\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x3B\x22\x3E\u6682\u65E0\u89C2\u770B\u8BB0\u5F55\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E", "\x3C\x6C\x69\x20\x63\x6C\x61\x73\x73\x3D\x27\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x72\x6F\x77\x73\x20\x66\x65\x64\x2D\x6C\x69\x6E\x65\x2D\x62\x6F\x74\x74\x6F\x6D\x27\x3E\x0A", "\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x27\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x72\x6F\x77\x73\x27\x3E\x0A", "\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x27\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x65\x6F\x6E\x65\x20\x66\x65\x64\x2D\x63\x6F\x6C\x2D\x78\x73\x39\x27\x3E", "\x3C\x61\x20\x68\x72\x65\x66\x3D\x27\x2F", "\x2F\x27\x3E", "\x3C\x2F\x61\x3E", "\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x27\x66\x65\x64\x2D\x74\x65\x78\x74\x2D\x6D\x75\x74\x65\x64\x27\x3E", "\x27\x20\x74\x69\x74\x6C\x65\x3D\x27", "\x27\x3E\x5B", "\x5D\x3C\x2F\x61\x3E", "\x3C\x2F\x73\x70\x61\x6E\x3E\x3C\x2F\x73\x70\x61\x6E\x3E\x0A", "\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x27\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x65\x6F\x6E\x65\x20\x66\x65\x64\x2D\x74\x65\x78\x74\x2D\x6D\x75\x74\x65\x64\x20\x66\x65\x64\x2D\x74\x65\x78\x74\x2D\x72\x69\x67\x68\x74\x20\x66\x65\x64\x2D\x63\x6F\x6C\x2D\x78\x73\x33\x27\x3E", "\x4D\x4D\x2E\x64\x64", "\x3C\x2F\x73\x70\x61\x6E\x3E\x0A", "\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A", "\x3C\x2F\x6C\x69\x3E\x0A", "\x75\x73\x65\x72", "\x75\x73\x65\x72\x48\x61\x76\x65\x4C\x6F\x67\x69\x6E", "\x6C\x6F\x67\x69\x6E\x5F\x63\x6F\x6F\x6B\x69\x65", "\x61\x64\x64\x54\x6F\x46\x61\x76", "\u8BF7\u5148\u767B\u5F55\uFF01", "\x2F\x64\x79\x6E\x61\x6D\x69\x63\x2F\x75\x73\x65\x72\x2F\x61\x64\x64\x54\x6F\x46\x61\x76", "\u6DFB\u52A0\u6210\u529F\uFF0C\u53EF\u8FDB\u5165\u7528\u6237\u754C\u9762\u67E5\u770B", "\u7F51\u7EDC\u8FDE\u63A5\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01", "\x62\x69\x6E\x64\x69\x6E\x67", "\x77\x65\x62\x73\x69\x74\x65\x2D\x65\x6D\x61\x69\x6C\x2D\x76\x61\x6C\x69\x64\x61\x74\x65", "\x68\x61\x73\x43\x6C\x61\x73\x73", "\x65\x6D\x61\x69\x6C\x41\x64\x64\x72\x65\x73\x73", "\x67\x65\x74\x45\x6D\x61\x69\x6C\x49\x6E\x70\x75\x74\x45\x72\x72\x6F\x72", "\x2E\x66\x65\x64\x2D\x75\x73\x65\x72\x2D\x74\x69\x70\x73", "\x6C\x6F\x61\x64\x69\x6E\x67\x2E\x2E\x2E", "\x2E\x66\x65\x64\x2D\x75\x73\x65\x72\x2D\x66\x6F\x72\x6D", "\u83B7\u53D6\u9A8C\u8BC1\u7801", "\u91CD\u65B0\u83B7\u53D6\x28", "\x29", "\x69\x6E\x70\x75\x74\x5B\x6E\x61\x6D\x65\x3D\x27", "\x65\x6D\x61\x69\x6C\u5F55\u5165\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5", "\x67\x65\x74\x56\x65\x72\x66\x79\x43\x6F\x64\x65\x49\x6E\x70\x75\x74\x45\x72\x72\x6F\x72", "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801", "\x67\x65\x74\x55\x73\x65\x72\x4E\x61\x6D\x65\x49\x6E\x70\x75\x74\x45\x72\x72\x6F\x72", "\u8D26\u53F7\u8BF7\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u6216\u4E0B\u5212\u7EBF\uFF01", "\x70\x61\x73\x73\x77\x6F\x72\x64\x4D\x75\x73\x74\x49\x6E\x70\x75\x74\x45\x72\x72\x6F\x72", "\u8BF7\u8F93\u5165\u5BC6\u7801\uFF01", "\x64\x6F\x75\x62\x6C\x65\x50\x61\x73\x73\x77\x6F\x72\x64\x49\x6E\x70\x75\x74\x45\x72\x72\x6F\x72", "\u4E24\u6B21\u5BC6\u7801\u8F93\u5165\u4E0D\u4E00\u81F4\uFF01", "\x68\x61\x6E\x64\x6C\x65\x5F\x63\x6C\x69\x63\x6B", "\x64\x61\x74\x61\x2D\x6A\x75\x6D\x70", "\x2E\x66\x65\x64\x2D\x73\x75\x62\x6D\x2D\x72\x65\x67\x69\x73", "\x75\x73\x65\x72\x5F\x6E\x61\x6D\x65", "\x75\x73\x65\x72\x5F\x70\x77\x64", "\x75\x73\x65\x72\x5F\x70\x77\x64\x32", "\x76\x65\x72\x69\x66\x79\x43\x6F\x64\x65", "\x2E\x66\x65\x64\x2D\x73\x75\x62\x6D\x2D\x6C\x6F\x67\x69\x6E", "\x69\x6E\x70\x75\x74\x5B\x6E\x61\x6D\x65\x3D\x27\x75\x73\x65\x72\x5F\x6E\x61\x6D\x65\x27\x5D", "\u8BF7\u5F55\u5165\u7528\u6237\u540D\x21", "\x2E\x66\x65\x64\x2D\x73\x75\x62\x6D\x2D\x66\x69\x6E\x64\x73", "\x65\x6D\x61\x69\x6C\x43\x6F\x64\x65", "\x2E\x66\x65\x64\x2D\x73\x75\x62\x6D\x2D\x69\x6E\x66\x6F\x73", "\x69\x6E\x70\x75\x74\x5B\x6E\x61\x6D\x65\x3D\x27\x73\x65\x63\x75\x72\x65\x51\x75\x65\x73\x74\x69\x6F\x6E\x27\x5D", "\x69\x6E\x70\x75\x74\x5B\x6E\x61\x6D\x65\x3D\x27\x73\x65\x63\x75\x72\x65\x41\x6E\x73\x77\x65\x72\x27\x5D", "\u8BF7\u8865\u5145\u5BC6\u4FDD\u4FE1\u606F\uFF01", "\x2E\x66\x65\x64\x2D\x73\x75\x62\x6D\x2D\x62\x69\x6E\x64\x73", "\x2E\x77\x65\x62\x73\x69\x74\x65\x2D\x6D\x61\x6B\x65\x2D\x6F\x72\x64\x65\x72", "\x23\x6F\x72\x64\x65\x72\x54\x79\x70\x65", "\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\uFF01", "\x66\x61\x69\x6C", "\x61\x63\x74\x69\x6F\x6E", "\x41\x6C\x69\x70\x61\x79", "\x2F\x64\x79\x6E\x61\x6D\x69\x63\x2F\x75\x73\x65\x72\x2F\x61\x6C\x69\x70\x61\x79\x2F", "\x6F\x72\x64\x65\x72\x49\x64", "\x64\x61\x74\x61", "\x20\u5C06\u8F6C\u81F3\u767B\u5F55\u754C\u9762", "\x2E\x66\x65\x64\x2D\x75\x73\x65\x72\x2D\x63\x6F\x64\x65", "\x75\x73\x65\x72\x4C\x6F\x67\x69\x6E\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E", "\x2F\x75\x73\x65\x72\x2F\x6C\x6F\x67\x69\x6E", "\x63\x6C\x65\x61\x72\x41\x6C\x6C\x55\x73\x65\x72\x43\x6F\x6F\x6B\x69\x65", "\x75\x73\x65\x72\x5F\x69\x64", "\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65", "\x6C\x61\x73\x74\x5F\x6C\x6F\x67\x69\x6E\x5F\x63\x68\x65\x63\x6B", "\x6C\x6F\x67\x6F\x75\x74", "\x64\x79\x6E\x61\x6D\x69\x63\x2F\x75\x73\x65\x72\x2F\x6C\x6F\x67\x6F\x75\x74", "\x75\x70\x6C\x6F\x61\x64", "\x66\x69\x6C\x65\x73", "\x6F\x6E\x6C\x6F\x61\x64", "\x72\x65\x73\x75\x6C\x74", "\x74\x61\x72\x67\x65\x74", "\x63\x72\x6F\x70\x70\x65\x72", "\x23\x74\x61\x69\x6C\x6F\x72\x69\x6E\x67\x49\x6D\x67", "\x72\x65\x61\x64\x41\x73\x44\x61\x74\x61\x55\x52\x4C", "\x74\x6F\x67\x67\x6C\x65", "\x2E\x74\x61\x69\x6C\x6F\x72\x69\x6E\x67\x2D\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x72\x65\x61\x64", "\x69\x6D\x61\x67\x65\x4C\x6F\x61\x64\x45\x72\x72\x6F\x72", "\x2F\x64\x79\x6E\x61\x6D\x69\x63\x2F\x69\x6D\x61\x67\x65\x4C\x6F\x61\x64\x45\x72\x72\x6F\x72", "\x6D\x61\x73\x6B", "\x2E\x57\x45\x42\x53\x49\x54\x45\x5F\x4C\x4F\x41\x44\x49\x4E\x47\x5F\x4D\x41\x53\x4B", "\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x57\x45\x42\x53\x49\x54\x45\x5F\x4C\x4F\x41\x44\x49\x4E\x47\x5F\x4D\x41\x53\x4B\x22\x20\x3E\x0A", "\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6D\x67\x20\x73\x72\x63\x3D\x22\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x6D\x61\x73\x6B\x5F\x6C\x6F\x61\x64\x69\x6E\x67\x2E\x67\x69\x66\x22\x20\x61\x6C\x74\x3D\x22\u56FE\u7247\u52A0\u8F7D\u4E2D\xB7\xB7\xB7\x22\x20\x2F\x3E\x0A", "\x77\x69\x64\x74\x68", "\x31\x30\x30\x25", "\x62\x6C\x6F\x63\x6B", "\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70", "\x2E\x57\x45\x42\x53\x49\x54\x45\x5F\x4C\x4F\x41\x44\x49\x4E\x47\x5F\x4D\x41\x53\x4B\x20\x69\x6D\x67", "\x6C\x65\x66\x74", "\x74\x6F\x70", "\x30", "\x69\x6E\x69\x74", "\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u56FE\u7247\u4E0A\u4F20\uFF0C\u8BF7\u5347\u7EA7\u60A8\u7684\u6D4F\u89C8\u5668", "\x6F\x6E\x72\x65\x73\x69\x7A\x65", "\x6F\x75\x74\x65\x72\x48\x65\x69\x67\x68\x74", "\x2E\x74\x61\x69\x6C\x6F\x72\x69\x6E\x67\x2D\x63\x6F\x6E\x74\x65\x6E\x74", "\x6F\x75\x74\x65\x72\x57\x69\x64\x74\x68", "\x6F\x6E", "\x2E\x75\x73\x65\x72\x2D\x69\x6D\x61\x67\x65\x2D\x63\x68\x61\x6E\x67\x65", "\x2E\x70\x72\x65\x76\x69\x65\x77\x49\x6D\x67", "\x6D\x6F\x76\x65", "\x72\x6F\x74\x61\x74\x65", "\x2E\x63\x72\x6F\x70\x70\x65\x72\x2D\x72\x6F\x74\x61\x74\x65\x2D\x62\x74\x6E", "\x72\x65\x73\x65\x74", "\x2E\x63\x72\x6F\x70\x70\x65\x72\x2D\x72\x65\x73\x65\x74\x2D\x62\x74\x6E", "\x73\x63\x61\x6C\x65\x58", "\x2E\x63\x72\x6F\x70\x70\x65\x72\x2D\x73\x63\x61\x6C\x65\x58\x2D\x62\x74\x6E", "\x67\x65\x74\x43\x72\x6F\x70\x70\x65\x64\x43\x61\x6E\x76\x61\x73", "\x74\x6F\x42\x6C\x6F\x62", "\x66\x69\x6C\x65", "\x75\x73\x65\x72\x69\x6D\x61\x67\x65", "\x64\x6F\x6E\x65", "\x2F\x64\x79\x6E\x61\x6D\x69\x63\x2F\x75\x73\x65\x72\x2F\x75\x70\x6C\x6F\x61\x64", "\u5934\u50CF\u4E0A\u4F20\u6210\u529F\uFF01", "\x2E\x66\x65\x64\x2D\x75\x73\x65\x72\x2D\x61\x76\x61\x74", "\x3F\x76\x3D", "\x63\x6C\x6F\x73\x65\x54\x61\x69\x6C\x6F\x72", "\x69\x6D\x61\x67\x65\x2F\x6A\x70\x65\x67", "\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u4E0A\u4F20\u5934\u50CF\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\uFF01", "\x23\x73\x75\x72\x65\x43\x75\x74", "\x6C\x6F\x67\x69\x6E\x43\x6F\x6F\x6B\x69\x65\x49\x6E\x69\x74", "\x2F\x64\x79\x6E\x61\x6D\x69\x63\x2F\x75\x73\x65\x72\x2F\x67\x65\x74\x55\x73\x65\x72\x4D\x65\x73\x73\x61\x67\x65", "\x72\x65\x66\x72\x65\x73\x68\x50\x61\x67\x65", "\x72\x65\x6C\x6F\x61\x64", "\x4E", "\x67\x65\x74\x51\x75\x65\x72\x79\x53\x74\x72\x69\x6E\x67", "\x28\x5E\x7C\x26\x29", "\x3D\x28\x5B\x5E\x26\x5D\x2A\x29\x28\x26\x7C\x24\x29", "\x69", "\x73\x75\x62\x73\x74\x72", "\x73\x65\x61\x72\x63\x68", "\x73\x65\x61\x72\x63\x68\x70\x61\x67\x65\x52\x65\x63\x6F\x72\x64", "\x73\x65\x61\x72\x63\x68\x53\x74\x72\x69\x6E\x67", "\x70\x61\x74\x68\x6E\x61\x6D\x65", "\x2F\x70\x61\x67\x65\x6C\x6F\x67\x61\x6A\x61\x78", "\x73\x75\x62\x73\x63\x72\x69\x70\x74", "\x68\x61\x6E\x64\x6C\x65", "\x63\x68\x65\x63\x6B\x65\x64", "\x69\x6E\x70\x75\x74\x5B\x6E\x61\x6D\x65\x3D\x22\x69\x64\x73\x5B\x5D\x22\x5D", "\u8BF7\u9009\u62E9", "\x2C", "\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01", "\x2E\x66\x65\x64\x2D\x70\x61\x72\x74\x2D\x72\x6F\x77\x73\x20\x2E\x66\x65\x64\x2D\x64\x72\x6F\x70\x2D\x62\x74\x6E\x73\x20\x2E\x66\x65\x64\x2D\x62\x74\x6E\x73\x2D\x69\x6E\x66\x6F", "\x2E\x66\x65\x64\x2D\x74\x61\x62\x73\x2D\x69\x74\x65\x6D\x20\x2E\x66\x65\x64\x2D\x70\x6C\x61\x79\x2D\x69\x74\x65\x6D", "\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x6E\x6F\x72\x6D\x61\x6C", "\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x6E\x6F\x77\x72\x61\x70", "\x2E\x66\x65\x64\x2D\x63\x61\x73\x63\x2D\x69\x6E\x66\x6F\x20\x61\x2E\x63\x68\x61\x6E\x67\x65\x2D\x63\x73\x73\x2D\x74\x79\x70\x65", "\x2E\x77\x65\x62\x73\x69\x74\x65\x2D\x64\x65\x6C\x65\x74\x65", "\x2E\x77\x65\x62\x73\x69\x74\x65\x2D\x65\x6E\x61\x62\x6C\x65", "\x2E\x77\x65\x62\x73\x69\x74\x65\x2D\x63\x61\x6E\x63\x65\x6C", "\x2E\x66\x65\x64\x2D\x74\x61\x62\x73\x2D\x62\x74\x6E\x73", "\x2E\x66\x65\x64\x2D\x74\x61\x62\x73\x2D\x69\x74\x65\x6D", "\x66\x65\x64\x2D\x74\x65\x78\x74\x2D\x67\x72\x65\x65\x6E", "\x74\x61\x62\x73", "\x70\x6C\x61\x79\x65\x72", "\x2E\x66\x65\x64\x2D\x70\x6C\x61\x79\x2D\x62\x74\x6E\x73", "\x2E\x66\x65\x64\x2D\x70\x6C\x61\x79\x2D\x69\x74\x65\x6D", "\x64\x72\x6F\x70", "\x2E\x66\x65\x64\x2D\x64\x6F\x77\x6E\x2D\x62\x74\x6E\x73", "\x2E\x66\x65\x64\x2D\x64\x6F\x77\x6E\x2D\x69\x74\x65\x6D", "\x2E\x66\x65\x64\x2D\x64\x72\x6F\x70\x2D\x73\x6F\x72\x74", "\x2E\x66\x65\x64\x2D\x64\x72\x6F\x70\x2D\x68\x65\x61\x64", "\x73\x6F\x72\x74", "\x75\x73\x65\x5F\x6C\x69\x6E\x65", "\x73\x74\x61\x72\x74\x69\x6D\x67", "\x2E\x6A\x70\x67", "\x69\x6D\x67\x2E", "\x65\x6E\x63\x5F\x63\x6F\x64\x65\x32", "\x69\x6D\x67\x70\x61\x74\x68", "\x66\x77\x31\x32\x35\x67\x6A\x64\x69\x39\x65\x72\x74\x79\x75\x69", "\x2F\x2F\x69\x6D\x67\x2E", "\x2F\x63\x6F\x6D\x69\x63\x2F", "\x43\x4E\x5F\x44\x49\x52\x45\x43\x54\x31", "\x2F\x2F\x69\x6D\x67\x31\x2E", "\x6D\x61\x6E\x67\x61\x5F\x73\x69\x7A\x65", "\x73\x77\x69\x74\x63\x68\x57\x65\x62\x70", "\x74\x6F\x70\x5F\x62\x61\x6E\x6E\x65\x72", "\x23\x69\x6D\x67\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x32\x30\x32\x30", "\x23\x77\x72\x61\x70\x66\x61\x62\x74\x65\x73\x74", "\x3C\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x22\x2F\x6A\x73\x2F\x61\x64\x5F\x2F\x61\x64\x31\x2E\x6A\x73\x22\x20\x6F\x6E\x65\x72\x72\x6F\x72\x3D\x22\x73\x63\x72\x69\x70\x74\x4C\x6F\x61\x64\x45\x72\x72\x6F\x72\x28\x29\x22\x3E\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E", "\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x69\x6D\x67\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x32\x30\x32\x30\x22\x3E\x3C\x69\x6D\x61\x67\x65\x20\x73\x72\x63\x3D\x22\x2F\x6A\x73\x2F\x61\x64\x5F\x2F\x70\x69\x63\x2E\x70\x6E\x67\x22\x3E\x3C\x2F\x69\x6D\x61\x67\x65\x3E\x3C\x2F\x64\x69\x76\x3E", "\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x77\x72\x61\x70\x66\x61\x62\x74\x65\x73\x74\x22\x3E\x0A", "\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x67\x67\x34\x33\x30\x22\x20\x73\x74\x79\x6C\x65\x3D\x22\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x3B\x68\x65\x69\x67\x68\x74\x3A\x20\x31\x70\x78\x3B\x77\x69\x64\x74\x68\x3A\x20\x31\x70\x78\x3B\x22\x3E\x3C\x2F\x64\x69\x76\x3E\x0A", "\x6C\x69\x6E\x65\x50\x72\x65\x66\x65\x72\x43\x6C\x6F\x75\x64", "\x6C\x69\x2E\x66\x65\x64\x2D\x64\x72\x6F\x70\x2D\x62\x74\x6E\x73\x20\x61\x5B\x6C\x69\x6E\x65\x49\x64\x3D\x32\x5D", "\x63\x68\x65\x63\x6B\x53\x69\x74\x65\x4E\x6F\x72\x6D\x61\x6C\x4C\x6F\x61\x64\x28\x32\x29", "\x63\x68\x65\x63\x6B\x53\x69\x74\x65\x4E\x6F\x72\x6D\x61\x6C\x4C\x6F\x61\x64\x28\x33\x29", "\x72\x65\x61\x64\x79", "\x6C\x6F\x67", "\u5220\u9664", "\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A", "\u671F\u5F39\u7A97\uFF0C", "\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C", "\x6A\x73\x6A\x69\x61", "\x6D\x69\x2E\x63\x6F\x6D"];

这种混淆称不上什么技术含量,就是单纯为了提高逆向成本。
这里只分析一段代码,所以简单翻译一下:(反正 JS 支持中文命名,这里直接放飞自我了)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
function 检测到调试模式() {
    if (useDevModeDetect && plantformIsComputer()) {
        //如果使用了调试模式,并且是电脑访问,直接跳转谷歌
        window["location"]["href"] = "https://www.google.com"
    }
}

//中略

!function() {
    var 预设延迟 = 50;
    var 调试状态 = false;
    setInterval(function() {
        var 当前时刻 = new Date();
        debugger ;if (new Date() - 当前时刻 > 预设延迟) {
            调试状态 = true;
            检测到调试模式()
        } else {
            调试状态 = false
        }
    }, 500)
}();

这是一个很有趣也很常见的反调试技巧:记录代码中(距离很近的)两个 check point 的运行时刻,如果两个时间点中间的差值很大(从第一个 check point 到第二个 check point 过了很久),说明这段代码正在调试器中运行,可以判定用户开了调试模式,直接暂停整个页面。
外层用一个匿名函数执行定时器,保证一直在从未间断地轮询检测。

一般到这个程度就要上 MITM 工具了,拦截原本的响应,等我们修改(把反调试删掉)完了再放过来。

但我有现成思路就懒得重新操作一遍了。

正餐

前略,直接上成品,Node.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var crypto = require('crypto');

const decryptKey1Arr = ["fw122587mkertyui", "fw12558899ertyui"];
const decryptKey2Arr = ["fw125gjdi9ertyui"];

function decryptAES(data, key) {
    let iv = "";
    let clearEncoding = 'utf8';
    let cipherEncoding = 'base64';
    let cipherChunks = [];
    let decipher = crypto.createDecipheriv('aes-128-ecb', key, iv);
    decipher.setAutoPadding(true);

    cipherChunks.push(decipher.update(data, cipherEncoding, clearEncoding));
    cipherChunks.push(decipher.final(clearEncoding));

    return cipherChunks.join('');
}

function decodeAndDecrypt(value, keyArr) {
    let decodedValue = Buffer.from(value,'base64').toString();
    for (let i = 0; i < keyArr.length; i++) {
        try {
            return decryptAES(decodedValue, keyArr[i])
        } catch (err) {
            console.log(err.message)
        }
    }
}

function downloadParse(encodedData) {
    let decryptedData = decodeAndDecrypt(encodedData, decryptKey1Arr);
    eval(decryptedData); //获得 mh_info

    let decryptedRelativePath = decodeAndDecrypt(mh_info.enc_code2, decryptKey2Arr);
    let decryptedTotalPages = decodeAndDecrypt(mh_info.enc_code1, decryptKey1Arr);

    let download = [];
    for (let i = 1; i <= decryptedTotalPages; i++) {
        download.push("https://img.cocomanhua.com/comic/" + decryptedRelativePath + ('000' + i).slice(-4) + ".jpg");
    }

    return {title: mh_info.mhname, chapter: mh_info.pagename, download_links: download};
}

let C_DATA = 'TkNaL203RTR6Mk1ZaXh5bXVMRUU4ZHV4eENqaUxneWJ6QnoxbFM2NnNaSVgxRnFHcFhxQ2xhRW13ZFBQYlB6K3pVWlRCcEJDWkFCbDA4d2F2azZjYUdFUVJrQ0cwUlBtZHNYQUxJM3JwT0orZHdwdTJnZ1hGTEdIcVpCRER6OCtuZnVwNVVBY0V4M0ZPWm9QbWpDUkV5cGpMYWk0MVhRVklFUDYrZGFhaGMzMmNWZ3VDWHBGTFpsd3dPVGtwZ0R4UWNMZVRpcExaa25CU2l2L00wV29id2lMVzBkREFSTnh4a0dNV2JYWG0rZ1FzclZNdlYweXRFczg5dXB3aWtjaTRobXAwMGVURzM2ek9MSGdJbzRKKzVkVlROYmNNc24xSElqbllxak1DcWdQRWlBRXN6Ny9hYWJFc0N5UTRZSDkvMGFxdXAvMi9QTmtlekx3cVdCOU9LeHBqTWVvREVVcXg0VXg0d0UzSjFhc01Bc0QzdFJ2eWdYL1BNSVV6Wm03Wjhlb2thdmgxZ3czc3JwV05EckN2SVlhdFYzQ2dTRFlZWDVFK1Q4ek1JVktaUVV1VWRJRERRSTU2MHZFeFJpOWhRQmc1ZjZjeFgyNzJpaEd4WUxhcFBmcHlwTHRSU3AyTUp5WHp6V1V6QTQ3MllkeTFXT0owTkNLYjNVd0ZwTWlUYXRyQmVwT0syb1dYS0tIZ1EvdTJtd2NPTjJqSDdjUi9tVy9RNTJQdnhHU3ljOUNyRiszNFdQQnRvZmdxUXF2aWpDWTMvTE4rTjIxT214bWdTZUVLK1puUmlOb09QbktMT2tIRW9pMWtBN0hQNGs2cVg5WHhFNFIxZWI0Zyt5YVRKd2IvRU1oVk40VjgySE9pbmpWSWRBclhXZGk0WHVabDhQdFlSbjN3b009';
//实际应该等待页面加载完成,然后正则匹配 C_DATA
let result = downloadParse(C_DATA);
console.log(result);

以上就是逆向过程,结果是带有格式类似 {title: 漫画名称, chapter: 章节名称, download_links: 本章节所有图片下载地址的数组} 的对象。

updatedupdated2022-05-012022-05-01