0x01
然而从这里才刚刚开始上套,一步步落入开发商的坑。满怀欢喜的打开CE搜索通用特征码却没有任何结果。后来发现搜索base 4D5A都没有,看来只能IDA了。
GObjects:搜索字符串“/Script/Angelscript”交叉引用则会看到GObject的解密。
FNameToFString()
std::string GetFromFName(const uint32_t key){
unsigned __int64 v4; // r14
unsigned __int64 v5; // rdi
uint32_t chunkOffset = ((int)(key) >> 16);
WORD nameOffset = (WORD)key;
auto namePoolChunk = Process::Read<uintptr_t>(unk_7FF77B4B4980 + (chunkOffset * 6) + (8 * 21)) ^ 0xD0064AB34C24F50Fui64;
auto entryOffset = namePoolChunk + (uint32_t )(2 * nameOffset);
v4 = Process::Read<__int16>(entryOffset);
auto length = v5 = v4 >> 6;
if ( (v4 & 1) != 0 ){//wide
memcpy(v17, (a1 + 1), (v4 >> 5) & 0xFFFFFFFE);//这里是第一个call实际上是一个memcpy
if ( v4 >= 0x40u ){
.....
}
}else{
memcpy(v17, (a1 + 1), (v4 >> 5) & 0xFFFFFFFE);//这里是第一个call实际上是一个memcpy
if ( v4 >= 0x40u ){
.....
}
}
}
0x02
1.反作弊:EasyAntiCheat +(暂且称为不知名的美女1号)。
2.首先这个游戏对于每个不同的账号都会下发一个全新的版本所有客户端解密都不不同(更新前在我的PC,貌似在11/1晚上的更新后已经不在下发版本了)这很育碧。
3.游戏会对DrawText DrawLine DrawRect等等函数进行加密并且游戏运行时VirtualProtect函数所在的页 置PAGE_NOACCESS(更新前固定函数,更新后函数有所改变) 这很Byfron。不过只能算一个婴儿版本的byf。
4.如果开启游戏前打开IDA CE等工具游戏会提示完整*侵害游戏不会退出。游戏中打开则会直接退出(更新后开启IDA将无法启动游戏)。
5.对于WorldToScreen,如果像正常那样使用矩阵,也就是0x20]0x2xx]UE引擎通用矩阵,你将会得到0,此时也许你会想使用CameraManager->Location。但事实是你使用其它UE相同算法的使用相机坐标进行转换,你也会得到不正确的值。APlayerController->ProjectWorldLocationToScreen是最好的选择。
0x03
整体来说驱动没有什么亮点没什么好说的,完全就是CV的https://github.com/haidragon/DriverInjectDll
IoControlCode:0x0x222409
看雪ID:thisif
https://bbs.kanxue.com/user-home-878559.htm
# 往期推荐
2、在Windows平台使用VS2022的MSVC编译LLVM16
3、神挡杀神——揭开世界第一手游保护nProtect的神秘面纱
球分享
球点赞
球在看
原文始发于微信公众号(看雪学苑):The Finals SDK与某辅助的驱动注入