爬虫js逆向基础——06常见开源代码破解方案

补充

Nodejs` 里全局对象可重写,删除,而浏览器里面不行

浏览器:
delete window ->false
delete document ->false
而这个操作在`Nodejs`里可以执行

1.ob

ob混淆有众多参数,但是玩遍不离其宗

结构如下:

  1. 大数组

  2. 数组移位(有内存泄露风险,建议不格式化)

  3. 解密函数(有内存泄露风险,建议不格式化)

    可能有定时器,看加密开关开启数量

  4. 实际代码加控制流平坦化,(整体ob的强度几乎完全取决于这段代码的强度,这里面是加密前的逻辑)

  5. 控制流平坦化+无限debugger自执行函数+死代码注入。一般情况下不会有业务逻辑

2.jsfuck

在控制台执行,如果报错可以直接看到源码,

看到源码后,还报错,可以在这段代码后加上jsfuck后的alert(1),在控制台输入,回车可以运行了,但是看不到源码, 这时候最后有一个括号,里面+"a",回车后会报错,然后可以看到源码

3.表情包

表情包直接复制到控制台的话,回车会报错,无法运行,最后会有一个括号括起来的笑脸,把那个笑脸删掉就可以运行了。

补充

function a(){console.log('a');return true}
function b(){console.log('b');return false}
function c(){console.log('c');return undefined}
function d(){console.log('d');return null}

result = a() || b() && c() || d() //true a()返回true后面就不执行了,会先打印出a,然后返回true
result = a() && b() || c() //打印出abc undefined
result = (a()||b())&& c()|| d()//acb  null

const {productSub} = navigator 等同于 const productSub = navigator.productSub
直接在nodejs里执行很危险,
他可能这样写
try{
	eval('fs = require("fs")');
	fs.readFile('./1.txt', 'utf8', function(err, data){
		console.log(data)
	})
}
catch(e){
	console.log('这是正常执行的代码')
}
开头加上

require = function(){}
delate require

浏览器指纹

如果从安全开发者的角度来看,找到`node`与`web`的异常的地方, 就可以实现逻辑检测

- 全局变量`global`
- 导包引擎`require`[很危险]
- 可被重写的全局
- 绝大多数的`webapi`
- 全部的`dom`节点


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值