记录一次去除 Chrome 扩展程序激活验证的过程

某位骚年说是想喊我帮忙看看一个 Chrome 的扩展程序是否可以破解,去除激活验证。虽然这有些缺德,但是你要深深地明白穷*高中生的痛。我抱着试试看的心态,拿到了这个 crx 文件后,开始一步一步搞事情。Well, Here We Go…

Step 1

首先对这个 Crx 文件进行解包,直接用 7z 等解压缩工具即可

然后你会看到这个 Chrome 扩展程序的目录结构是这样的

Step 2

加载这个扩展,使用 DevTools 进行观察

找到了和激活验证相关的代码写在 \scripts\popup.js

使用工具(我用 jsnice) 尝试还原已混淆的文件

Step 3

观察 popup.js 代码,发现有很多地方都使用了变量 _$_ad16,并且这个变量是一个数组

Console 敲入 _$_ad16

通过观察可知,需要把 _$_ad16[...] 全部替换成 数组 _$_ad16 中具体的值,这样 popup.js 代码才可读

所以,我写了下面这段 JS,通过替换字符串,来达到想要的效果(你可以直接在浏览器的控制台中运行以下代码)

1
2
3
4
5
6
7
8
9
10
var code = String.raw`
// popup.js 代码放到这里
`;

var name = `_$_ad16`; // 变量名
for (var i = 0; i < Object.keys(window[name]).length; i++) {
code = code.replace(new RegExp(`${name}[${i}]`.replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"), 'g'), JSON.stringify(window[name][i]));
}

console.log(code);

lol 得到可读代码:

Step 4

直接将原来验证激活的代码注释了,然后把下图红框中的代码移到前面 23333

完成破解

成品

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 罐子屋破解 v1 (2018-11-27)
*/
var code = String.raw`
// scripts/popup.js 代码放到这里(需先 jsnice.org 反混淆)
`;

var name = `变量名`;
for (var i = 0; i < Object.keys(window[name]).length; i++) {
code = code.replace(new RegExp(`${name}[${i}]`.replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"), 'g'), JSON.stringify(window[name][i]));
}

code = code.replace(/(document\[["']addEventListener["']\]\s*\(["']DOMContentLoaded["'],\s*function\(*.+\)\s*\{)[\s\S]*?(\}\));/igm, '$1\n Popup["main"]();\n $("#timeEndSpan")["text"]("永久");\n$2');

console.log(code);

最后

其实搞这种不难,并没有什么技术含量

最重要的是,我又水了一帖 #(滑稽)

本站文章除注明转载外均为原创,未经允许不要转载哇. ヾ(゚ー゚ヾ) http://qwqaq.com/a845bac.html
分享到