当今的作弊行为主要是使用内部Directx挂钩或窗口覆盖图来可视化隐藏的游戏信息。这两种方法已被广泛记录,但其他更不起眼的方法包括在Windows内核中挂接图形例程,正如我们将在本文中演示的那样。...GDI32 D3DKMTSubmitCommand被调用,它通过系统呼叫路由NtGdiDdDDISubmitCommand,这是在任何Win32驱动程序实现的(一些Windows版本已经在它实施win32kbase...NtGdiDdDDISubmitCommand 数据成员的这种异常函数调用实际上是整个dxgkrnl抽象层的较大函数表的一部分,该函数表既未记录在符号中,也未导出到二进制文件中,这可能解释了作弊中这种图形使用类型的异常疏忽...为什么? 通过截获此特定的gpu调用,我们可以与实际的屏幕更新完全同步,从而允许我们使用GDI函数来操纵中间屏幕缓冲区。我们绘制到游戏缓冲区的唯一痕迹是模糊的指针交换,实际上没有反作弊检查。...Github存储库,该存储库是从一个较大的项目中提取的,这就是为什么某些引用的符号未定义的原因-找到它们非常琐碎,因此对于读者。
Applications两家机构的最新统计,Windows系统仍然占据90%以上,因此在Windows上或者在Windows环境下开发应用程序还是非常普遍的。...另外,很多朋友学了C语言,发现编写的都是黑洞洞的命令行程序,现在的电脑里,窗口程序已经成为“高大上”的一个标准之一了,只有一些系统服务,系统命令工具还保持控制台风格,那要编写Windows下的窗口程序在怎么学习呢...一,安装窗口编译环境 要开始Windows编程,我们需要安装一个开发环境,我推荐你在VS下编写窗口程序,版本不是最重要的,不管是VS2013、VS2010、VS2008、哪怕是VS2005,甚至是VC都不是关键...它不只是有编写Win32的指导,好包括MFC、C#、VB、COM、DirectX等Windows下各种编程的说明文档,所以只要你是在Windows环境下开发,都有很多值得参考的编程技术指导。...五,窗口交互界面 对于不太熟悉Windows窗口编程的菜鸟,也许目前还不了解要学Windows哪些东西呢?鼠标操作?玩游戏?开玩笑了,肯定不是。
经过 Mono 团队的不懈努力,原本专属于 Win32 平台的 GDI+ 终于可以跨平台了,不过这中间还有好多的故事和好多的坑。 本文带你了解 System.Drawing 命名空间的跨平台。...System.Drawing 固然强大,但它却只是 Win32 GDI+ 的一层很薄很薄的封装。...我们小结一下: GDI+ 是 Windows 上的图形设备接口(Graphics Device Interface),用来完成一些和绘制有关的工作,用以解决不同应用程序开发者需要面向具体的硬件绘图造成的兼容负担...跨平台的关键 libgdiplus libgdiplus 是在非 Windows 操作系统上提供 GDI+ 兼容 API 的 Mono 库,而其跨平台图形绘制的大部分关键实现靠的是 Cairo 库。...的实现 这里将其他的基于 .NET / Windows 平台的图形实现放到一起来做对比: Win32 UWP macOS Linux / 其他 .NET Framework (GDI+) ✔️ ❌
测试2019也存在类似2016那样的问题。RS3t该机型三档配置的机器我分别用2019、2022、win10、win11测试了5次。...1、新购机器第一次开机 2、第二次开机(在第一次新购基础上重启) 3、第三次开机(在第二次的基础上配置下次进入安全模式) 4、第四次开机(在第三次的基础上配置下次即第四次切回正常模式) 5、第五次开机(...在第四次的基础上替换驱动为社区最新版virtio kvm驱动并重启) 安全模式的启动速度在中高配机器上明显快,凡是加载netkvm的启动模式,低版本NT10(2016/2019)系统+RS3t启动都慢,...尤其是在该机型中高配机器上,而2022、win10、win11启动速度正常,微软对高版本NT10系统做了针对性优化。...这样改造Windows镜像来收集自动注销的日志: 1、下载http://windowsbj-1251783334.cos.ap-beijing.myqcloud.com/sleep.exe到C:\Windows
本文是我在读 WPF 源代码做的笔记。...,我推荐大家可以抄抄代码。...但是有趣的是在这个方法上面有注释说比 Assembly.GetManifestResourceStream 慢 200-300 毫秒,也许是当年的设备才需要这么长的时间 // This...WindowsCodecs.dll 更新请看 What’s New in WIC - Win32 apps 在调用到使用 GDI 图片创建窗口的逻辑就十分简单了,都是一些 Win32 的接口调用...WPF 里面再快的启动图显示速度都不如 UWP 快,因此 UWP 是系统给的优化,通过 AppFrameHost 显示的,基本上点击应用立刻打开 当前的 WPF 在 https://github.com
另外,很多朋友学了C语言,发现编写的都是黑洞洞的命令行程序,现在的电脑里,窗口程序已经成为“高大上”的一个标准之一了,只有一些系统服务,系统命令工具还保持控制台风格,那要编写下的窗口程序在怎么学习呢?...一,安装窗口编译环境要开始编程,我们需要安装一个开发环境,我推荐你在VS下编写窗口程序,版本不是最重要的,不管是VS2013、VS2010、VS2008、哪怕是VS2005,甚至是VC都不是关键,也不是越新越好...它不只是有编写Win32的指导,好包括MFC、C#、VB、COM、等下各种编程的说明文档,所以只要你是在环境下开发windows编程,都有很多值得参考的编程技术指导。 ...五,窗口交互界面对于不太熟悉窗口编程的菜鸟,也许目前还不了解要学哪些东西呢?鼠标操作?玩游戏?开玩笑了,肯定不是。...GDI——这个部分包括用于绘制的各种GDI对象,比如字体、位图、画刷、画笔、区域、路径等。外设——这个部分包括鼠标、键盘、打印机等、串/并口。
我觉得我可以加入历史博物馆了,加入微软历史博物馆,本文也是和大家吹历史的博客 简单说这个 WS_EX_NOREDIRECTIONBITMAP 样式是 Win8 提供的,用来做画面图层混合的功能。...用到这个功能最多的是 UWP 应用,但是经过考古在 Win8 的全屏应用也用到这个技术,在 win32 函数里面的 CreateWindowEx 方法创建窗口的时候,可以通过传入 WS_EX_NOREDIRECTIONBITMAP...详细文档请看 Extended Window Styles (Winuser.h) - Win32 apps 如何才能说德熙不是在骗你?创建一个 UWP 应用,然后运行这个应用。...那为什么这个表面叫重定向表面原因是GDI绘图命令甚至Direct3D交换链表示请求都被重定向或通过复制(在GPU内做的)重定向表面 而通过 DirectComposition 则是由软件自己实现管理和创建表面...Windows Composition Engine ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/Windows-%E7%AA
在 Windows 上有 GDI+ 来操作位图,不止能完成很多的位图操作,还提供了与 Win32 窗口的互操作,可以截到 Win32 窗口的图片。 如果你希望对窗口截图,那么可使用本文提供的方法。...没有依赖 本文对窗口的截图几乎不需要任何额外的依赖(当然,都 GDI 了,Windows 系统还是要的)。...请参考 Win32/C# 应用不依赖任何库使用纯 GDI+ 对窗口截图(BitBlt) - walterlv。...var oldHBitmap = Gdi32.SelectObject(cdc, (IntPtr)hBitmap); // 注:使用 GDI+ 截取“使用硬件加速过的”应用时,截取到的部分是全黑的...更多截窗口方法 Win32/C# 应用使用 GDI+ 对窗口截图(BitBlt) - walterlv (本文)Win32/C# 应用不依赖任何库使用纯 GDI+ 对窗口截图(BitBlt) - walterlv
编程也有它自己的优势,学习windows编程的人喜欢的就是DLL注入,钩子之类的东西,觉得很装逼 确实,曾经我也因为这个原因而学习这方面的知识,后来,现实打败了我,于是我老老实实的学着Linux内核...然后就是那些函数的参数介绍了,在这里我就不介绍了,因为太多了,我告诉大家一个方法 在VS中,选中要查询的函数或者宏,按F1键,函数介绍和宏的相关信息就会出来了,特别全 例如我选中CS_HREDRAW,按下...win32就介绍到这里,其他的消息机制,GDI,控件什么的,个人建议 图书馆借本Windows编程的书自己看,图书馆有借阅期限的,想自己买个实体的可以看下这个链接,这本书仅介绍了消息机制,GDI绘图,控件一些基础的东西...,然后做了几个小游戏,没有网络编程,钩子,内核之类的,适合入门学习。...windows的东西,我应该还有一篇网络编程会发,其他的不怎么想整理,太繁琐了,望见谅
该异常的意思是: 找不到DLL libgdiplus,如何解决?请看下一小节。 三.埋坑 System.Drawing.Common 组件提供对GDI+图形功能的访问。...它是依赖于GDI+的,那么在Linux上它如何使用GDI+,因为Linux上是没有GDI+的。...Mono 团队使用C语言实现了GDI+接口,提供对非Windows系统的GDI+接口访问能力(个人认为是模拟GDI+,与系统图像接口对接),这个就是 libgdiplus。...但是官方镜像里面使用的软件包源又是国外的地址,所以造成我们使用国内网络非常慢,进而造成整体构建过程非常慢。...SkiaSharp 同样是可以进行图片操作的组件,在Linux上需要安装libSkiaSharp,SkiaSharp是由mono项目组提供的。我没有深入研究这个库,有兴趣的同学可以研究一下。
在调用 win32 库的时候,小伙伴会遇到的问题是不知道对应的 win32 函数应该如何写。或者在网上抄了的代码的实现都有些诡异,想要自己封装发现工作量太大。...好消息是官方将 PInvoke 库在 dotnet 基金会完全开源,包含了大量的 Win32 库,如 gdi32.dll 和 kernel32.dll 和 user32.dll 等 使用官方的库的优势是什么呢...第一个就是减少从网上复制粘贴有趣的 PInvoke 调用实现,其次是质量上能保底。虽然官方的实现也不够完美,例如 User32 的 GetWindowLong 方法依然有坑。...,如果要我自己去找这些结构体的实现,那么我也许会复制到坑代码。...而在使用库的时候,我可以在 csproj 添加下面代码安装 NuGet 库 <PackageReference Include="PInvoke.Kernel32
在 Windows 上有 GDI+ 来操作位图,不止能完成很多的位图操作,还提供了与 Win32 窗口的互操作,可以截到 Win32 窗口的图片。 如果你希望对窗口截图,那么可使用本文提供的方法。...依赖,或者没有依赖 在本文的代码中,你可以考虑引用以下这些库来简化代码。...如果你不打算引用 System.Drawing.Common,那么可以考虑使用裸的 GDI+ 来完成,可以参考 Win32/C# 应用不依赖任何库使用纯 GDI+ 对窗口截图(BitBlt) - walterlv...var oldHBitmap = Gdi32.SelectObject(cdc, (IntPtr)hBitmap); // 注:使用 GDI+ 截取“使用硬件加速过的”应用时,截取到的部分是全黑的...更多截窗口方法 (本文)Win32/C# 应用使用 GDI+ 对窗口截图(BitBlt) - walterlv Win32/C# 应用不依赖任何库使用纯 GDI+ 对窗口截图(BitBlt) - walterlv
windows系统中,抓取屏幕有很多方法,比较常用的是GDI和mirror两种方式,除此以外,利用ddraw和DXGI(windows7以上系统支持)方式也可以抓取屏幕。...由于mirror的方式涉及到驱动底层,并且也不是所有系统都支持,这里不做介绍,着重介绍GDI, DDRAW和DXGI这三种抓屏方式, 一,GDI 所有的windows版本都通用的抓屏方式,...而且在vista以后的系统上,如果启用Aero特效的话,效率较低。 缺点:效率较差。...缺点:也和GDI一样,如果启用了特效,速度也非常慢。 三, DXGI 这种抓屏方式,速度非常快,而且即使启用了Aero特效,抓屏效率也一样。...尤其在windows10以后的系统上,当桌面没有变化时,你是抓取不到任何图像的,只有在桌面有变化时,你才能抓取到图像。这会带来更高的抓屏效率和更少的系统开销。
各种不同的 Windows 桌面 UI 框架 微软主推的 Windows 桌面 UI 框架有: UWP WPF Windows Forms Win32 与 C++ DirectX 后两者实际上并不是 UI...在 Windows Vista / 7 / 8 中,操作系统提供了真正的 DPI 的设置: ▲ Windows 7 的 DPI 设置(控制面板 -> 外观与个性化 -> 显示) 这里的设置改的就是系统的...Windows 7 中还额外提供了传统 Windows XP 风格 DPI 缩放比例的选项(此选项在 Windows 8 之后就删掉了),这也是在修改 DPI 值,只不过可以选择非 1/4 整数倍的 DPI...其他 UI 框架 原生 Win32 是支持最新 DPI 感知的,其他如 GDI/GDI+/MFC 等都不支持,除非开发者手工编写。...在以下实验中,我组成了一个 96 DPI 的主屏和 144 DPI 的副屏,先在 96 DPI 的屏幕上截一张图,再将窗口移动到 144 DPI 的屏幕中再截一张图。
相比于 Windows 2000 引入到 GDI+ 中的 BitBlt 方法截取窗口图片,Windows XP 时也引入了 PrintWindow 方法来专门截取窗口,截取的原理也不同。...2 3 using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Graphics; 1 2 3 4 5 6 7...并且,此过程是同步进行的,如果目标窗口在处理消息时没有返回,那么这里的调用将一直挂起。...当然,还有可能把目标窗口截挂: 更多截窗口方法 Win32/C# 应用使用 GDI+ 对窗口截图(BitBlt) - walterlv Win32/C# 应用不依赖任何库使用纯 GDI+ 对窗口截图(...(winuser.h) - Win32 apps - Microsoft Docs office的截屏是用的什么技术?
1 .NET Framework 时代的 WinForms 与 WPF Windows Forms 是直接依赖 GDI+ 和 Win32,可以理解为是对 Win32 和 GDI+ 的封装。...为什么要将 WinForms 和 WPF 迁移到 .NET Core 下?毕竟就算迁移了,还是只能在 Windows 下使用,不能跨平台。...当然,WinForms 还是依赖 GDI+ 和 Win32, WPF 也还是依赖 DX,这点本身并没有改变,所以,他们并不能夸平台。...还有就是,.NET Framework 最新版本是 4.8.1,而且不会有大的版本更新了,但是 .NET Core 一直在更新。.NET5 .NET6 .NET7 .NET8,还在持续更新中。...- V2EX Windows 11出世UWP却惨遭弃用!Windows 软件还会翻新吗-51CTO.COM UWP 一个技术上成功但商业上失败的框架之死;一个现代的操作系统究竟应该提供什么?
至于应用程序,绝大多数win桌面应用都是基于GDI的,很老的图形库 (从某个版本起GDI也是跑在D3D之上了,于是显卡厂家就不用写GDI驱动了),D3D(比如基于WPF的应用,今天主要介绍的应用),OpenGL...数据需要经过: App->DX runtime->User mode driver->dxgkrnl->Kernel mode driver->GPU 在到达GPU之前,全都是在CPU上执行的,所以从程序本身是无法获取渲染结果...Win32程序中,所有窗口和控件都是一个窗口类的实例,都拥有一个窗口句柄,窗口对象属于内核对象,由Windows子系统来维护。...Windows子系统为标准控件定义了窗口类,并使用GDI来绘制这些标准控件。 Win32程序采用消息循环机制: ?...8K起步,也就不适应上面的截图判断方法了,为什么呢?
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图。...Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解。...跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我们知道,HDC可以在处理WM_PAINT的时候用BeginPaint函数获取,也可以从GetDC、GetWindowDC...既然是画图,就少不了颜色的描述,Windows中的颜色有几种表示,其中COLORREF在GDI绘制中用的最多,它实际上是一个无符号32为整型。...Windows的GDI基本绘制其实并不难掌握,只要仔细阅读MSDN上API的详细使用说明就一定能正确使用,但是在创建GDI对象并使用后,一定要记得释放。
2、它与Windows7完全不兼容,Rufus需要在今年年初之前支持它(我仍然需要以完全非官方的方式“支持”,因为Rufus是一个允许人们从Windows7迁移出去的实用程序,因此,您确实希望Rufus...在这个阶段,可能要到2023年(Windows8.1正式停止支持),我才能真正考虑从经过尝试和信任的(通用的)Win32/GDI过渡到其他东西,特别是考虑到微软仍在承诺,他们可能会尝试把自己的大便放在一起...下面是他的回复: 哇!回答得太长了!我错了。我以为UWP是一个windows应用程序的设计系统加上一些额外的东西。比如材料设计等等,我想知道为什么你不喜欢一个设计系统。...对于把Rufus迁移到非Windows系统上的计划,作者表示:“NO!” 我当然希望我可以,因为这听起来是一个很好的挑战,但我只是没有时间。...事实上,Rufus依赖于最初在Windows以外的其他平台上设计和运行的工具,比如Syslinux、ms sys或e2fsprogs的坏块检查功能,因此至少这些功能可以在其他平台上获得。
存在问题: 好多小伙伴都有一个疑问,我我们学编程貌似都是看输出,怎么才能搞个像window上程序带个又界面的,眼见为实嘛 解决方案: 很多群友都在问学习了C语言,怎么画界面呢?...确实,C语言本身基本没有提供画图的函数,早期的TurboC还有划线等函数,现在都不能用这些函数了,为什么呢? ? 其实C语言默认情况下是控制台程序,所以要画图从模式上就不支持。...比如windows下的,不管你用什么语言,下面调用的最终都是DirectX图形接口,它的上面就是封装的Windows GDI图形接口。...另外复杂程度也往往和强大成正比,像DirectX和OpenGL最强大,还能支持3D,基本上垄断了游戏的图像库,但是用起来也最复杂,而GDI、SDL、Qt等这些图形库往往比较简单就能完成。...Linux下可以学习SDL,对于很多在Windows下运行的程序,可以学习Windows GDI函数,十分方便就能学会图形界面的编写。
领取专属 10元无门槛券
手把手带您无忧上云