第八章:定位游戏保护模块
GameSpider
kernel Detective
1.定位ring0驱动级保护模块可以用KD比较游戏启动前后差异。
2.定位ring3可以hook低层接口再栈回塑。(游戏可以自加载同一模块的另一份来用,此时hook无效)
3.保护模块可能hook系统原生dll接口来保护,此时可以比较原生dll文件与加载到内存的映像来定位哪些被HOOK。
为防止被保护模块检测,在分析时可以把除当前线程所有线程挂起。
GameSpider下 cmf ntdll.dll可查看PE文件与映像文件的差异
ntdll.dll中的DbgBreakPoint,DbgUiRemoteBreakin,ZwProtectVirtualMemory常被ret,转移,Hook.分别阻止软中断,远程软中断,修改页面保护属性
GameSpider下ssl查询自加载模块
有三种方法定位其他模块的自加载情况:
1.比较所有模块的导出函数列表及导出函数名称是否一致。 比较精确,但游戏会对对关键内存块(代码与导出表信息)设置不允许读,只许执行。
2.比较所有模块的第一个导出函数名称与导出函数个数是否一致。
3.比较所有模块的加载名字和导出表中的名字是否一致。
保护方案:ring3保护方案和ring0保护方案
GameSpider
kernel Detective
1.定位ring0驱动级保护模块可以用KD比较游戏启动前后差异。
2.定位ring3可以hook低层接口再栈回塑。(游戏可以自加载同一模块的另一份来用,此时hook无效)
3.保护模块可能hook系统原生dll接口来保护,此时可以比较原生dll文件与加载到内存的映像来定位哪些被HOOK。
为防止被保护模块检测,在分析时可以把除当前线程所有线程挂起。
GameSpider下 cmf ntdll.dll可查看PE文件与映像文件的差异
ntdll.dll中的DbgBreakPoint,DbgUiRemoteBreakin,ZwProtectVirtualMemory常被ret,转移,Hook.分别阻止软中断,远程软中断,修改页面保护属性
GameSpider下ssl查询自加载模块
有三种方法定位其他模块的自加载情况:
1.比较所有模块的导出函数列表及导出函数名称是否一致。 比较精确,但游戏会对对关键内存块(代码与导出表信息)设置不允许读,只许执行。
2.比较所有模块的第一个导出函数名称与导出函数个数是否一致。
3.比较所有模块的加载名字和导出表中的名字是否一致。
保护方案:ring3保护方案和ring0保护方案