前言:
相信在上一篇文章大家进行动手操作的过程中已经发现LOL无法被调试或者是CE附加,这节课我们就来解决他。
工具:
外服LOL加载文件:
首先我们需要知道外服LOL加载了一些什么文件,然后在和国服进行对比,首先打开台服LOL开始对局后查看系统所加载的驱动:
LOL逆向之绕过驱动保护
游戏模块,只需要看游戏目录下的dll,因为如果不是当前目录的话就是加载的其他软件的dll:
LOL逆向之绕过驱动保护
进程钩子,有一些反调试相关得钩子:
LOL逆向之绕过驱动保护
国服LOL加载文件:
首先是系统驱动加载:
LOL逆向之绕过驱动保护
游戏模块:
LOL逆向之绕过驱动保护
LOL逆向之绕过驱动保护
进程钩子:
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是无法对游戏进行数据搜索的:
LOL逆向之绕过驱动保护
首先使用pchunter卸载dll:
LOL逆向之绕过驱动保护
然后使用pchunter卸载ACE-Base.sys,电脑直接蓝屏了。
思路二实现:
首先在C盘以及游戏目录下找到目标驱动文件:
LOL逆向之绕过驱动保护
删除掉,新建一个空白的.sys文件,然后将文件设置为只读:
LOL逆向之绕过驱动保护
再次打开CE查看是否有图标出现:
LOL逆向之绕过驱动保护
代码:#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[1024] = { 0 };
cin >> LOLdir;
char file[1024] = "\\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();
}
|