关于某款内鬼游戏基地址随机化的解决办法。

  前言:最近steam上的among us非常火爆,同时通过搜索也能了解到,这款游戏的外挂已经泛滥。

因此本人决定对该款游戏进行研究,在找到基地址后试图通过编程实现外挂功能,也因此遇到诸多技术问题,特写该文章记录解决方案。

1.通过ce附加进程,利用单精度查到某个数值的地址,然后查找是什么改写了这个地址,并在游戏中改写这个数值。

2.查找到该地址 0x08D4A108 该地址便是一级指针,记录偏移量。

3.开启新的扫描,类型为4字节 16进制,搜索0x08D4A108

4.查到地址后,使用找出是什么访问了这个地址后,在游戏中修改数据,找到了地址0x08D44E60 记录偏移量

5.重复第3和第4步,最终找到绿色的基地址0x07e48910。

本以为大功已告成,但是本人发现,每次启动游戏的基地址都不同,因为要制作外挂的话不能使用硬编码。
6.通过在网上搜索办法,以及测试了解到,该基地址处于某个dll模块中,并且与该dll模块的基地址的偏移是固定的。

如图所示0x069e0000就是该模块的基地址,做减法获得偏移量 0x07e48910-0x069e000=0x001468910

7.开始制作外挂,这里只给创建模块快照的代码,用于查找dll基地址。

HANDLE dllModulesnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32 = { sizeof(MODULEENTRY32) };
dllModulesnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, Pid);
if (!Module32First(dllModulesnap, &me32)) {
	CloseHandle(dllModulesnap);
	return ;
}
do
{
	if (!::strcmp(me32.szModule,"GameAssembly.dll"))
	{
		baseaddr =(DWORD) me32.modBaseAddr;

		break;
	}
} while (Module32Next(dllModulesnap, &me32));
CloseHandle(dllModulesnap);

总结:该游戏框架较为简单,也不存在服务器和客户端的数据统一,通过内存挂就能实现大量功能。

posted @ 2020-11-01 10:00  不忘初心1996  阅读(643)  评论(0)    收藏  举报