https://www.agefans.net/play/20160120?playid=3_1
打开控制台就跳转页面了,网上能搜到的信息都是会利用 debugger 停住页面,没有直接跳转的。
不谢
github.com/AEPKILL/devtools-detector
有点意思,console 对象也许有方法能判断是否打开了控制台,也许要先在地址栏改了这对象再开控制台
关闭 运行 js 脚本 就可以调式了
页面依靠 js 加载的怎么办?关了 js 连内容都不显示
在有 debug 的地方添加条件断点:false
页面加载完了禁用 js 就能调试了,毫无意义的把戏
里面的代码还搞了混淆加密,加密代码名叫:“'jsjiami.com.v5'”,笑死我了。
怎么弄啊,我加载完打开控制台就跳转了,禁用 js 除了控制台还有其他地方可以设置么?
应该是浏览器里面设置,禁止 js 执行吧
safari 并没有任何效果
会了,先添加允许,然后刷新页面再改成禁用。
哪里反调试了
有意思,有高手能指导一下跳转原理吗?没看出来蹊跷的地方。
装个拦截的插件就行了啊
https://github.com/fz6m/console-ban
禁止 F12 / 审查开启控制台,保护站点资源、减少爬虫和攻击的轻量方案,支持重定向、重写、自定义多种策略。
好像效果不是很好。

在哪里改的禁用?我这边改成禁用后,如果不刷新页面,直接打开控制台还是会跳转……禁用 js 的设置好像不对已经打开的页面生效
挺有意思哈
根据 的提示, hack 出来了
1. 去主页 www.agefans.net 给 history.js 加个断点
2. 回到视频页面, 断点开出来了,
3. debug 一会, 找到关键文件 cdn.radius-america.com /age/static/js/s_dett.js?ver=202102251329
4. 代码具体思路应该是 evel 中的函数(最后
eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[0-5]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(0(){1.addListener(0(2,detail){if(2){3 4=self;3 5=4.location;5.href=decodeURIComponent(\'%2f\')}else{}});1.lanuch()})();',[],6,'function|devtoolsDetector|isOpen|const|_s|_l'.split('|'),0,{}));
这个 evel 执行一个包裹了几层的字符串(并不是公私钥加密, 只是简单的加密)
效果应该就是跳转到主页了
hack 的方式很简单: debug 器可以赋值任意变量, 把执行出来的 p 赋值为 "console.log(1)" 交给 evel
(这个函数被执行了两次, 所以手工弄两次)
以上还是使用 chrome 操作的, 如果是专门的黑产浏览器估计都不用这么麻烦
这就引申出一个很有意思的问题, 开源世界里,一个人可以骗过一群人吗?
其实就是 2 点,1 循环 log 一个 toString 为自定义函数的变量,当这个 toString 被执行了,说明控制台打开了。
2 循环执行一个 debugger 的空函数,计算每次函数执行的间隔,如果执行间隔超过了 100ms,说明控制台被打开了,触发了断点。
1. 到首页或者新开页面,在 Network 区域,选择 slow 3G 。
2. 加载目标页面,把所有 js block 一遍,一个个开,发现是这个 js https://cdn.radius-america.com/age/static/js/s_dett.js?ver=202102251329 。
3. 给这个 JS 打个断点,最后一段发现这个。
```javascript
if (__getCookie_v3('username') != 'admin') {
eval(function(p, a, c, k, e, r) {
e = String;
if ('0'.replace(0, e) == 0) {
while (c--)
r[e(c)] = k[c];
k = [function(e) {
return r[e] || e
}
];
e = function() {
return '[0-5]'
}
;
c = 1
}
;while (c--)
if (k[c])
p = p.replace(new RegExp('\\b' + e(c) + '\\b','g'), k[c]);
return p
}....
```
后面是一堆 eval 的 string,会有一个`devtoolsDetector`,然后这个会判断是否打开了 console,判断方式见楼上各位大佬的链接。
4. 上面代码有个 BUG,__getCookie_v3,试了试就是获取叫 username 的 cookies 的值,这里写的不是 admin 的时候会执行这段代码。
5. 后面怎么操作不用多说了吧= =...
这类网站很多都喜欢搞反调试
还见到过一个更猛的 http://www.otomedream.com/
所以只需在调试拦输入 document.cookie = "username=admin;domain=.agefans.net"
然后 Enter,就破解了,刷新页面可用,亲测有效
右键检查就搞定了,这种反调试感觉没啥意思
你是用的什么浏览器,我用的 edge 右键,发现层主说的猛了,确实有意思
可以通过创建一个 dom 元素,然后利用 defaineProperty 去检测这个元素的 id 有没有被访问,被访问则表示打开了控制台。这方法是曾经在 github 上看到一个人做的控制台检测工具源码发现的,我在本地试了下,果然可用。
https://www.mvcat.com/movie/5316.html
黑客帝国特效的反调试
很多年前,连 USB 芯片加密方案都被破解了,hacker 团队直接在驱动层做了个模拟软件。
js 这种连代码都直接可读的玩意,与其浪费时间研究加密,还不如多学习基础知识,或者好好生活娱乐..
原来是这样,我说怎么在 iPhone 上使用 Chrome 根本无法观看里面的动漫,估计是 Chrome 触发了这一块的代码。
edge 没效果,打开了调试也没跳转
edge 亲测没跳转