1.OBS 源码分析- 采集方案之二(显示器采集)
2.关于一款开源远程控制软件(gh0st)的远程源码远程源码源码分析(一)
3.CVE-2022-4510:Binwalk 远程代码执行漏洞
OBS 源码分析- 采集方案之二(显示器采集)
OBS的视频录制功能支持多种采集方式,其中在plugin-main.c文件中定义了不同采集方式的采集采集结构体,并通过extern声明。远程源码远程源码在Windows系统中,采集采集特别是远程源码远程源码从Windows 8开始,显示器采集方式有所改变,采集采集源码战记编程猫以提高采集效率。远程源码远程源码Windows 8引入了Microsoft DirectX图形基础设施(DXGI)的采集采集API,旨在简化桌面协作和远程桌面访问,远程源码远程源码这一变化使得应用程序能够更轻松地访问和传输桌面内容。采集采集
Windows 8及更高版本的远程源码远程源码桌面采集API,称为桌面复制API,采集采集通过位图和关联的远程源码远程源码病毒式cpa源码元数据进行优化,允许应用程序请求访问沿监视器边界的采集采集桌面内容。API提供的远程源码远程源码元数据包括脏区域、屏幕移动、鼠标光标信息等,应用程序可以根据这些信息进行优化,如基于脏区域进行处理、硬件加速移动和鼠标数据、以及压缩等。OBS的桌面复制功能主要在duplicator-monitor-capture.c、monitor-capture.c以及libobs-d3d中实现,使用DXGI技术来获取屏幕数据,相比传统GDI截图技术有显著性能提升。redis源码简要分析
在添加采集源时,选择使用DXGI技术可以解决fps采集的挑战,特别是对于Windows 8以上的系统。例如,在duplicator-monitor-capture.c中的duplicator_capture_tick方法会根据系统版本决定采用WCG还是DXGI。在使用DXGI时,关键函数如gs_duplicator_update_frame会被频繁调用,获取桌面资源,并可能遇到如DXGI_ERROR_WAIT_TIMEOUT的返回值处理问题。获取到纹理数据后,需要进行拷贝操作。
DXGI的robotium无源码测试开发基于COM技术,如果不熟悉这部分,理解相关代码可能会有难度。但熟悉COM的开发者会注意到,如IDXGIOutputDuplication这样的对象都继承自IUnknown。在使用OBS SDK进行二次开发时,确保包含libobs-winrt生成的DLL文件是至关重要的。
关于一款开源远程控制软件(gh0st)的源码分析(一)
gh0st软件专为远程控制设计,支持远程文件传输、视频连接等功能,类似QQ远程桌面。软件由gh0st_Client与gh0st_Server两部分组成。
启动gh0st_server,linux tcp 源码解析VS调试,程序运行后,中断所有调试,打开Threads窗口和CallStack窗口。gh0st_server作为服务端,启动时创建个线程,主线程负责资源初始化,创建监听线程ListenThreadProc以监听客户端连接。
主线程完成初始化后,ListenThreadProc进入循环,等待连接请求,通过m_hkillEvent事件与主线程同步。当主线程发出关闭命令,m_hkillEvent设置为可信任状态,工作线程退出循环,进行资源回收,增强程序稳定性。
gh0st_server的核心在于IOCPServer类,它负责网络事件检测、IO请求与数据收发。当有网络事件发生时,关键业务逻辑将处理数据接收与解包等操作,详情将在后续章节介绍。
CVE--:Binwalk 远程代码执行漏洞
Binwalk是一款用于搜索二进制镜像文件以提取嵌入文件和代码的工具。
Binwalk是一款固件分析工具,旨在帮助研究人员进行固件非分析、提取和逆向工程。它简单易用,支持完全自动化脚本,通过自定义签名、提取规则和插件模块进行扩展。
Part1 漏洞状态
Part2 漏洞描述
分析环境:
Kalix
Binwalk v2.3.3
Part3 漏洞复现
1. 创建一个.pfs文件头,如下,然后打包成exp.zip。
2. 正常binwalk执行后输出。
3. 在kali中使用binwalk解析exp.zip,binwalk -M -e exp.zip,并查看结果。
4. 看到在kali桌面生成了一个_exp.zip.extracted文件夹。文件夹下pfs-root目录下看到.py是我们pfs文件头写的文件名。
5. 构造验证pfs并打包成exp.zip。
6. 构造的pfs文件头如下。
7. 再次在kali中使用binwalk解析exp.zip。
8. 可以看到binwalk在正常输出之后又输出了rce...字段。证明复现成功!
Part4 漏洞分析
什么是PFS文件?
PFS文件是由PhotoFiltre Studio(图像修饰程序)创建的选择文件。它包含图像编辑器的多边形选择工具使用的坐标,以便在给定坐标之间绘制线。PFS文件以纯文本格式存储。
漏洞源代码
问题出现在红框内部的代码。
在解析pfs文件头时,会把pfs文件头内部的文件名和out_dir拼接。拼接之后默认走else代码分支,并且对特殊符号没有校验,导致可以使用../符号路径穿越。再利用binwalk的plugins功能,就可以释放py文件到binwalk的plugins目录下,从而实现代码执行。
Part5 修复建议
1. 将Binwalk软件升级到最新的2.3.4版本。
2. 代码要检测特殊符号,防止路径穿越。