2011-09-30 43 views
5

正如标题所说,我试图从我在Cheat Engine的指针扫描中找到的地址读取。但唯一的问题是我必须使用的唯一指针只是指针地址+偏移量。我使用的是Visual Studio 2010中的C#.Net 4.0。我想我记得以前看过这方面的内容,但我没有多想,因为它当时并不适用于我。如何从类似“进程名称”+地址的指针读取数据?

有关获取进程或模块ID并将其添加到指针地址,然后添加偏移量和从那里读取?但我不记得命令来获得进程ID或模块ID:/

这也是我正在使用的级别5指针,我只使用级别1或2指针,但我猜测它大致相同。只要从指针中读取地址,直到我得到要写入的基地址。

如果它帮助我的指针看起来是这样的: “ProcessName.exe” + 003E6D98

“如果你说为什么在世界上,你需要从.NET指针发挥它可能会帮助” - 约翰·桑德斯

我正在为我的一款游戏制作教练。我之前做过的只是没有使用这种类型的指针,我忘记了如何处理这种类型的地址。我想我必须得到模块的ID,但我已经忘记了。实际上,我对内存和指针非常满意,我通常只有平均地址,而且旁边没有进程名称。

+3

OpenProcess plus ReadProcessMemory –

+0

如果你说世界上为什么需要使用来自.NET的指针来玩,可能会有帮助 –

+0

您可以通过循环运行来查找进程名称,从而创建对进程的引用程式。 http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx –

回答

0

OP中回答过的问题 - 把为CW答案

string sProcessName = "MyProcessName.exe"; 
Process[] MyProcesses = Process.GetProcessesByName(sProcessName); 
IntPtr hProcModuleBA = MyProcesses[0].MainModule.BaseAddress; 
IntPtr PointerAddr = new IntPtr(MyPointer.ToInt32() + BaseAddress.ToInt32()); 

这将通过您的流程搜索sProcessName,将其添加到阵列 'MyProcesses'。我选择列表中的第一个来获取BaseAddress。它是40000 :)