HKVS获取固件
一个项目设备,记录下获取到固件的过程。 尝试1:串口提取(失败)首先通过USB2TTL拿到了U-Boot shell。命令里没有md等命令,尝试通过设置bootargs环境变量方式来。 尝试2:mtd 挂载(失败)还考虑使用 mtd 挂载的方式来读取,不过经过尝试,该方法仅适用于 ubi.img 没有错误的情况,否则会在 ubi attach 的时候报错。对应的 flash 芯片为 GD5F2GQ5UExxG,对应文档链接:https://download.gigadevice.com/Datasheet/DS-00890-GD5F2GQ5UExxG-Rev1.6.pdf可以看到比较重要的数据: 12345# 这四位是 read ID 返回的四个字节Manufacturer ID: 0xC8Device ID: 0x52Byte2 Byte value: noneByte3 Byte value: none 提取到的 bin 文件差不多为 256MB ,共有 2k 个块进行挂载不太行,首先是没有对应的 mtd simulated...
GreenHouse论文复现
考虑复现一下该工作 环境 Ubuntu 20.04 docker Docker环境使用清华源安装docker即可设置docker build时的代理: 1docker build -t greenhouse --network host . 修改Dockerfile内容: 1234567FROM m.daocloud.io/docker.io/library/ubuntu:20.04ENV ALL_PROXY="http://127.0.0.1:7890"...# 注释掉该行,因为仓库里没有该文件# COPY ubuntu.tar /ubuntu.tar... Docker Build进行编译,发现卡死在选择时区界面: Dockerfile开头添加以下内容: 12345RUN export DEBIAN_FRONTEND=noninteractive \ && apt-get update \ && apt-get install -y tzdata \ && ln -fs...
GreenHouse论文笔记
论文概述论文题目:Greenhouse: Single-Service Rehosting of Linux-Based Firmware Binaries in User-Space...
V8 数据结构
记录下V8的数据结构。 ArrayBuffer用于表示通用的原始二进制数据缓冲区。其为字节数组(bytearray)。不能直接操作ArrayBuffer内容,而是要通过类型化数组对象或DataView对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区内容。 创建ArrayBuffer123// 创建8字节缓冲区,并使用Int32Array视图引用const buffer = new ArrayBuffer(8);const view = new Int32Array(buffer); 操作ArrayBuffer要操作ArrayBuffer内容,需要使用视图对象。视图对象不存储任何数据,它只是对ArrayBuffer中字节的解释。例如Uint8Array将每个字节视为独立的数字。 123456let buffer = new ArrayBuffer(16);let view = new Uint32Array(buffer);view[0] = 123456;for(let num of view) { console.log(num);...
Client V8学习
V8 V8-ignition指令 V8内存回收机制 Code-caching V8 Hole V8指针压缩 V8 数据结构
V8 Code Caching
概述v8使用JIT执行JavaScript代码,因此在执行前需要解析并编译,由于每次执行前都需要做此操作的话开销过大,引入code cache来优化(version >= 4.2)。script 第一次执行后,会保存其cache data。下一次v8编译相同script时(不同的v8实例也可以使用)则会使用cache data。一个早期版本的code cache功能api测试用例:testcase当v8编译一个script脚本后,可以通过添加v8::ScriptCompiler::kProduceCodeCache选项来生成相应的cache data用于后续的编译。如果编译成功,则会将cache data添加到source object并且可以通过调用v8::ScriptCompiler::Source::GetCacheData获取。 注:v8::ScriptCompiler::kProduceCodeCache被废弃,新api:v8::ScriptCompiler::GetCodeCache 在后续的编译中,先前生成的cache...
GoogleCTF 2022 d8 Write Up
有一位大佬分享了当时的wp思路,网上似乎没找到中文版的wp,在此做翻译记录和学习。 概览题目目录文件: 12345678910base ❯ tree -L 1.├── build.Dockerfile├── challenge├── launcher.py├── Makefile.txt├── snapshot_blob.bin└── v8.patch0 directories, 6 files 根据v8.patch文件可知定义了/srv/challenge/runner.cc文件作为题目。 12345-DEFINE_BOOL(wasm_write_protect_code_memory, true,+DEFINE_BOOL(wasm_write_protect_code_memory, false, "write protect code memory on the wasm native heap with mprotect") 主要逻辑为challenge二进制程序接收用户输入(大小不超过65536)binary...
V8 Map对象学习
学习一下V8的Map对象,以下基本为对参考链接的文章的翻译转载。 引入ECMAScript 2015,也被成为ES6,引入了很多内置类型,例如Map、Set、WeakMap、WeakSet。他们是对标准JS库的扩展并在其他库,应用以及Node.js Core中广泛使用。今天我们关注于Map类型并且尝试去理解V8中的该类型实现细节,同时做一些总结。规范并没有规定用于实现Map类型的精确算法,而是为可能的实现以及预期的性能特征提供了一些建议: Map object must be implemented using either hash tables or other mechanisms that, on average, provide access times that are sublinear on the number of elements in the collection. The data structures used in this Map objects specification is only intended to describe the...
V8-Hole漏洞
对于V8 Hole相关内容的学习V8 Map对象的分析可以看这篇搬运:V8-Map对象 V8源码分析在v8中,JSMap的内存布局如下: Map:每个对象会有的,包含对象属性的shape; FixedArray Length:整个OrderdHashMap的大小 elements:存在的entry的数量 deleteds:删除的entry数量 buckets:buckets数量考虑如下代码:12345678910111213141516171819var map = new Map(); %DebugPrint(map); readline(); map.set(1, 1); map.set(2, 1); map.set(3, 1); map.set(4, 1); %DebugPrint(map); readline(); map.delete(3); %DebugPrint(map); readline(); map.set(5, 1); %DebugPrint(map); ...
honggfuzz学习笔记
Honggfuzz特性 多进程-多线程; pesistent fuzzing mode:fuzz api时,在同一进程中输入新的数据。可以显著提升模糊测试效率 crash track记录完整准确 使用底层(eg:ptrace)接口监视进程状态。可以检测到被劫持、忽视的信号 支持多种基于硬件指令级以及软件层的覆盖率测量方式;同时支持qemu mode的黑盒测试。 persistent fuzzing mode:长期存活的进程重复调用fuzz接口 lets you fuzz your target persistently between two addresses - without forking for every fuzzing attempt. TODO:使用 参考链接 honggfuzz
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)