天下一般 发表于 2022-9-10 22:13

从零开始编译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的,感谢谢大家的观看和支持!!!


                                                                                                                                                         。。。。。。后会有期






weiran324 发表于 2022-9-11 21:57

感谢分享

2310566151 发表于 2022-9-13 23:35

感谢分享谢谢大大

别管我了行 发表于 2022-9-14 17:08

曾经沧海 发表于 2022-9-17 09:26

谢谢,收藏一下,也许用的上

啦啦啦154 发表于 2022-9-17 11:57

这个牛逼啊,感谢老哥{:5_116:}

曾经沧海 发表于 2022-9-18 14:43

不错,感谢楼主分享!

风里去 发表于 2022-9-22 19:27

谢谢楼主分享

爱汇编爱汇编 发表于 2022-9-24 07:26

感谢分享,学习下

曾经沧海 发表于 2022-10-2 09:11

支持楼主   来学习学习下!
页: [1] 2 3 4
查看完整版本: 从零开始编译CheatEngine及驱动(三)