从零开始编译CheatEngine及驱动(三)
本帖最后由 天下一般 于 2022-9-11 13:52 编辑运行环境:
如 WIN10
涉及工具:
Visual Studio2019, Lazarus 2.2.2, CheatEngine
上一节 从零开始编译CheatEngine及驱动(二)
这一节是最后一节,与驱动相关的知识点都会在这里介绍,网上对这一部分的教程个人感觉都不是太让人明白,
由于该教程是针对初学者,本人会以通俗易懂的方式进行介绍,如果有错误的地方,还请多多指教。
什么是驱动保护:
现在市面上大多数的网游为了防止作弊软件读写游戏内存,都会采用驱动保护机制,这种机制是一种比较高级的方式。
操作系统分为三个层级,应用层、驱动层、硬件层。游戏是应用层,而驱动层是直接操作硬件的,比应用层更核心。
应用层<——>驱动层<——>硬件层
Cheat Engine和游戏都是在应用层的程序,每个程序都有一个独立的内存空间,每个程序的数据都在各自的内存空间中,
在没有驱动保护的情况下,CE可以通过应用层的API函数来找到游戏句柄,从而利用应用层API来读写游戏的内存空间中的数据,
就好比是你可以直接去别人家拿东西
而有驱动保护的话,操作系统不允许CE通过应用层的API函数来读写游戏的内存空间中的数据,
就好比是你不能去别人家拿东西
如何绕过驱动保护:
我们知道,CE无法通过应用层的API来读写游戏的内存空间,因此可以编写一个自已的驱动,通过驱动级API函数来
读写游戏的内存空间,就好比是你是有搜查令的警察,可以去别人家拿东西。想要有这个特权,除了你是警察外,还必须
要用政府给你的搜查令,这个搜查令就是签名证书。
Cheate Engine中提供了自已编写的驱动,就是dbk32.sys和dbk64sys.sys,警察有了,但还少了搜查令,签名证书在属性中
可以找到,而这个证书是由微软颁发的,基本是很难伪造的,我们只能向微软购买申请,价格也不菲,后面会说到解决方法。
现在的游戏也变精明了,它会检测dbk32和dbk64的特征码,一旦看到认识警察带着搜查令来了(这里的比喻不太恰当,游戏成了犯罪分子,
大家不用在意,能理解意思就好,-_- !!!),就会拒绝警察来拿东西,因此我们需要重新编译Cheat Engine的驱动,
修改掉这些特征码,让游戏不认识这个新来的警察,并且还要给新警察一份搜查令(签名证书),游戏也就无法检测了。
操作:
CE会调用自已编写的驱动,因此我们需要打开CE的源代码,修改代码并重新编译CE
(一)打开CE源码,修改如下几处:
1、打开Cheat Engine\dbk32\DBK32functions.pas,在第3185行处
servicename:是驱动的服务名,可以随意改写
sysfile:改成自已的驱动名,如果只是在64位系统上运行,只需要修改dbk64.sys,比如mycedriver64.sys
2、打开cheatengine.lpi,在菜单Search->Find in Files中搜索所有的dbk64,要编译32位就搜索dbk32
双击这些位置,将dbk64.sys全部换成自已的驱动名
(二)重新编译CE,具体操作看第一节教程
驱动的编译
(一)下载Visual Studio 2019,社区版、专业版、企业版都可以
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
(二)安装Visual Studio 2019
在工作负载界面,勾选使用C++的桌面开发
切换到单个组件界面,勾选以下组件
Windows 10 SDK(10.0.18362.0) 【选择这个版本是为了与后面下载WDK驱动版本一致】
MSVC v142 - VS 2019 C++ x64/x86 Spectre缓解库 【版本选最新即可】
(三) 下载WDK,这是一套驱动开发系统,下载适用于 Windows 10 版本 1903 的 WDK
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/other-wdk-downloads
(四)安装WDK,安装时如果出现提示数字签名无效,不用管,继续
(五)用VS2019打开DBKKernel\DBKKernel.sln
如果要编译64位驱动,切换成Release without sig(不检查签名模式,签名以后再单独处理),x64
(六)打开DBK64.inf,查找所有的“DBK64”字符串,并替换成自已的驱动名mycedriver64
75行,修改制造商名,我是修改成Games Modify
(七)修改DBK64.inf的文件名为自已的驱动名
(八)修改项目属性
配置项切换到Release without sig ,平台切换到x64
1、修改目标文件名为自已的驱动名mycedriver64
2、在生成事件->生成后事件,命令行中的命令清空
3、在Driver Signing,如果开启Win10系统的测试模式,可以使用测试证书,来运行驱动
如果要在正常的系统下运行驱动,我们将Sign Mode改成off,我们不需要生成测试证书,签名以后单独处理
(九)重新编译
在Cheat Engine\bin中就能看到我们生成的驱动,比如mycedriver64.sys
驱动签名
签名的操作比较麻烦,因为数字证书需要花钱购买,当然如果不愿意花钱,可以使用一些过期的泄露的证书,这里有一个网址,
对这方面讲的非常透彻,在此非常感谢作者的奉献,我就不多说了,我其实也是学习他的教程的
https://www.52pojie.cn/thread-1027420-1-1.html
现在大家可以运行一下自已的CE,并且在Help->About,点击"Your system supports DBVM"开启DBVM
DBVM是一款虚拟机,它能让应用程序CE访问核心模式,如果出现"Your system supports DBVM",那么恭喜你,
你可以修改有驱动保护的游戏了。如果出现不支持的话,有几个步骤要操作一下:
1、找一个Cheat Engine的官方程序,将程序目录下的vmdisk.img拷贝到自已的bin目录中,这个是启动DBVM的虚拟机,
大家也可以用ce的源码来重新编译dbvm,但一般没特殊需求,可以使用已经编好的
2、在控制面板->卸载程序->打开或关闭Windows功能中
禁用Hyper-V,以及Windows沙盒
3、在BIOS中开启Virtualization Technology,不同的电脑开启的方式可能不同,大家可以根据自已的电脑查找
到此,驱动编译结束,修改的细节还是比较多的,大家一定要仔细,按照步骤一步步操作,相信你一定会成功的拥有一个
自已的CE的,感谢谢大家的观看和支持!!!
。。。。。。后会有期
感谢分享 感谢分享谢谢大大 谢谢,收藏一下,也许用的上 这个牛逼啊,感谢老哥{:5_116:} 不错,感谢楼主分享! 谢谢楼主分享 感谢分享,学习下 支持楼主 来学习学习下!