這裏是解決您的問題的一種可能的方法。請注意,該軟件需要是32位軟件!
第一步是獲得進程的基地址:
Process GameProcess = Process.GetProcessesByName("GameProcessName").FirstOrDefault();
IntPtr BaseAddress = GameProcess.MainModule.BaseAddress;
在此基礎上的地址,你能步驟通過像(示範將0x58的偏移量)
int ReadBytes;
IntPtr BasePlusOneAddress = IntPtr.Add(BaseAddress, 0x58);
IntPtr BasePlusOneValue = (IntPtr)BitConverter.ToInt32(MemoryHandler.ReadMemory(GameProcess, BasePlusOneAddress, 4, out ReadBytes), 0);
您的指針現在可以使用該值作爲指針了。
這就導致了一個簡單的功能就像
void IntPtr GetOffsetPointer(Process P, IntPtr BasePointer, Int32 Offset)
{
int ReadBytes;
IntPtr OffsetAddress = IntPtr.Add(BasePointer, Offset);
return (IntPtr)BitConverter.ToInt32(MemoryHandler.ReadMemory(P, OffsetAddress, 4, out ReadBytes), 0);
}
編輯:的MemoryHandler
只是包裝窗口的ReadProcessMemory function。這只是一個例子 - 所以你必須實現你自己的功能。一個很好的例子是Code Project。
你需要非常小心你在各種遊戲中對內存所做的事情,因爲他們中的很多人都有反作弊系統,當你篡改他們的內存時,系統就會被捕獲。 – Powerlord
「我不懂如何編程」和「我需要一個教程」不是問題;這是一個問答網站。你有一個*特定的問題嗎? –
是的,我的問題是我如何從內存中讀取一個浮點數,如果我有指針 – Ingmar05