网站建设资讯

NEWS

网站建设资讯

差异分析定位Ring3保护模块-创新互联

差异分析定位Ring 3保护模块

成都创新互联长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为嵩县企业提供专业的成都做网站、网站设计,嵩县网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

由于保护模块通常会Hook操作系统的原生DLL接口来进行保护,所以可以采用差异比较原生DLL文件和加载到内存中的原生DLL直接的差别来定位Ring 3模块。

在分析的过程中,为了防止被Ring 3保护模块发现,暂时可以先把除了自己线程外的其他线程暂停,如图8-14所示。

差异分析定位Ring 3保护模块

8-14  悬挂除自己线程外的其他线程

从图8-14中可以看出,除自己线程外,该游戏有58个线程,可以通过SuspendThread()函数悬挂这些线程以便后续的分析(GS的命令就是ste序号)。

下面,我们再对3个常用原生DLL——ntdll.dllkernel32.dlluser32.dll进行文件和内存的比较,如图8-15所示。

差异分析定位Ring 3保护模块

图8-15  差异分析原生DLL的变化

从图8-15中可以看出,ntdll.dll3处地址发生了变化,分别是0x7c9212300x7c92DEB60x7c97077B。下面让我们看看这3处地址目前的指令是什么,如图8-16所示。

差异分析定位Ring 3保护模块

图8-16  两处地址jmp指令

在图8-16中,有一处jmp指令是跳入地址0x45320F0。让我们看看它属于哪个模块,如图8-17所示。

差异分析定位Ring 3保护模块

图8-17  模块节信息

从图8-17的地址区间来看,是包含0x45320F0的,所以,在ntdll.dll中地址0x7c92deb6会跳入X.dll模块。到目前为止,我们基本可以判断ring 3下的游戏保护模块是X.dll

为了能更准确地判断X.dll是否是真的保护模块,下面让我们看看ntdll.dll3处发生变化的地址在原生ntdll.dll中的作用。

可以用IDAntdll.dll进行分析,然后定位地址0x7c9212300x7c92DEB60x7c97077B

如图8-18所示,原来此处地址是DbgBreakPoint函数。这个函数是供调试器下软件断点用的,而在游戏中却被改成了ret指令,这样做能起到防止下软件断点的作用。

差异分析定位Ring 3保护模块

图8-18  0x7c921230地址所处函数

如图8-19所示,0x7c97077B地址是属于DbgUiRemoteBreakin函数的,这个函数的详细介绍可以参见张银奎老师的《软件调试》一书的第10.6.4节。这里还是简单说明一下这个函数的作用,以便读者能了解。

差异分析定位Ring 3保护模块

图8-19  0x7c97077B地址所处函数

DbgUiRemoteBreakin是ntdll提供的用于在目标进程中创建远线程下软件断点的函数,其伪代码如下。

DWORD WINAPI DbgUiRemoteBreakin( LPVOID lpParameter)

{

  __try

{

      if(NtCurrentPeb->BeingDebugged)

        DbgBreakPoint();

}

__except(EXCEPTION_EXECUTE_HANDLER)

{

      Return 1;

}

RtlExitUserThread(0);

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:差异分析定位Ring3保护模块-创新互联
转载注明:http://njwzjz.com/article/cedcso.html