一款类似data的游戏。全图视野分析。
(图片挂了Word 文档)
上次
这个游戏存在驱动保护,HOOK了OBJ钩子 。OD无法找到进程。CE无法附加进程。
菜鸟对过保护无力于是想到一个取巧办法。
由于驱动与R3的游戏进程并没有通信。
而且每次启动游戏都会执行-->判断驱动是否存在不存在则释放驱动到游戏主进程目录下-->加载驱动删除驱动文件。
驱动存在则不进行任何操作。
于是我把游戏主进程目录磁盘转换为NTFS格式,把游戏主进程目录权限设置为禁止写入。OK 驱动无法释放。 也就无法加载驱动了。。
不过我刚刚在虚拟机中登陆游戏发现现在没驱动了。(不知道为什么,本机有驱动加载。)
虚拟机XP 本机WIN7 64位
游戏有观战模式,可以实现全图显英雄 显野怪。 于是从这里入手。
在观战模式下搜索
视野基质 全选搜1 队伍1搜2 队伍2搜3 视野全开搜0 写入1
CE找到全图基质 观战模式下修改有效 退出观战模式 发现修改基质无效。
肯定有个判断的地方。
CE先找到读取视野基质的地方。
050DC049 - xor esi,esi
050DC04B - jmp app.gameInit+232F0
050DC04D - mov esi,[esi+18] ---------就是这里读取的上面的地址
050DC050 - or edi,FF
050DC053 - test esi,esi
于是打开分析利器OD
可以看到上面有两个比较。
第一个比较[esi+10],2
第二个比较[eax+138],esi
进入游戏 从段首下断开始分析,
发现在正常模式下为1 观战模式下为2
于是尝试修改为2 并且修改 [esi+18]为3 开图成功!!
但是却无法使用技能 无法购买物品 无法工具。。(游戏判断在观战模式 于是禁用了相关功能)
于是跟下面这个地址。
050DB090 83B8 38010000 0>cmp dword ptr ds:[eax+0x138],0x2
进入观战模式。发现
Eax+138为视角基质 分别是导播视角 个人视角 自由视角
不等于2则调到 读取视野基质的地方。。
修改eax+138为1
修改esi+18 为3
结果只能看到敌方。 应该还有判断 继续往下走
在这里判断esi=3 则把esi-2 赋值给eax 这个返回值
而esi=3是 :
全选搜1 队伍1搜2 队伍2搜3 视野全开搜0 写入1
队伍二 为敌方。 所以只能看到敌方。
分析:这个call功能:
判断是否为观战
判断视角
判断视野
返回阵营。
跟出返回:
比较了eax之后 不等于-1 进入 CALL 050c24b
这个call被VM了。 所以从
返回值入手
修改
lea eax,dword ptr ds:[esi-0x2]
lea eax,dword ptr ds:[esi-0x1]
至此找全图HOOK点成功。(此方法已和谐!! )
继续--------------------------------------硬干CRC
函数原型:
BOOL IsBadReadPtr (CONST VOID *lp,UINT_PTR ucb);
参数:
lp 表示要检查的内存指针
ucb 要检查的内存块的大小
返回:
如果调用进程有权限访问该内存,返回0
否则,返回非0
说明:
该函数检查调用进程是否有读取指定内存的内容的权限,微软提供的32位操作系统下的API
CRC检测是会调用这里判断是否有读取权限。
Hook这里判断是否为 修改代码段 是代码段返回-1 不是还原原始命令继续执行
下面这些是线程调用crc的代码
结束线程可以,但隔一段时间 游戏就重新 创建线程。
可以采用镜像法。 注意 CRC会检测本身。
过其中一个。。
都是如此。。。。。
app.gameInit+232D0 - 51 - push ecx
+-------------------------------
tqpcos.dll+F11D - 8B 1F - mov ebx,[edi]
062DF11B 8B06 mov eax,dword ptr ds:[esi] HOOK这里
062DF11D 8B1F mov ebx,dword ptr ds:[edi]-----
062DF11F 33C3 xor eax,ebx
062DF121 /75 09 jnz Xtqpcos.062DF12C 跳回点
+-------------------------------
tqpcos.dll+19E6E - 0FB6 02 - movzx eax,byte ptr [edx]
62E9E6E
062E9E6B 0355 FC add edx,dword ptr ss:[ebp-0x4] HOOK这里
062E9E6E 0FB602 movzx eax,byte ptr ds:[edx] ; 111111111111111111
062E9E71 3BC1 cmp eax,ecx
062E9E73 75 45 jnz Xtqpcos.062E9EBA 跳回点
+-------------------------------
tqpcos.dll+19EC0 - 0FB6 02 - movzx eax,byte ptr [edx]
062E9EBA 8B55 08 mov edx,dword ptr ss:[ebp+0x8]
062E9EBD 0355 FC add edx,dword ptr ss:[ebp-0x4] HOOK这里
062E9EC0 0FB602 movzx eax,byte ptr ds:[edx]
062E9EC3 8B4D 18 mov ecx,dword ptr ss:[ebp+0x18] 跳回点
062E9EC6 8B1481 mov edx,dword ptr ds:[ecx+eax*4]
jmp=035F0000
+-------------------------------
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课