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...
Tenda无线放大器固件提取以及分析
心血来潮有机会把Tenda无线放大器的flash提取出来了,然后在此记录下解包以及安全分析过程 固件提取flash提取就不多说了,用热风枪+编程器一把梭即可拿到flash提取的内存bin文件后,使用binwalk查看,发现了ubi文件,但是直接使用github已有的工具ubi_reader以及ubidump.py都无法成功提取。通过跟着ubidump.py一步步调试发现是两个问题: 该固件的ubi block_size过大,为0x20000。而ubidump.py中定义的太小,无法成功识别到下一个块的magic头 该固件每隔0x800字节都会有0x40字节的padding byte,需要删除掉。解决以上两个问题后,即可看到squashfs文件,将其dump下来。此处贴一下与ubidump.py的diff内容1234567891011121314151617181920212223242526272829303132333435base ❯ diff ubidump.py ubidump.py.bak 296c296< for lnum in...
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-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); ...
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...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)