roger 发表于 2020-11-1 21:33:06

LOL逆向之绕过驱动保护

前言:
相信在上一篇文章大家进行动手操作的过程中已经发现LOL无法被调试或者是CE附加,这节课我们就来解决他。
工具:


[*]火绒剑

[*]PChunter

[*]台服LOL

[*]国服LOL


外服LOL加载文件:
首先我们需要知道外服LOL加载了一些什么文件,然后在和国服进行对比,首先打开台服LOL开始对局后查看系统所加载的驱动:

游戏模块,只需要看游戏目录下的dll,因为如果不是当前目录的话就是加载的其他软件的dll:

进程钩子,有一些反调试相关得钩子:
国服LOL加载文件:
首先是系统驱动加载:

游戏模块:



进程钩子:

对比:
通过对比发现国服LOL加载了一个名为ACE-BASE.sys的文件,但是外服却没有加载。并且国服的游戏模块多了很多dll。Tersafe、tcj、TenRpcs、GameRpcs、policyProbe这些基本上都是游戏里面的检测。排除后得到ace-DRV32.dll此模块和ACE-BASE.sys文件进行通讯。
思路:


[*]通过pchunter等工具卸载ACE-BASE.SYS、ACE-Drv32.dll这两个文件来达到绕过的目的

[*]删除目标文件,或者创建空文件

[*]


思路一实现:
此时我们使用CE是无法对游戏进行数据搜索的:

首先使用pchunter卸载dll:

然后使用pchunter卸载ACE-Base.sys,电脑直接蓝屏了。
思路二实现:
首先在C盘以及游戏目录下找到目标驱动文件:

删除掉,新建一个空白的.sys文件,然后将文件设置为只读:

再次打开CE查看是否有图标出现:

代码:#include <windows.h>

#include <iostream>

#include<direct.h>    //头文件

#include<io.h>

using namespace std;

#pragma warning(disable:4996)



void main() {      

    cout << "请输入LOLGame目录路径:"<< endl;

      char LOLdir = { 0 };

      cin >> LOLdir;

      char file = "\\ACE-BASE.sys";

      strcat(LOLdir, file);

      cout << LOLdir;



      if (_access(LOLdir,0) == 0) {

                if (DeleteFile(LOLdir) == 0) {

                        printf("\nerrid:%d",GetLastError());

                        return;

                }

      }

      CreateFile(LOLdir, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

      printf("%d", GetLastError());

      SetFileAttributes(LOLdir, FILE_ATTRIBUTE_READONLY);

      getchar();

}


mergerly 发表于 2020-11-2 11:38:14

啥也不说了,加入收藏!

坑比 发表于 2020-11-4 17:42:07

看了LZ的帖子,我只想说一句很好很强大!
页: [1]
查看完整版本: LOL逆向之绕过驱动保护