You can get the internal point to an objects data by calling dbGetObject(ObjNum) - it returns an sObject*.
The structures for the internal data are in '.../Dark Game SDK/Include/DBO Format/DBOData.h'.
In the sObject structure is an item 'ppFrameList', which is an array of sFrame structures (frames are the internal equivalent of limbs).
Each frame can have a mesh attached (pMesh).
Each mesh has a vertex buffer (pVertexData), and may have an index buffer (pIndices). You'll notice the pVertexData is a BYTE* - because the format varies depending on the value of dwFVF, the size of each vertex can vary.
The type of mesh it is is held in iPrimitiveType, and contains one of the following values:
typedef enum D3DPRIMITIVETYPE
{
D3DPT_POINTLIST = 1,
D3DPT_LINELIST = 2,
D3DPT_LINESTRIP = 3,
D3DPT_TRIANGLELIST = 4,
D3DPT_TRIANGLESTRIP = 5,
D3DPT_TRIANGLEFAN = 6,
} D3DPRIMITIVETYPE, *LPD3DPRIMITIVETYPE;
If you lock the vertexbuffer, make your changes to these structures are the limb level, then unlock the vertexbuffer, the D3D structures will be correctly updated so that you can see the effects.
// These functions do the locking/unlocking
void dbLockVertexDataForLimb ( int iID, int iLimbID, int iReplaceOrUpdate );
void dbLockVertexDataForLimb ( int iID, int iLimbID );
void dbUnlockVertexData ( void );
Hope that hasn't confused you too much, but you did ask