Cobalt浏览器简介

1 Cobalt

Cobalt是一个轻量级HTML5/CSS/JS应用程序容器,旨在以最少的资源消耗(部署大小,RAM,CPU,GPU)提供丰富的应用程序开发环境。同时,Cobalt在各种平台和设备上实现丰富,低延迟的用户体验
Cobalt描述
这些是Cobalt提供的其他一些好处

  • More platforms

    • Cobalt不需要平台来支持JIT编译,并且可以在不允许执行动态生成代码的平台上运行
    • Cobalt是一个单进程应用程序,不依赖于多个进程
    • Cobalt预编译一组足以表达所有图形效果的着色器,从而适应无法在运行时编译着色器的平台
    • Cobalt需要一个兼容的C++ 03编译器,允许它通过传统工具链访问平台
  • Small footprint

    • Cobalt针对内存进行了优化。 它的surface缓存永远不会超过预定义的预算,并且它永远不会创建重复的图层,从而减少了内存不足崩溃的可能性
    • Cobalt的小二进制文件旨在占用尽可能小的空间。 通过支持HTML5/CSS/JS的一个子集,Cobalt的缩小封装尺寸甚至允许在低端设备上捆绑CJK字体
  • Reduced input latency

    • Cobalt通过仅支持不影响布局的属性动画(如变换)并始终在单独的线程上运行动画来产生一致的60FPS动画
    • 由于渲染器和资源加载器不会与布局操作相竞争,因此Cobalt已针对单核CPU运行进行了优化,从而延长了输入延迟时间
    • 在支持GLES2的平台上,Cobalt通过在GPU上执行几乎所有的渲染操作来避免CPU绘图

2 Architecture

Cobalt作者分叉了H5VCC,删除了大部分Chromium代码 ,特别是WebCore和Chrome Renderer和Compositor,并且从零开始构建了一个简化的HTML子集的实现,用于布局的CSS Box模型以及Web API,这是真正需要建立一个全屏幕SPA浏览和播放应用程序,Cobalt的组件主要有以下几个部分

  1. Web Implementation
    这是实现W3C标准的地方,最终生成一个带注释的DOM树,该树可以传递到布局引擎以生成渲染树

  2. JavaScript Engine
    我们没有从头开始写自己的JavaScript引擎。 由于JITing约束,我们必须灵活地使用与我们合作的引擎。 我们有一个与JS Engine接口的绑定层,以便应用程序脚本可以与本机支持的对象(如DOM元素)交互

  3. Layout Engine
    布局引擎接收由Web实现和JavaScript引擎生成的带注释的DOM文档,并计算渲染命令的树以发送给渲染器(即渲染树)。 它缓存中间布局工件,以便后续的增量布局可以加快

  4. Renderer/Skia
    渲染器遍历由布局引擎生成的渲染树,使用第三方图形库Skia对其进行栅格化处理,并将其交换到前端缓冲区。 这里有两条主要路径,一条是在OpenGL ES 2.0上使用Hardware Skia,另一条是使用Software Skia和硬件加速的Starboard Blitter

    请注意,渲染器在与布局引擎不同的线程中运行,并且可以插入不需要重新布局的动画。这可以将Layout和JavaScript渲染分离出来,从而在具有各种功能的平台上实现流畅,一致的动画

  5. Net/Media
    这些是Chromium的网络和媒体引擎。 我们直接使用它们,因为它们不会引起上面列出的额外限制的任何特定问题

  6. Base
    这是Chromium的“Base”库,其中包含在Cobalt,Net和Media中使用的各种有用的东西。Cobalt使用标准C++容器(例如vector,string)和Base的组合作为其所有代码的基础库

  7. Other Third-party Libraries
    其中大部分是其他开放源代码软件中通常包含的straight-C开源库。 大多数格式的解码器和解析器(例如libpng,libxml2,zlib)。我们从Chromium中分离出来,因为我们希望它们成为这些库经过测试最多的版本

  8. Starboard/Glimp/ANGLE
    Starboard是Cobalt移植接口。Cobalt和Chromium之间的一个主要区别是我们创建了一个hard straight-C移植层,并且移植了所有编译后的代码,包括Base和所有第三方库,以使用它,而不是直接使用POSIX标准库,它们是即使在现代系统上也不一致(请参阅Android,Windows,MacOS X和iOS)。此外,Starboard还包括跨平台没有得到有效标准化的API,例如显示窗口创建,输入事件和媒体播放

    Glimp是由Cobalt团队直接在Starboard上构建的OpenGL ES 2.0实现框架,旨在将专有3D API修改为GLES2

    ANGLE是一种第三方库,可将DirectX与Glimp类似,但仅适用于DirectX

3 Display And Media

Cobalt框架图

Cobalt能够支持与加密媒体扩展兼容的任何DRM系统,但这仅在PlayReady和Widevine两种产品上得到充分验证。因为版权原因使得难以提供与Widevine或PlayReady的开源参考集成,所以目前由平台实施者来集成代码来生成许可证,安装密钥并在解码之前解密样本,请注意,不需要更改src/media中的任何代码来执行此操作,只需实现Starboard player/drm/media API即可完成此操作

目前Cobalt有OpenMax和ffmpeg的对接代码,没有Gstreamer的,显示部分Wayland+EFL、X11、Directfb、Win32都有集成,可以直接使用

3.1 Drm Implementing APIs

函数
SbDrmSessionUpdateRequestFunc
SbDrmSessionUpdatedFunc
SbDrmSessionKeyStatusesChangedFunc
SbDrmCreateSystem
SbDrmGenerateSessionUpdateRequest
SbDrmUpdateSession
SbDrmCloseSession
SbDrmGetKeyCount
SbDrmGetKeyStatus
SbDrmRemoveAllKeys
SbDrmDestroySystem

3.2 Video Implementing APIs

函数
SbPlayerDestroy
SbPlayerWriteEndOfStream
SbPlayerWriteSample
SbPlayerSetPlaybackRate
SbPlayerSeek
SbPlayerSetVolume
SbPlayerGetInfo
SbPlayerOutputModeSupported
SbPlayerCreate
SbPlayerGetCurrentFrame
SbPlayerSetBounds
GetAudioCodecFromString
SbMediaIsAudioSupported
GetVideoCodecFromString
ParseH264Info
SbMediaIsVideoSupported
IsAudioOutputSupported
GetTransferIdFromString
SbAudioSinkIsAudioFrameStorageTypeSupported
SbAudioSinkIsAudioSampleTypeSupported
SbAudioSinkGetMaxChannels
SbAudioSinkCreate
SbAudioSinkIsValid
SbAudioSinkDestroy
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CobaltStrike是一款常用的渗透测试工具,它需要在运行之前安装Java环境。具体来说,在Kali Linux上需要安装JDK11,在Windows 7上需要安装JDK1.8。\[1\]在Linux下,可以通过运行"./cobaltstrike"命令来启动CobaltStrike客户端。在启动客户端时,需要填写团队服务器的IP地址、端口号、用户名和密码。请注意,登录的用户名可以任意输入,但要确保该用户名没有被用于登录CobaltStrike服务器。\[2\]在确认信息填写无误后,点击"Connect"按钮连接到服务器。在连接过程中,会出现指纹校验对话框,用于防止篡改,每次创建CobaltStrike团队服务器时生成的指纹都是不同的。连接成功后,可以打开CobaltStrike的主页面,主页面包括菜单栏、快捷功能区、目标列表区、控制台命令输出区和控制台命令输入区。\[3\] #### 引用[.reference_title] - *1* [内网渗透工具CobaltStrike使用教程详解](https://blog.csdn.net/weixin_43847838/article/details/125069147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Cobalt Strike(学习笔记)](https://blog.csdn.net/weixin_44947444/article/details/117669857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值