炒股入门笔记
炒股入门笔记成交量
换手率
抛压
封板
浅析 V8-turboFan
浅析 V8-turboFan一、前言
v8 是一种 JS 引擎的实现,它由Google开发,使用C++编写。
v8 被设计用于提高网页浏览器内部 JavaScript 代码执行的性能。为了提高性能,v8 将会把 JS 代码转换为更高效的机器码,而非传统的使用解释器执行。因此 v8 引入了 JIT (Just-In-Time) 机制,该机制将会在运行时动态编译 JS 代码为机器码,以提高运行速度。
TurboFan是 v8 的优化编译器之一,它使用了 sea of nodes 这个编译器概念。
sea of nodes 不是单纯的指某个图的结点,它是一种特殊中间表示的图。
它的表示形式与一般的CFG/DFG不同,其具体内容请查阅上面的连接。
TurboFan的相关源码位于v8/compiler文件夹下。
二、环境搭建
这里的环境搭建较为简单,首先搭配一个 v8 环境。这里使用的版本号是7.0.276.3。
如何搭配v8环境?请移步 下拉&编译 chromium&v8 代码
这里需要补充一下,v8 的 gn args中必须加一个v8_untruste ...
根据一个V8的commit编号来查找对应的Chrome稳定版本发行编号
根据一个V8的commit编号来查找对应的Chrome稳定版本发行编号方法一:使用Chromium Dashboard(官方推荐)
访问Chromium Dashboard: https://chromiumdash.appspot.com/
在搜索框中输入V8 commit hash
或者使用URL直接访问:https://chromiumdash.appspot.com/commit/<commit_hash>

方法二:使用Git操作在V8仓库中查找:
12345678910# 克隆V8仓库(如果还没有)git clone https://chromium.googlesource.com/v8/v8.gitcd v8# 查找包含该commit的分支和标签git branc ...
微信浏览器v8分析过程
微信浏览器v8分析过程环境搭建微信的x86历史版本
https://github.com/tom-snow/wechat-windows-versions-x86/releases?expanded=true&page=1&q=3
微信的历史版本下载来后不一定能用,因为弹出强制更新。可以通过工具去绕过。
https://github.com/Skyler1n/WeChat3.9-32bit-Compatibility-Launcher
微信v8版本获取网上的很多方法都过期了,无法使用。现在能用的是
通过https://www.whatismybrowser.com/去获取数据头,得到x86的3.9.112.56的大概版本是107的chrome。x64的4.1.6.46是132版本的
无法使用的
https://www.yuque.com/wuchendi/fe/winwechat#DBxgz
微信利用和直接在v8利用没区别。没有开启chrome sandbox,但现在只知道微信版本3.2.11.151 是这样的
https://cloud.tencent.com ...
WAVM源码解析 —— WASI接口定义、内部实例初始化及实例链接
WAVM源码解析 —— WASI接口定义、内部实例初始化及实例链接前言从前面两篇文章中,我们可以窥探,WAVM执行一个wasm程序,主要包括一下步骤:
加载wasm二进制文件到内存,解析生成 IR::Module在这一步主要是解析wasm的各个Segment,保存到我们自定义的数据结构IR::Module中
编译生成本地可执行的二进制代码这一步是实现JIT的关键,是区别于wasm解释器的地方,这样我们就可以通过wasm程序中各个函数的地址,来调用执行,同我们执行普通的C函数一样,这有点类似于加载动态链接库中的函数(见 dlsym(3))
生成内部实例这一步是实现外部函数接口的关键,比如wasi定义的接口,这些接口都将在内部实例中实现
链接链接的主要工作就是根据需要导入的Module和导入项的名字,在对应的实例中查找,以获取对应的内容,如导入的函数,需要获取其入口地址。wasi定义的接口,就需要在链接的过程中,从内部实例中获取对应接口函数的地址
实例化生成实例,其实生成内部实例的过程也是实例化,只不过内部实例不基于任何IR::Module,也无需链接任何内容所谓实例化,主要内容就是为内 ...
windows_v8引擎编译过程记录(保姆级教程)
windows_v8引擎编译过程记录(保姆级教程)0.环境配置1.Python3省略
2.Git省略
3.VS2022需要安装这些东西,最重要的是windowsSDK找到对应windows10的版本,同理win11也是找win11的版本。
完成后关闭Visual Studio Installer,在Windows搜索栏搜索添加或者删除程序
搜索Windows Software Development Kit.找到我们的版本,点击修改
选择Change,然后点击Next
勾上Debugging Tools for Windows,点击Change
完成后关闭窗口
1.下载v8项目源代码找到一个合适的地方创建空文件夹v8,打开cmd,设定工作目录到v8文件夹
运行命令配置代理,根据代理工具的端口修改
12345git config --global http.proxy http://192.168.113.1:7890git config --global https.proxy http://192.168.113.1:7890set HTTP_PROXY=http://19 ...
V8漏洞分类
V8漏洞分类V8 引擎作为 Chrome 等浏览器的 JavaScript 引擎,其漏洞成因与 JavaScript 的执行机制、内存管理、即时编译(JIT)等核心功能密切相关。从漏洞成因角度,常见的 V8 漏洞利用方法可分为以下几类,结合利用难度(从低到高)排序如下:
1. 类型混淆(Type Confusion)漏洞
成因:V8 对 JavaScript 对象的类型校验不严格,导致攻击者可通过操作对象属性或原型链,使引擎错误地将一种类型的对象当作另一种类型处理(例如,将数组对象当作普通对象访问,或混淆JSObject与TypedArray等)。
利用难度:较低
类型混淆漏洞通常可直接通过构造特殊的对象交互触发内存非法访问,无需复杂的内存布局控制。例如,通过修改对象的map(V8 中用于描述对象结构的元数据),可绕过类型检查,直接读写敏感内存区域,进而构造 ROP 链或执行 Shellcode。
典型案例:CVE-2019-5786(通过修改数组length属性触发类型混淆)。
2. 越界访问(Out-of-Bounds Access)漏洞
成因:多发生在数组(尤其是Type ...
V8堆沙箱绕过方法分析总结
V8堆沙箱绕过方法分析总结一、What is Sandbox沙箱机制(Sandboxing)是一种安全技术,用来隔离运行中的应用程序或代码,使其在受限的环境中执行。这种机制的目的是限制应用程序或代码与系统资源(如文件系统、网络、硬件)的直接交互,从而防止恶意软件或不受信任的代码造成安全威胁或数据泄露。
当提到chrome沙箱时通常会想到的是用于限制应用程序或代码与系统资源的直接交互的沙箱,而在实际的漏洞利用层面内存安全仍然是一个重要问题,在众多chrome可利用的漏洞中,v8漏洞可以说占到大多数,而V8漏洞很少是“经典”的内存损坏错误(释放后使用、越界访问等),而是微妙的逻辑问题,反过来再利用这些问题来损坏内存。因此,现有的内存安全解决方案在很大程度上并不适用于V8,于是在此背景下衍生出了v8 Sandbox。本文主要对v8 sandbox的一些绕过方法进行汇总分析。
二、V8 SandboxV8沙箱是一个基于软件的沙箱,其背后的基本思想是隔离 V8堆内存,使任何内存损坏都不会“扩散”到进程内存的其他部分,从而增加v8漏洞的利用难度。具体实现方式有两种: 第一种,如果buffer位于沙 ...
V8 沙箱绕过
V8 沙箱绕过这是 DiceCTF2022 的一道题 memory hole。
题目给了我们修改任意 array 的 length 的能力,按过往的经验,接下来很简单,就是构造任意地址读写原语,构造 WASM 实例,读 RWX 空间地址,写 shellcode ,调 WASM 函数,结束。
但题目开启了 V8 沙箱,一个新的安全机制,直接阻止了我们构造任意地址读写,能访问的范围是 array 基址后连续的 4G 地址空间。
绕过这个沙箱是本题的重点,看了两篇wp有所收获,所以整理了下绕过手法,未来可能会用到。
【题目地址】 https://github.com/Jayl1n/CTF-Writeup/blob/master/DiceCTF2022/memory-hole/1984.tar.gz
指针压缩64 位 V8 中使用了“指针压缩”的技术,即将 64 位指针转为 js_base + offset 的形式,只在内存当中存储 offset ,寄存器 $14 存储 js_base ,其中 offset 是 32 位的。JS 对象在解引用时,会从 $r14 + offset 的地址加载。因 ...
V8 沙盒
V8 沙盒前言自最初的设计文档发布以来,历经近三年,期间提交了数百个CL(兼容性请求),V8 Sandbox——一个轻量级的进程内V8沙箱——如今已发展到不再被视为实验性安全功能的阶段。从今天起, V8 Sandbox正式加入Chrome的漏洞奖励计划(VRP)。尽管在它成为一道强大的安全屏障之前,仍有一些问题需要解决,但加入VRP无疑是朝着这个方向迈出的重要一步。因此,Chrome 123可以被视为该沙箱的“测试版”。本文将借此机会探讨沙箱背后的动机,阐述它如何防止V8内存损坏在宿主进程中扩散,并最终解释为什么它是实现内存安全的必要步骤。
动机内存安全仍然是一个重要问题:过去三年(2021-2023 年)所有在实际环境中发现的 Chrome 漏洞都源于 Chrome 渲染进程中的内存损坏漏洞,该漏洞被利用来实现远程代码执行 (RCE)。其中,60% 的漏洞存在于 V8 内核中。然而,问题在于:V8 的漏洞很少是“经典”的内存损坏漏洞(例如释放后使用、越界访问等),而是更微妙的逻辑问题,这些问题反过来又可以被利用来破坏内存。因此,现有的内存安全解决方案大多不适用于 V8。特别是,无论是 ...



