问个C# 读出内存地址后,这么显示游戏怪物名字的问题

wqq370063 2010-06-15 07:59:04
[[[[[[5f6e20]+5fb5c]+4]+0..4 256]+24]+0]
使用遍历工具后,的到如下图:


我想用C#把遍历工具的到的名字
在C#中显示出来,代码如下:

private void 遍历怪物_Tick(object sender, EventArgs e)
{
打开进程();
listView1.BeginUpdate();
listView1.Items.Clear();
int 怪物数组最大=100;
string[] 怪物名字;
int 一级基址, 二级基址, 怪物名字基址, 三级基址, 四级基址,五级基址;
byte[] 怪物名字字集 = new byte[256];
byte[] 怪物名 = new byte[256];

openprocess = win32API.API.OpenProcess(win32API.API.OPEN_PROCESS_ALL | win32API.API.PROCESS_CREATE_THREAD | win32API.API.PROCESS_VM_WRITE, 0, pid);
win32API.API.ReadProcessMemory(openprocess, 0x5f6e20, out 一级基址, 4, 0);
win32API.API.ReadProcessMemory(openprocess, 一级基址 + 0x5fb5c, out 二级基址, 4, 0);
win32API.API.ReadProcessMemory(openprocess, 二级基址 + 4, out 三级基址, 4, 0);
for (int i = 0; i < 怪物数组最大; i++)
{

win32API.API.ReadProcessMemory(openprocess, 三级基址 + i * 4, out 四级基址, 4, 0);
if (四级基址 > 0)
{
win32API.API.ReadProcessMemory(openprocess, 四级基址 + 0x24, out 五级基址, 4, 0);
win32API.API.ReadProcessMemory(openprocess, 五级基址 + 0x0, out 怪物名字基址, 4, 0);
win32API.API.ReadProcessMemory(openprocess, 怪物名字基址, 怪物名, 32, 0);

string _DataText = System.Text.Encoding.Default.GetString(怪物名);//我感觉是这句转换出了问题但是我不知道要这么转,查MSDN越查越糊涂。。。
ListViewItem listItem = new ListViewItem(_DataText);

listView1.Items.Add(listItem);



}
}
listView1.EndUpdate();
win32API.API.CloseHandle(openprocess);
}


上面运行结果是listView1显示是空白。。。

希望那位大哥帮我看看,帮小弟一把,谢谢

我感觉这个应该是要转变成ascii的,但是我不会转
加入在转成 浮点等等要这么转?
...全文
228 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqq370063 2010-06-15
  • 打赏
  • 举报
回复
大哥有Q吗?帮我看5分钟就好。。。我不知道这么搞了
捷哥1999 2010-06-15
  • 打赏
  • 举报
回复
里面的数据编码时什么格式的?
System.Text.Encoding.Default.GetString(怪物名)得到的是什么内容,贴出来

你的图看不到!
wqq370063 2010-06-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 computerfox 的回复:]
你要确认string _DataText读取的是否正确,也就是说string _DataText是否读取了怪物的名称,然后添加到列表框不成功?
[/Quote]

大哥我不知道你有没看到我最上面的图,遍历工具中ascii中可以显示出名字了。
string _DataText转换是我失败的语句,估计是转换错误或者什么的,我不知道这个要这么转换
捷哥1999 2010-06-15
  • 打赏
  • 举报
回复
抱歉回错帖子了!
捷哥1999 2010-06-15
  • 打赏
  • 举报
回复
你要确认string _DataText读取的是否正确,也就是说string _DataText是否读取了怪物的名称,然后添加到列表框不成功?
上海程序员3 2010-06-15
  • 打赏
  • 举报
回复
System.Text.Encoding.ASCII.GetString(怪物名)
wqq370063 2010-06-15
  • 打赏
  • 举报
回复
上面问题解决了。。
不过运行好程序,会出现这样的错误:
错误 4 “ws.Form1”不包含“listView1_SelectedIndexChanged”的定义,并且找不到可接受类型为“ws.Form1”的第一个参数的扩展方法“listView1_SelectedIndexChanged”(是否缺少 using 指令或程序集引用?) D:\菜鸟起步\ws\ws\ws\Form1.Designer.cs 47 81 ws


要这么解决啊?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧