Write Barrier
V8 Write Barrier 在垃圾回收(Garbage Collection, GC)中,write barrier(写屏障) 是一种机制,用于在程序运行时,监控和记录堆内存中对象引用的变化,以便垃圾回收器能够正确地管理内存。它是一个非常重要的优化技术,尤其是在现代垃圾回收器中,比如 V8 引擎的 GC。 写屏障的作用写屏障的主要作用是在对象引用发生变化时,通知垃圾回收器,从而使垃圾回收器能够高效地完成以下任务: 1. 支持分代垃圾回收(Generational GC)在分代垃圾回收中,堆被分为两代: 新生代(Young Generation):存放生命周期较短的对象。 老年代(Old Generation):存放生命周期较长的对象。 分代垃圾回收的一个关键点是记录老年代对象对新生代对象的引用,因为垃圾回收器在回收新生代时,只扫描新生代对象和这些老年代到新生代的引用,而不扫描整个老年代。 写屏障的作用在于: 当老年代对象的某个字段指向了一个新生代对象时,写屏障会记录这个引用关系,通常通过一个记忆集(Remembered...
Mark Compact Sweep
V8的内存回收机制之Mark-Compact的Sweep功能其定义位于//v8/src/heap/mark-compact.cc的MarkCompactCollector::Sweep函数:完成工作: 按照特定顺序清理v8堆中的各个内存空间(大对象,普通页,新生代对象) 检查是否为MemoryChunk::BLACK_ALLOCATED标志位,代表为存活对象,不是则进行下一步检查 检查是否标记过,是则代表存活,否则代表对象已死亡,需要释放;普通页以及新生代内存释放操作在evacuate阶段进行。showLineNumbers123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869void MarkCompactCollector::Sweep() { DCHECK(!sweeper_->sweeping_in_progress()); ...
CVE-2021-23840漏洞原理分析与复现
CVE-2021-23840整数溢出漏洞漏洞概述该漏洞为公开漏洞,漏洞编号为CVE-2021-3449,漏洞类型为空指针引用漏洞,存在于OpenSSL的1.1.1-1.1.1i版本,包含11.1.4目标PA设备中的开源组件OpenSSL版本1.1.1g。官方描述信息如下: 漏洞原理比对修复版本,在修复版本增加的内容check如下: 根据其注释,要求(inl-j) & ~(bl -1)的值不能超过 INT_MAX - bl。 存在漏洞代码如下,在漏洞函数evp_EncryptDecryptUpdate内第350行进入if(i !=0)分支,在第351行进入else分支,此时openssl会进行加密算法的padding部分,即将不是规定分组大小整数倍的长度补充到分组大小整数倍。此时会将*outl +=...
V8内存回收机制
V8内存回收机制V8 采用的垃圾回收算法(2019年)内存回收机制的基本组成部分 识别存活/已死亡对象 回收死亡对象的内存 整合分片化内存(可选) v8垃圾回收机制分为Major GC和Minor GC两种内存回收器 Major GC:Mark Compact(针对整个堆空间) Minor GC:Scavenge & Minor Mark Sweep(针对新生代) Major GC (Full Mark-Compact)major gc负责从整个堆内存中回收垃圾内存。 上图为最简单的版本,将Major GC 分为三个阶段: marking,...
鸿蒙CTF出题
很荣幸能给鸿蒙CTF出题,最近一直在忙别的活,因此出题有不足的地方请见谅。。。(听说决赛上一开始没给固件然后大家都卡在了提固件上,出题人就情不自禁地轻哼起来XD 以下为出题过程的记录总结,可能思路存在跳跃、逻辑不清晰、前后不一致等问题,请各位师傅见谅 1. 出题思路在openharmony的系统内存放了升级包固件的解密程序,即已获得旧版本固件shell(或者说有能力获取shell),需要利用升级程序中的解密程序解包更新后的加密固件。flag则打包存放在更新加密固件中。 2. 环境搭建使用的工具和环境 Windows 11 Ubuntu 20.04 Visual Studio Code DevEco Device Tool 小熊派Hi3861开发板 0x01 搭建开发环境(Windows)下载安装DevEco Device...
IoT Fuzz论文调研
IoT领域有关Fuzz论文的汇总调研,随缘更新~ 主要关注模糊测试分析的IoT目标对象、白/灰/黑测试、模拟级别、基于工具等信息 论文名称 期刊会议 目标 模糊测试 模拟级别 基于工具 Firmadyne NDSS 2016 Linux服务 系统模拟 Firm-AFL USENIX 2019 Linux服务 灰盒 系统+用户模拟增强 QEMU,TriForce,DECAF FirmAE ACSAC 2020 Linux服务 系统模拟 EQUAFL ISSTA 2022 Linux服务 灰盒 用户模拟 QEMU Greenhouse USENIX 2023 Linux服务 灰盒 用户模拟 IoTFuzzer NDSS 2018 带App的IoT设备 黑盒 硬件设备 Diane SP 2021 带App的IoT设备 黑盒 硬件设备 P2IM USENIX 2020 裸机 黑盒 系统模拟 uEmu USENIX 2021 裸机 灰盒 系统模拟 Fuzzware USENIX...
Sok论文阅读
题目:SoK: Prudent Evaluation Practices for Fuzzing 期刊/会议:2024 IEEE Symposium on Security and Privacy (SP) 作者:Moritz Schloegel (CISPA) 论文简介对2018到2023年的有关fuzz的论文(150篇A类期刊)进行了总结,并且提出需要有一个更加精确谨慎的评估方法,确保成果工作的可重复性,可验证性 These case studies allow us to assess the practical reproducibility of fuzzing research and identify archetypal pitfalls in the evaluation design. Unfortunately, our reproduced results reveal several deficiencies in the studied papers, and we are unable to fully support and...
国内GPT中转配置方案
国内GPT中转配置方案官网主页:https://api.bianxie.ai/ 软件/代码/插件接入使用便携AI聚合API需要两个数据: BASE_URL:有的软件里也叫API URL或者OPENAI_API_BASE,都是一个意思,就是说你从这个链接调用服务; API Key:就是令牌,以sk-开头的一长串字符。 客户端工具:https://github.com/Dooy/chatgpt-web-midjourney-proxy 配置BASE_URL和API_KEY即可直接使用 GPT API使用参考模版以一个调用LLM读取报文协议生成模糊测试初始化种子的demo为例 文件目录树: 12345678❯ tree .├── config│ ├── config.yaml│ └── prompts│ ├── generate_seeds.txt│ └── packet└── ...
Vim配置方案
Vim配置方案参考链接: Vim的终极配置方案,完美的写代码界面! ——.vimrc[通俗易懂] vim插件管理器:Vundle的介绍及安装(很全) 在~/.vimrc修改配置即可: 安装Vundle安装插件工具 1git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 在~/.vimrc头部添加以下信息(下面的几个Plugin是例子): 12345678910111213141516171819202122232425262728293031323334353637383940414243set nocompatible " be iMproved, requiredfiletype off " required" set the runtime path to include Vundle and initializeset...
PromptFuzz论文阅读
题目:Prompt Fuzzing for Fuzz Driver Generation 期刊/会议:CCS 2024 作者:Hao Chen (腾讯Big data Lab) 论文简介主题:提出了一种新的基于提示词对库文件进行fuzz的方法。 背景:对标准库的fuzz存在几个难点 api函数覆盖度不够(hopper给予解决,但其种子的输入空间太大) 种子输入空间太大,如何生成高质量的种子才能进入到较深的分支。 整体架构: Instructive Program Generation:提取库的类型定义以及api函数定义,喂给大模型初步生成fuzz driver( Program Instance)。 Erroneous Program Validation:运行Program Instance(有fuzz语料库),去除错误程序(检查运行状态),同时获取代码覆盖率。 Coverage Guide Mutation:将其代码覆盖率反馈给大模型,对Program Instance进行变异,添加或删除api函数。 Constrained Fuzzer...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)