項(xiàng)目中常用的D3D黑屏優(yōu)化講解和源碼分享,DX系列的游戲都可以用
? ? 諸多工作室在項(xiàng)目測(cè)試功能穩(wěn)定后,為了更高效率的 榨干電腦性能 盡可能的多開會(huì)選擇將畫面黑屏,零渲染??!今天我們來拆解分析實(shí)現(xiàn)原理和方案
? 大部分游戲畫面渲染基本用的都是DX系列 除了DX9 ?現(xiàn)在很多游戲也用到了DX11 他們版本有差異 在逆向程序員眼里區(qū)別不大。
????通過OD就可以查看游戲加載 了哪些模塊,很多游戲都有加載d3d9.dll或者d3d11.dll 這也說明了 他們?cè)谡蜷_發(fā)過程中用到了 D3D進(jìn)行了渲染。所以 也就可以在這些模塊 里HOOK 劫持修改他的渲染函數(shù) 在他的最后一步直接給他渲染成純黑 從而實(shí)現(xiàn)黑屏優(yōu)化的效果
渲染過程可以大概分為
BeginScene開始渲染
EndScene結(jié)束渲染
Present顯示后置緩沖的動(dòng)畫
當(dāng)然 這個(gè)過程其實(shí)可以給大家每個(gè)函數(shù)細(xì)節(jié)分析。這個(gè)就放到咱們的課程視頻里面了。重點(diǎn)是我們?nèi)OOK?Present這個(gè)函數(shù)
Present函數(shù)會(huì)最終等待所有繪制命令結(jié)束并將結(jié)果從back buffer拷貝到front buffer。渲染到游戲窗口

技術(shù)難度也不高 無非就是要定位到這個(gè)虛函數(shù) 然后HOOK一個(gè)新的函數(shù)替換他 并且在執(zhí)行完Clear函數(shù)在執(zhí)行原來的Present函數(shù)。完整的代碼就在公眾號(hào)里面輸入 黑屏優(yōu)化 獲取把
效果如下

微塵網(wǎng)絡(luò)安全
專注分享網(wǎng)絡(luò)安全 x64 c++ 逆向 反匯編 反調(diào)試 HOOK 注入 封包 內(nèi)存等技術(shù)
公眾號(hào)