逆向分析:基于 JS 字节码的保护技术

本文探讨了如何利用V8运行时环境对JavaScript源码进行保护,通过监控ECMAScript API和V8内置API来跟踪字节码行为。作者的目标是构建一个基于V8的动态调试器,支持字节码断点,以应对加密和混淆的JS代码。文中提供两个示例,一个是明文代码,另一个是JSFuck编码,强调了动态调试的重要性。
摘要由CSDN通过智能技术生成

现在流行使用 JS 字节码对 JavaScript 源码进行保护。我怎么感觉技术也是轮回发展的呢?字节码与 JavaScript 源码的关系,就像汇编与 PE 或 ELF 一样,感觉又回到了 N 年前用 IDA+OD 做逆向的时代。但时代不同了,逆向的程序越来越大,工作量越来越大,需要更有效的自动化手段来降低逆向的工作量。当然,再自动的方法也只能是辅助工具,因为逆向就是个体力活。

我的思路:既然 V8 是 JavaScript 运行的宿主机,那么在 V8 中能看到 JavaScript 的一切行为,那我应该在 V8 中加入必要的监控手段来调试 JS 和字节码,我在 V8 中加入的监控分为以下两类:

(1) 监控每个 JS API,准确地说是所有的 ECMAScript API。

(2) V8中内置 API,这些 API 主要用于为 ECMAScript API 提供基础库,例如,读取本地时间等一些加解密常用的操作。

这 (2) 点非常用重要,如果不做这一点,我们只能看到字节码表面的信息,数据在字节码内部的流转或操作就捕捉不到了。

这和我一直在研究的 Chromium-powered Taint Tracking 是同样的技术,只是应用场景不同而已。我的最终目标是以 V8 为基础实现一个可监控的、有字节码断点功能的调试器,简单地说就是一个可以动态调试字节码的 OD。

这个目标的原理很简单,但工程量很大,过去的大半年里,我做了不少的逆向工作,在实际中逐渐完善,目前算基本完工了。通过字节码保护 JavaScript,再稍微多加一些无用的字节码(花指令)就可以达到人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值