Oxygen内核过游戏驱动保护课程2023
深入Oxygen内核,掌握游戏驱动保护技术
编课程目录
📁 第八章 [Lab]8-3EzPdb符号文件解析免去特征码搜索.mp4
[144.7 MB] [Lab]8-1 PUBG自建调试测试.mp4
[20.8 MB] [Lab]8-6 Hook函数CET机制以及通信和重构调试通道的优缺点以及展望.mp4
[227.8 MB] [Lab]8-5 重写调试函数的思路以及DebugPort放置问题.mp4
[159.4 MB] [Lab]8-4 调试自建utils、ptehook、hideprocess、bypass回调模块源码讲解.mp4
[124.0 MB] [Lab]8-2 最精简调试体系重构原理讲解.mp4
[93.3 MB] 📁 资料 书籍.exe [782.9 MB] 配套工具.exe [902.5 MB] 📁 第二章 📁 实验 [Lab]2-3 PE结构和内存注入的原理.mp4
[102.6 MB] [Lab]2-1 本章实验成品演示.mp4
[79.8 MB] [Lab]2-7 注入成品代码阅读以及容易踩坑的地方.mp4
[85.0 MB] [Lab]2-2 驱动中设置InstCallBack.mp4
[150.9 MB] [Lab]2-6 ShellCode重定位IAT TSL.mp4
[78.6 MB] [Lab]2-4 PE节区拉伸.mp4
[161.0 MB] [Lab]2-5 如何无痕地执行ShellCode.mp4
[50.0 MB] 2-7 PCIDE和KPTI.mp4
[134.6 MB] 2-2 线程内核栈布局以及Ktrap_frame.mp4
[240.0 MB] 2-6 Apc派遣和InstCall回调.mp4
[159.7 MB] 2-3 Ktrap_frame的作用以及nt!Zw和nt!Nt的区别.mp4
[246.6 MB] 2-5 系统调用参数的复制并浅谈ETWHook.mp4
[115.6 MB] 2-4 SSDT表函数寻找以及过滤表和GUI线程的转换.mp4
[229.1 MB] 2-1 第二章概述.mp4
[23.4 MB] 📁 第五章 5-5 逆向不同属性的APC头尾插法.mp4
[146.8 MB] 5-2 APC相关结构.mp4
[209.9 MB] [Lab-1]5-4 Ktrap_Frame修改测试.mp4
[15.3 MB] [Lab-1]5-2 内核特殊APC的插入.mp4
[193.4 MB] [Lab-1]5-1 内核APC注入过APEX演示.mp4
[41.1 MB] [Lab-1]5-6 ShellCode编写K_routine修改实验完成并测试.mp4
[275.0 MB] 5-1 APC的概念及其应用.mp4
[60.4 MB] 5-8 附加的逆向和查询附加的原理.mp4
[149.4 MB] 5-3 KeInitializeApc的逆向.mp4
[43.9 MB] [Lab-1]5-5 申请内存和驱动读Dll文件的实现.mp4
[152.7 MB] [Lab-1]5-3 如何找KTRAP_FRAME执行ShellCode.mp4
[198.1 MB] [Lab-2]5-10 读写测试.mp4
[117.6 MB] 5-4 KeInsertQueueApc逆向.mp4
[91.6 MB] 5-7 用户APC和派遣的完美闭环.mp4
[215.2 MB] [lab-2]5-8 无驱无附加读写过PUBG实验演示.mp4
[95.3 MB] [lab-2]5-7 无驱无附加读写过PUBG实验演示.mp4
[54.1 MB] 5-6 APC派遣过程上.mp4
[383.2 MB] [lab-2]5-9 不附加读写的完成.mp4
[173.1 MB] 📁 第0章 0-4 Windows进程的概念.mp4
[96.5 MB] 0-3 WDK按照和第一个驱动编写.mp4
[72.9 MB] 0-2 Windbg双机调试基础操作.mp4
[85.5 MB] 0-6 句柄和内核对象以及Windows系统构架.mp4
[145.6 MB] 0-1 VKD两分钟建立双机调试.mp4
[92.3 MB] 0-5 Windows线程和KPCR的概念.mp4
[65.6 MB] 📁 第四章 [Lab-2]4-6 不附加读写完善.mp4
[235.5 MB] 4-1 本章概论.mp4
[28.2 MB] [Lab-2]4-7 BUG修复和不附加的验证.mp4
[62.8 MB] [Lab-1]4-2 隐藏内存完成.mp4
[169.8 MB] 4-5 共享内存的原型Pte.mp4
[183.0 MB] 4-4 物理空间的管理和MmGetVirtualForPhysical逆向.mp4
[329.4 MB] 4-3 用户内存空间管理 CpoyOnWrite未解决.mp4
[469.0 MB] 4-6 CopyOnWrite问题补充和破除COW.mp4
[275.3 MB] [Lab-2]4-4 读写分类.mp4
[180.6 MB] 4-7 隐藏内存原理.mp4
[49.7 MB] [Lab-1]4-1 隐藏内存的MmPfnDataBase兼容寻找.mp4
[272.2 MB] [Lab-2]4-5 PhysicalMemory使用.mp4
[144.0 MB] [Lab-1]4-3 绕过PUBG内存隐藏演示.mp4
[78.1 MB] 4-2 系统内存空间管理以及为什么在高IRQL不要用分页内存.mp4
[173.0 MB] 📁 番外篇 📁 傀儡句柄读写 [ext]1-3 为什么找找到合适的TypeIndex.mp4
[139.4 MB] [ext]1-8 基于filter端口通信编写完成.mp4
[89.0 MB] [ext]1-6 基于filter端口通信编写-驱动层.mp4
[230.9 MB] [ext]1-2 框架构建和驱动OpenProcess完成.mp4
[125.0 MB] [ext]1-5 copyProcess编写.mp4
[237.9 MB] [ext]1-10 修改缺陷完美读写获取模块.mp4
[215.2 MB] [ext]1-2 框架构建和驱动OpenProcess完成 -.mp4
[105.8 MB] [ext]1-1 常见稳定读写方式以及傀儡句柄读写原理.mp4
[118.5 MB] [ext]1-9 读写测试以及缺陷显露.mp4
[209.6 MB] [ext]1-4 如何获取正确的TypeIndex.mp4
[42.3 MB] 📁 傀儡模块无痕hook [ext]2-2 Hook原理解析以及为什么x86不需要重定位.mp4
[171.1 MB] [ext]2-1 傀儡模块无痕HOOK驱动演示.mp4
[62.0 MB] [ext]2-5 无痕HOOK编写完成.mp4
[175.8 MB] [ext]2-7 R3层傀儡模块HOOK的缺陷以及驱动解决方法.mp4
[83.7 MB] [ext]2-6 找BUG测试成品.mp4
[266.5 MB] [ext]2-4 无痕hook框架构建.mp4
[112.2 MB] [ext]2-3 为什么x64不需要重定位.mp4
[112.1 MB] 📁 第六章 6-11 VEH派遣过程逆向.mp4
[335.1 MB] 6-7 从IDT函数到KiDispatchException的分析.mp4
[106.5 MB] 6-9-1 用户模式的异常派遣流程分析.mp4
[106.7 MB] [Lab6-2]超级VEH的原理.mp4
[42.1 MB] [Lab6-4]设置超级VEH代码编写.mp4
[158.3 MB] 6-8 内核模式异常派遣流程.mp4
[133.9 MB] 6-6 IRQL深入解析以及实验验证.mp4
[291.6 MB] 6-1 异常和中断的区别.mp4
[63.0 MB] 6-3 异常的分类和#DF触发.mp4
[122.9 MB] 6-10 VEH简介与使用.mp4
[127.0 MB] [Lab6-3]shellcode编写.mp4
[148.6 MB] 6-5 中断优先权和IRQL.mp4
[137.6 MB] 6-4 中断向量号和描述符.mp4
[124.3 MB] 6-2 处理器APIC架构和中断的类型.mp4
[63.7 MB] [Lab6-5]超级VEH先于普通VEH接管测试.mp4
[257.2 MB] [Lab6-1]超级VEH演示.mp4
[97.0 MB] 6-9-2 用户派遣异常的堆栈提升.mp4
[10.4 MB] 📁 第一章 📁 实验 Lab1-4-3 PteHook验证.mp4
[72.4 MB] Lab1-4-4-1 完美PteHook 实战虚拟机物理机过PG .mp4
[287.0 MB] Lab1-3 Pte Hook的原理.mp4
[57.0 MB] Lab1-2 x64Hook框架编写完成.mp4
[275.6 MB] Lab1-4-2PteHook的编写.mp4
[185.0 MB] Lab1-1-x64Hook框架.mp4
[35.4 MB] Lab1-4-4-2 完美PteHook 实战虚拟机物理机过PG.mp4
[54.1 MB] Lab1-4-1 PteHook编写.mp4
[232.3 MB] 📁 视频 1-2x64线性地址规范和全局变量寻址.mp4
[67.4 MB] 1-1x64通用寄存器差别.mp4
[81.6 MB] 1-7MSR寄存器对syscall和sysret的支持.mp4
[167.1 MB] 1-8MSR寄存器对Swapgs的支持并进行实验验证.mp4
[331.1 MB] 1-4 x64Vs使用内联汇编.mp4
[27.4 MB] 1-5-1保护模式的段保护.mp4
[483.5 MB] 1-3x64调用约定.mp4
[219.8 MB] 1-10页表自映射.mp4
[172.8 MB] 1-9IA32E分页本质.mp4
[422.7 MB] 1-11-2实现Windbg!Pte功能.mp4
[106.2 MB] 1-5-2系统描述符.mp4
[330.5 MB] 1-6控制寄存器.mp4
[513.9 MB] 1-11-1实现Windbg!Pte功能.mp4
[98.4 MB] 📁 第三章 3-3 全局句柄表.mp4
[106.3 MB] 3-6 ObTypeIndexTable和Index解密.mp4
[147.6 MB] [Lab-2]3-6 PROCESS结构偏移寻找.mp4
[265.4 MB] 3-2 私有句柄表.mp4
[208.0 MB] [Lab-1]3-2 Hook函数选择和版本判断.mp4
[168.0 MB] [lab-2]3-11 演示.mp4
[13.3 MB] 3-5 逆向ObRefObject 句柄权限 三级指针由来.mp4
[268.0 MB] 3-4逆向ObRefObject 内核句柄的判断.mp4
[186.3 MB] [Lab-2]3-9 模式搜索寻找兼容全系统.mp4
[225.5 MB] 3-7 句柄回调和简单破除方法.mp4
[226.1 MB] [Lab-2]3-5 PG检测断链机理猜测和断链不PG的原理.mp4
[142.3 MB] [Lab-2]3-4第三章实验一 不PG的断链隐藏展示.mp4
[51.9 MB] [Lab-2]3-8 PspCidTable ExDestroy寻找和HandleList断链.mp4
[283.5 MB] [Lab-2]3-10 隐藏进程完成.mp4
[154.4 MB] [Lab-2]3-7 PROCESS断链兼容全系统完成.mp4
[110.8 MB] [Lab-1]3-3 Hook完成并测试.mp4
[297.4 MB] [Lab-1]3-1 过ObRegCallBack回调不被检测的原理的演示.mp4
[101.6 MB] 3-1 句柄概念,R3通过句柄找到内核对象地址.mp4
[130.4 MB] 📁 第七章 7-9 调试器事件处理和被调试进程恢复.mp4
[142.9 MB] 7-10 异常调试的过程以及线程逃逸的原理.mp4
[137.9 MB] 7-11 调试原理.mp4
[60.9 MB] 7-4 DbgkpPostFakeProcessCreateMessages 发送假消息的逆向.mp4
[228.3 MB] 7-6 DbgkpSetProcessDebugObject干了什么.mp4
[100.8 MB] 7-1Windows下调试器和被调试进程是如何工作的.mp4
[121.6 MB] 7-7 调试器等待R3层逆向.mp4
[131.8 MB] 7-5 DbgkpQueueMessage逆向以及等待体系.mp4
[292.7 MB] 7-2 调试器附加和 创建调试对象逆向.mp4
[203.3 MB] 7-3 NtDebugActiveProcess调试对象挂入被调试进程过程逆向.mp4
[153.2 MB] 7-8 调试器等待R0逆向.mp4
[190.8 MB] 适合人群 内核技术爱好者 游戏开发工程师 安全研究人员 学习收获 掌握Oxygen内核特性 精通游戏驱动保护技术 提升内核编程能力 祝您学习愉快! 学有所成,前程似锦!
课程目录
📁 第八章 [Lab]8-3EzPdb符号文件解析免去特征码搜索.mp4 [144.7 MB] [Lab]8-1 PUBG自建调试测试.mp4 [20.8 MB] [Lab]8-6 Hook函数CET机制以及通信和重构调试通道的优缺点以及展望.mp4 [227.8 MB] [Lab]8-5 重写调试函数的思路以及DebugPort放置问题.mp4 [159.4 MB] [Lab]8-4 调试自建utils、ptehook、hideprocess、bypass回调模块源码讲解.mp4 [124.0 MB] [Lab]8-2 最精简调试体系重构原理讲解.mp4 [93.3 MB] 📁 资料 书籍.exe [782.9 MB] 配套工具.exe [902.5 MB] 📁 第二章 📁 实验 [Lab]2-3 PE结构和内存注入的原理.mp4 [102.6 MB] [Lab]2-1 本章实验成品演示.mp4 [79.8 MB] [Lab]2-7 注入成品代码阅读以及容易踩坑的地方.mp4 [85.0 MB] [Lab]2-2 驱动中设置InstCallBack.mp4 [150.9 MB] [Lab]2-6 ShellCode重定位IAT TSL.mp4 [78.6 MB] [Lab]2-4 PE节区拉伸.mp4 [161.0 MB] [Lab]2-5 如何无痕地执行ShellCode.mp4 [50.0 MB] 2-7 PCIDE和KPTI.mp4 [134.6 MB] 2-2 线程内核栈布局以及Ktrap_frame.mp4 [240.0 MB] 2-6 Apc派遣和InstCall回调.mp4 [159.7 MB] 2-3 Ktrap_frame的作用以及nt!Zw和nt!Nt的区别.mp4 [246.6 MB] 2-5 系统调用参数的复制并浅谈ETWHook.mp4 [115.6 MB] 2-4 SSDT表函数寻找以及过滤表和GUI线程的转换.mp4 [229.1 MB] 2-1 第二章概述.mp4 [23.4 MB] 📁 第五章 5-5 逆向不同属性的APC头尾插法.mp4 [146.8 MB] 5-2 APC相关结构.mp4 [209.9 MB] [Lab-1]5-4 Ktrap_Frame修改测试.mp4 [15.3 MB] [Lab-1]5-2 内核特殊APC的插入.mp4 [193.4 MB] [Lab-1]5-1 内核APC注入过APEX演示.mp4 [41.1 MB] [Lab-1]5-6 ShellCode编写K_routine修改实验完成并测试.mp4 [275.0 MB] 5-1 APC的概念及其应用.mp4 [60.4 MB] 5-8 附加的逆向和查询附加的原理.mp4 [149.4 MB] 5-3 KeInitializeApc的逆向.mp4 [43.9 MB] [Lab-1]5-5 申请内存和驱动读Dll文件的实现.mp4 [152.7 MB] [Lab-1]5-3 如何找KTRAP_FRAME执行ShellCode.mp4 [198.1 MB] [Lab-2]5-10 读写测试.mp4 [117.6 MB] 5-4 KeInsertQueueApc逆向.mp4 [91.6 MB] 5-7 用户APC和派遣的完美闭环.mp4 [215.2 MB] [lab-2]5-8 无驱无附加读写过PUBG实验演示.mp4 [95.3 MB] [lab-2]5-7 无驱无附加读写过PUBG实验演示.mp4 [54.1 MB] 5-6 APC派遣过程上.mp4 [383.2 MB] [lab-2]5-9 不附加读写的完成.mp4 [173.1 MB] 📁 第0章 0-4 Windows进程的概念.mp4 [96.5 MB] 0-3 WDK按照和第一个驱动编写.mp4 [72.9 MB] 0-2 Windbg双机调试基础操作.mp4 [85.5 MB] 0-6 句柄和内核对象以及Windows系统构架.mp4 [145.6 MB] 0-1 VKD两分钟建立双机调试.mp4 [92.3 MB] 0-5 Windows线程和KPCR的概念.mp4 [65.6 MB] 📁 第四章 [Lab-2]4-6 不附加读写完善.mp4 [235.5 MB] 4-1 本章概论.mp4 [28.2 MB] [Lab-2]4-7 BUG修复和不附加的验证.mp4 [62.8 MB] [Lab-1]4-2 隐藏内存完成.mp4 [169.8 MB] 4-5 共享内存的原型Pte.mp4 [183.0 MB] 4-4 物理空间的管理和MmGetVirtualForPhysical逆向.mp4 [329.4 MB] 4-3 用户内存空间管理 CpoyOnWrite未解决.mp4 [469.0 MB] 4-6 CopyOnWrite问题补充和破除COW.mp4 [275.3 MB] [Lab-2]4-4 读写分类.mp4 [180.6 MB] 4-7 隐藏内存原理.mp4 [49.7 MB] [Lab-1]4-1 隐藏内存的MmPfnDataBase兼容寻找.mp4 [272.2 MB] [Lab-2]4-5 PhysicalMemory使用.mp4 [144.0 MB] [Lab-1]4-3 绕过PUBG内存隐藏演示.mp4 [78.1 MB] 4-2 系统内存空间管理以及为什么在高IRQL不要用分页内存.mp4 [173.0 MB] 📁 番外篇 📁 傀儡句柄读写 [ext]1-3 为什么找找到合适的TypeIndex.mp4 [139.4 MB] [ext]1-8 基于filter端口通信编写完成.mp4 [89.0 MB] [ext]1-6 基于filter端口通信编写-驱动层.mp4 [230.9 MB] [ext]1-2 框架构建和驱动OpenProcess完成.mp4 [125.0 MB] [ext]1-5 copyProcess编写.mp4 [237.9 MB] [ext]1-10 修改缺陷完美读写获取模块.mp4 [215.2 MB] [ext]1-2 框架构建和驱动OpenProcess完成 -.mp4 [105.8 MB] [ext]1-1 常见稳定读写方式以及傀儡句柄读写原理.mp4 [118.5 MB] [ext]1-9 读写测试以及缺陷显露.mp4 [209.6 MB] [ext]1-4 如何获取正确的TypeIndex.mp4 [42.3 MB] 📁 傀儡模块无痕hook [ext]2-2 Hook原理解析以及为什么x86不需要重定位.mp4 [171.1 MB] [ext]2-1 傀儡模块无痕HOOK驱动演示.mp4 [62.0 MB] [ext]2-5 无痕HOOK编写完成.mp4 [175.8 MB] [ext]2-7 R3层傀儡模块HOOK的缺陷以及驱动解决方法.mp4 [83.7 MB] [ext]2-6 找BUG测试成品.mp4 [266.5 MB] [ext]2-4 无痕hook框架构建.mp4 [112.2 MB] [ext]2-3 为什么x64不需要重定位.mp4 [112.1 MB] 📁 第六章 6-11 VEH派遣过程逆向.mp4 [335.1 MB] 6-7 从IDT函数到KiDispatchException的分析.mp4 [106.5 MB] 6-9-1 用户模式的异常派遣流程分析.mp4 [106.7 MB] [Lab6-2]超级VEH的原理.mp4 [42.1 MB] [Lab6-4]设置超级VEH代码编写.mp4 [158.3 MB] 6-8 内核模式异常派遣流程.mp4 [133.9 MB] 6-6 IRQL深入解析以及实验验证.mp4 [291.6 MB] 6-1 异常和中断的区别.mp4 [63.0 MB] 6-3 异常的分类和#DF触发.mp4 [122.9 MB] 6-10 VEH简介与使用.mp4 [127.0 MB] [Lab6-3]shellcode编写.mp4 [148.6 MB] 6-5 中断优先权和IRQL.mp4 [137.6 MB] 6-4 中断向量号和描述符.mp4 [124.3 MB] 6-2 处理器APIC架构和中断的类型.mp4 [63.7 MB] [Lab6-5]超级VEH先于普通VEH接管测试.mp4 [257.2 MB] [Lab6-1]超级VEH演示.mp4 [97.0 MB] 6-9-2 用户派遣异常的堆栈提升.mp4 [10.4 MB] 📁 第一章 📁 实验 Lab1-4-3 PteHook验证.mp4 [72.4 MB] Lab1-4-4-1 完美PteHook 实战虚拟机物理机过PG .mp4 [287.0 MB] Lab1-3 Pte Hook的原理.mp4 [57.0 MB] Lab1-2 x64Hook框架编写完成.mp4 [275.6 MB] Lab1-4-2PteHook的编写.mp4 [185.0 MB] Lab1-1-x64Hook框架.mp4 [35.4 MB] Lab1-4-4-2 完美PteHook 实战虚拟机物理机过PG.mp4 [54.1 MB] Lab1-4-1 PteHook编写.mp4 [232.3 MB] 📁 视频 1-2x64线性地址规范和全局变量寻址.mp4 [67.4 MB] 1-1x64通用寄存器差别.mp4 [81.6 MB] 1-7MSR寄存器对syscall和sysret的支持.mp4 [167.1 MB] 1-8MSR寄存器对Swapgs的支持并进行实验验证.mp4 [331.1 MB] 1-4 x64Vs使用内联汇编.mp4 [27.4 MB] 1-5-1保护模式的段保护.mp4 [483.5 MB] 1-3x64调用约定.mp4 [219.8 MB] 1-10页表自映射.mp4 [172.8 MB] 1-9IA32E分页本质.mp4 [422.7 MB] 1-11-2实现Windbg!Pte功能.mp4 [106.2 MB] 1-5-2系统描述符.mp4 [330.5 MB] 1-6控制寄存器.mp4 [513.9 MB] 1-11-1实现Windbg!Pte功能.mp4 [98.4 MB] 📁 第三章 3-3 全局句柄表.mp4 [106.3 MB] 3-6 ObTypeIndexTable和Index解密.mp4 [147.6 MB] [Lab-2]3-6 PROCESS结构偏移寻找.mp4 [265.4 MB] 3-2 私有句柄表.mp4 [208.0 MB] [Lab-1]3-2 Hook函数选择和版本判断.mp4 [168.0 MB] [lab-2]3-11 演示.mp4 [13.3 MB] 3-5 逆向ObRefObject 句柄权限 三级指针由来.mp4 [268.0 MB] 3-4逆向ObRefObject 内核句柄的判断.mp4 [186.3 MB] [Lab-2]3-9 模式搜索寻找兼容全系统.mp4 [225.5 MB] 3-7 句柄回调和简单破除方法.mp4 [226.1 MB] [Lab-2]3-5 PG检测断链机理猜测和断链不PG的原理.mp4 [142.3 MB] [Lab-2]3-4第三章实验一 不PG的断链隐藏展示.mp4 [51.9 MB] [Lab-2]3-8 PspCidTable ExDestroy寻找和HandleList断链.mp4 [283.5 MB] [Lab-2]3-10 隐藏进程完成.mp4 [154.4 MB] [Lab-2]3-7 PROCESS断链兼容全系统完成.mp4 [110.8 MB] [Lab-1]3-3 Hook完成并测试.mp4 [297.4 MB] [Lab-1]3-1 过ObRegCallBack回调不被检测的原理的演示.mp4 [101.6 MB] 3-1 句柄概念,R3通过句柄找到内核对象地址.mp4 [130.4 MB] 📁 第七章 7-9 调试器事件处理和被调试进程恢复.mp4 [142.9 MB] 7-10 异常调试的过程以及线程逃逸的原理.mp4 [137.9 MB] 7-11 调试原理.mp4 [60.9 MB] 7-4 DbgkpPostFakeProcessCreateMessages 发送假消息的逆向.mp4 [228.3 MB] 7-6 DbgkpSetProcessDebugObject干了什么.mp4 [100.8 MB] 7-1Windows下调试器和被调试进程是如何工作的.mp4 [121.6 MB] 7-7 调试器等待R3层逆向.mp4 [131.8 MB] 7-5 DbgkpQueueMessage逆向以及等待体系.mp4 [292.7 MB] 7-2 调试器附加和 创建调试对象逆向.mp4 [203.3 MB] 7-3 NtDebugActiveProcess调试对象挂入被调试进程过程逆向.mp4 [153.2 MB] 7-8 调试器等待R0逆向.mp4 [190.8 MB] 适合人群 内核技术爱好者 游戏开发工程师 安全研究人员 学习收获 掌握Oxygen内核特性 精通游戏驱动保护技术 提升内核编程能力 祝您学习愉快! 学有所成,前程似锦!
会员可免费下载本篇
查看价格与购买


![大疆维修,无人机维修教程[66.30GB]](/_next/image?url=%2Fapi%2Fuploads%2Fb6a69810-862f-479c-a529-d66880073ebc.jpg&w=1920&q=75)


