【发布时间】:2018-08-19 21:38:02
【问题描述】:
我目前正在尝试从内存地址中读取,然后在 Web 浏览器中打开其内容(其内容始终是 url。) 我目前正在尝试这样做:
public static void Main(string[] args)
{
Process[] pname = Process.GetProcessesByName("t6mp");
if (pname.Length == 0)
{
Console.WriteLine("Game not found. Please run your game then restart this program.");
Console.ReadLine();
}
else
{
void ReadProcessMemory(object t6mp, int v1, byte[] url, int v2, ref int read)
{
}
Console.WriteLine("Game found. Please go to the page where you can start a demo, then press enter to continue.");
Console.ReadLine();
Console.WriteLine("Please press enter to export");
Console.ReadLine();
var buffer = new byte[1];
var sb = new StringBuilder();
var handle = Process.GetProcessesByName("t6mp")[0];
int _bytesused = 200;
for (var i = 0; i < _bytesused; i++)
{
ReadProcessMemory(handle, 0x2BDA932 + i, buffer, buffer.Length, ref _bytesused);
if (buffer[0] != 0)
{
sb.Append(Encoding.ASCII.GetString(buffer));
Process.Start(sb.ToString());
}
else
{
Console.WriteLine("Error has occured, please try again. Press enter to close program");
Console.ReadLine();
break;
}
}
}
}
它正确识别进程何时打开,并且我确定地址存在(我尝试过 0x2BDA932 和 0x02BDA932)但是,它总是显示错误消息,由于某种原因,if (buffer[0] != 0) 总是错误的。当我删除 if / else 并让它直接转到sb.Append(Encoding.ASCII.GetString(buffer));
Process.Start(sb.ToString());
它只是崩溃。理想情况下,它会在我的浏览器中打开地址的内容,因为它是一个 url。有什么想法吗?
【问题讨论】:
-
你的
ReadProcessMemory函数是空的,你期望什么? -
你可能打算这样声明:stackoverflow.com/a/34467499/869621
标签: c#