我的情況是:注入一個dx程式 hook Present進行在左上角畫一個形狀 這里在網上拉了一個demo 發現顏色是黑色的 無解了好久
代碼如下:
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE) //FVF靈活頂點格式
LPDIRECT3DVERTEXBUFFER9 g_pVertexBuffer = NULL;
void DrawRandom(LPDIRECT3DDEVICE9 pD3dDevice)
{
if (!g_pVertexBuffer)
{
pD3dDevice->CreateVertexBuffer(6 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVertexBuffer, NULL);
}
PVOID pVertices = NULL;
CUSTOMVERTEX vertices[] =
{
//采用rand函式,給頂點以隨機的顏色和位置
{ 300.0f, 100.0f, 0.0f, 1.0f, D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256), },
{ 500.0f, 100.0f, 0.0f, 1.0f, D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256), },
{ 300.0f, 300.0f, 0.0f, 1.0f, D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256), },
{ 300.0f, 300.0f, 0.0f, 1.0f, D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256), },
{ (float)(800.0*rand() / (RAND_MAX + 1.0)) , (float)(600.0*rand() / (RAND_MAX + 1.0)) , 0.0f, 1.0f, D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256), },
{ (float)(800.0*rand() / (RAND_MAX + 1.0)) , (float)(600.0*rand() / (RAND_MAX + 1.0)) , 0.0f, 1.0f, D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256), }
};
g_pVertexBuffer->Lock(0, sizeof(vertices), (void**)&pVertices, 0);
memcpy(pVertices, vertices, sizeof(vertices));
g_pVertexBuffer->Unlock();
pD3dDevice->BeginScene();
pD3dDevice->SetStreamSource(0, g_pVertexBuffer, 0, sizeof(CUSTOMVERTEX));
pD3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
pD3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
pD3dDevice->EndScene();
}
實際得到的顏色并不是隨機 而是黑色 但是當我點擊那個程式的部分東西的時候 顏色會變成正常
ps:原始碼是在淺墨老師的blog上提下來的 結果就是顏色無法正常...很郁悶...
uj5u.com熱心網友回復:
這里說一下 2個三角形都是正常畫出來了的 只是顏色一直是黑色 只有在TargetDx程式渲染某些東西的時候顏色才會正常...這個是注入之后 由于測驗途中ret了好幾個函式 所以背景也黑了 三角形畫了 只是一直是黑色的:

這個是TargetDx程式渲染了東西的時候的三角形:

Ps:不要糾結三角形的數量 這只是我在逆向物件dx程式的時候直接ret了某些函式...但是然并卵
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62839.html
標籤:其它游戲引擎
