声明:文章只用于技术交流使用,不得用于非法用途,如果侵犯贵公司权益,请联系站长,立即删除


某文库想必您应该也知道了是哪个了

先献上”祭品“(当然要经过处理了):aHR0cHM6Ly93ZW5rdS5iYWlkdS5jb20vdmlldy8xYWVmODk3NTg1NjJjYWFlZGQzMzgzYzRi
YjRjZjdlYzRiZmViNjBiLmh0bWw=

背景

今天没想搞它的,结果白天他不让我用
这我能忍?
搞他

(之前我记得某原创力还是豆丁的来着,也是服务器返回图片,前端渲染出可复制的文字)

先说一下禁止复制通用解决方案

  • 如果大站的话查看一下js里面是否引用了jquery,引用的话,$=function(){}

  • 确定是否页面是js渲染的,如果文本内容不是,那么可以用被一群营销号用烂了的禁止js

  • 开发者工具栏,找监听事件,找有关copy的,删除

  • 用开发者工具选择文字所在的元素,复制文字

如果都不能解决,那么恭喜你,碰上碴子了,

此站现象


捣乱

特殊之处

你会发现上述几种方法全部失效,服务器返回的是图片,可复制的文本是js渲染的,禁止js更掰扯

分析

先抓包分析

发现返回的全是图片,说明可复制的文字是js渲染的
上述的方法我都试过。全都不行,想必看看下面这个截图就懂了

下面开始逆向分析
打断点,看看能不能找到弹窗代码
然后发现禁止了F12,这好办
浏览器打开开发者工具就完事
首先等他加载完成打开script断点

然后就会发现,他断不下来
接下来换一个思路
搜索文本

发现是webpack打包

搜索一下,定位

发现代码混淆了,文字没有混淆
看不清逻辑的话,可以把这段代码复制到notpad++折叠一下层次

这段代码下面还有

但是这里没有什么用,只是弹窗提示
上下翻一下代码

copy_ount复制的数量?估计一会有用

我们找到了这个,啪的一下,很巧啊
然后给他打一个断点
然后断在了这里

追进去看,发现他是从cookie里读取这个参数

我们可以打印一下cookie

单步执行,到了这里

o.get = function(e) {
                return a(e, !1)
            }

还是返回这个参数

单步再单步

// 这样的话,是小于10的, e为true
var e = this.getCountFromCookie() < 10;
return t > 100 && !this.isVip && this.docBizType !== V.b.SECRET && (e = !1),
                    this.isVip || e

this.docBizType !== V.b.SECRET这一句字面判断,他就为true,猜测他是判断文章类型是不是密文,
这一句用了几个连着的&&,
(e = !1)这一句还判断了e是不是为false,
(js!1=false)

联合判断当前用户,是不是可以复制
其中t参数为190,我没有深究

解决方法


代码拉到本地

添加本地映射,auto responder

canCopy: function(t) {
    // var e = this.getCountFromCookie() < 10;
    // return t > 100 && !this.isVip && this.docBizType !== V.b.SECRET && (e = !1),
    // this.isVip || e
    return true
},

这样其实有风险,他可以检测canCopytoString是否和之前一致,不过他没有检测
刷新页面,清空缓存,

确保代码已经修改,这时再复制,就成功了

分类: js逆向

浙公网安备33011302000604

辽ICP备20003309号