Sé cómo importar y usar read/writeprocessmomory en C#. Estoy trabajando en el entrenador de juegos. Necesito tener acceso "directo" a otra memoria de proceso depositada en struct. Puedo usar memoria de proceso de lectura o memoria de proceso de escritura, pero eso llevaría mucho tiempo para implementar muchas estructuras.¿Cómo acceder a la estructura en la memoria de otro programa?
No es esta estructura en C++:
class CRenderer
{
public:
char unknown0[1692]; //0x0000
BYTE ID07D54FC8; //0x069C
BYTE drawObjects; //0x069D
BYTE drawDeferred; //0x069E
BYTE drawParticles; //0x069F
BYTE ID07E1CA70; //0x06A0
BYTE drawBundledMeshes; //0x06A1
BYTE drawStaticMeshes; //0x06A2
BYTE drawSkinnedMeshes; //0x06A3
BYTE drawRoads; //0x06A4
BYTE drawTerrain; //0x06A5
BYTE drawUnderGrowth; //0x06A6
BYTE drawOverGrowth; //0x06A7
BYTE drawNameTags; //0x06A8
BYTE drawTrees; //0x06A9
BYTE ID07E1CE70; //0x06AA
BYTE ID07E1CDF0; //0x06AB
BYTE DrawFPS; //0x06AC
BYTE ID07E1CEF0; //0x06AD
BYTE ID07E1C8F0; //0x06AE
BYTE ID07E1C870; //0x06AF
BYTE drawGraphs; //0x06B0
BYTE ID07D55048; //0x06B1
BYTE drawSkyDome; //0x06B2
BYTE drawSunFlare; //0x06B3
BYTE drawPostProduction; //0x06B4
BYTE ID07D550C8; //0x06B5
char unknown1718[6534]; //0x06B6
};//Size=0x203C(8252)
¿Cómo representar esa estructura en C#? ¿Cuál es la forma más fácil de achive algo como esto:
//C++
DWORD RendererBase = (DWORD)GetModuleHandle("RendDx9.dll"); //Gets the base address of RenDX9.dll
DWORD RendererOffset = RendererBase + 0x23D098; //Static address
CRenderer *cRenderer = *(CRenderer**)RendererOffset; //Points to the class using the static offset
cRenderer->drawSkyDome = 0; //No Sky
cRenderer->DrawFPS = 1; //Show FPS
En C# Quiero ser capaz de utilizar de esta manera:
cRenderer.drawSkyDome = 0; //No Sky
cRenderer.DrawFPS = 1; //Show FPS
Cómo utilizar otra memoria de proceso como struct en mi C# ¿solicitud?