真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

差異分析定位Ring3保護模塊

差異分析定位Ring 3保護模塊

創(chuàng)新互聯(lián)公司長期為千余家客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為桃江企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站設(shè)計,桃江網(wǎng)站改版等技術(shù)服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

由于保護模塊通常會Hook操作系統(tǒng)的原生DLL接口來進行保護,所以可以采用差異比較原生DLL文件和加載到內(nèi)存中的原生DLL直接的差別來定位Ring 3模塊。

在分析的過程中,為了防止被Ring 3保護模塊發(fā)現(xiàn),暫時可以先把除了自己線程外的其他線程暫停,如圖8-14所示。

 

差異分析定位Ring 3保護模塊

8-14  懸掛除自己線程外的其他線程

從圖8-14中可以看出,除自己線程外,該游戲有58個線程,可以通過SuspendThread()函數(shù)懸掛這些線程以便后續(xù)的分析(GS的命令就是ste序號)。

下面,我們再對3個常用原生DLL——ntdll.dll、kernel32.dlluser32.dll進行文件和內(nèi)存的比較,如圖8-15所示。

差異分析定位Ring 3保護模塊

 

圖8-15  差異分析原生DLL的變化

從圖8-15中可以看出,ntdll.dll3處地址發(fā)生了變化,分別是0x7c9212300x7c92DEB60x7c97077B。下面讓我們看看這3處地址目前的指令是什么,如圖8-16所示。

差異分析定位Ring 3保護模塊

 

圖8-16  兩處地址jmp指令

在圖8-16中,有一處jmp指令是跳入地址0x45320F0。讓我們看看它屬于哪個模塊,如圖8-17所示。

差異分析定位Ring 3保護模塊

 

圖8-17  模塊節(jié)信息

從圖8-17的地址區(qū)間來看,是包含0x45320F0的,所以,在ntdll.dll中地址0x7c92deb6會跳入X.dll模塊。到目前為止,我們基本可以判斷ring 3下的游戲保護模塊是X.dll。

為了能更準確地判斷X.dll是否是真的保護模塊,下面讓我們看看ntdll.dll3處發(fā)生變化的地址在原生ntdll.dll中的作用。

可以用IDAntdll.dll進行分析,然后定位地址0x7c921230、0x7c92DEB60x7c97077B。

如圖8-18所示,原來此處地址是DbgBreakPoint函數(shù)。這個函數(shù)是供調(diào)試器下軟件斷點用的,而在游戲中卻被改成了ret指令,這樣做能起到防止下軟件斷點的作用。

差異分析定位Ring 3保護模塊

 

圖8-18  0x7c921230地址所處函數(shù)

如圖8-19所示,0x7c97077B地址是屬于DbgUiRemoteBreakin函數(shù)的,這個函數(shù)的詳細介紹可以參見張銀奎老師的《軟件調(diào)試》一書的第10.6.4節(jié)。這里還是簡單說明一下這個函數(shù)的作用,以便讀者能了解。

差異分析定位Ring 3保護模塊

 

圖8-19  0x7c97077B地址所處函數(shù)

DbgUiRemoteBreakin是ntdll提供的用于在目標進程中創(chuàng)建遠線程下軟件斷點的函數(shù),其偽代碼如下。

DWORD WINAPI DbgUiRemoteBreakin( LPVOID lpParameter)

{

  __try

{

      if(NtCurrentPeb->BeingDebugged)

        DbgBreakPoint();

}

__except(EXCEPTION_EXECUTE_HANDLER)

{

      Return 1;

}

RtlExitUserThread(0);

}

當調(diào)試器通過CreateRemoteThread函數(shù)在目標程序中創(chuàng)建DbgUiRemoteBreakin線程的時候,從代碼上來看是下了int 3軟件斷點。由于在被調(diào)試狀態(tài),所以調(diào)試器可以捕獲這個異常。如果目標程序沒有被調(diào)試的話,DbgUiRemoteBreakin中的S.H.E顯然可以捕獲并處理它。

所以,游戲保護系統(tǒng)在對DbgUiRemoteBreakin進行jmp操作,很明顯是為了防止被調(diào)試。下面再看看保護系統(tǒng)從DbgUiRemoteBreakin跳到了哪里。

如圖8-20所示是保護系統(tǒng)從DbgUiRemoteBreakin跳入執(zhí)行的函數(shù),很明顯,LdrShutdownProcess是一個關(guān)閉進程的函數(shù)。

差異分析定位Ring 3保護模塊

 

圖8-20  0x7C943DEF地址所處函數(shù)

下面再讓我們看看地址0x7c92DEB6處的含義。

如圖8-21所示,保護模塊對ZwProtectVirtualMemory函數(shù)進行了Hook,以防止虛擬內(nèi)存所在頁面的保護屬性被改變。


差異分析定位Ring 3保護模塊

圖8-21  0x7c92DEB6地址所處函數(shù)

關(guān)于更多分析游戲保護方案的思路見<<游戲外掛***藝術(shù)>>8章。

 

差異分析定位Ring 3保護模塊

作者簡介

徐勝,2009年于電子科技大學獲得計算機科學與工程碩士學位,現(xiàn)就職于阿里巴巴,從事移動安全的研究和移動產(chǎn)品的研發(fā),主要研究方向包括:Windows平臺下的***、外掛、Rootkit、防火墻和二進制逆向分析,Android和iOS客戶端軟件安全,以及Web和WAP安全。

本文節(jié)選自《游戲外掛***藝術(shù)》一書。徐勝著,由電子工業(yè)出版社出版。

 

 

 


新聞標題:差異分析定位Ring3保護模塊
網(wǎng)頁鏈接:http://weahome.cn/article/ppjcpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部