标题: vb问题(3)
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-10 15:52 资料 个人空间 短消息 看全部作者 QQ
vb问题(3)

请看下面一段程序:

(声明API函数部分省略。。。)
Private Sub Command1_Click()
Dim i As Byte , Data As Byte , MyStr As String*1
For i=0 To 255
Data=i
WriteProcessMemory MyProcess, Address, Data, 1, 0&
ReadProcessMemory MyProcess, Address, MyStr, 1, 0&
Data=Asc(MyStr)
Debug.Print Data
Next i
End Sub

问题是,程序运行后,显示如下结果:

QUOTE:
0
1
2
3
4
5
中间省略……
124
125
126
127
0
0
0
中间省略……
0
0
0

现在我希望0~255的数据都能从内存读出来,如下:

QUOTE:
1
2
3
4
5
中间省略……
251
252
253
254
255

问应该如何修改程序???


顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-10 16:23 资料 个人空间 短消息 看全部作者 QQ
没用,这个是ASCII编码问题,用Integer就更不行了。


顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-11 14:30 资料 个人空间 短消息 看全部作者 QQ
现在问题是怎么解决,我要搞一个内存修改器
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-11 15:34 资料 个人空间 短消息 看全部作者 QQ


QUOTE:
原帖由 Maxwell 于 2008-6-11 14:58 发表


你用另外一个byte类型的变量传给ReadProcessMemory不行吗?

二进制这事儿VB确实不太擅长,有这功夫都可以学学其他语言了,当然仅供参考,当前还是先解决问题为主。

不行,好早就试过,会出错。
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-13 18:22 资料 个人空间 短消息 看全部作者 QQ
Sorry,VC++我不熟。
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-20 15:51 资料 个人空间 短消息 看全部作者 QQ
代码贴上来,大家看看。
顺便帮忙解决一下数据写不进内存的问题。

[ 本帖最后由 阿尔法孝直 于 2008-6-20 15:55 编辑 ]


附件: [简易内存读写器的代码] RWMemory.rar (2008-6-20 15:55, 2.86 K)
该附件被下载次数 117
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-20 16:55 资料 个人空间 短消息 看全部作者 QQ
第一个问题:

写内存的程序段:
  Private Sub Command3_Click()
   WriteProcessMemory nHandle, nAddress, CLng(Text2.Text), nByte, 0&
  End Sub
就红色这句,改个数执行之后再按“读取”,又变成原来的数。


第二个问题:

读内存的程序段:
  Private Sub Command1_Click()
    On Error Resume Next
    Dim nStr As String * 1
    Dim Result As Long
    Dim i As Byte
    For
i = 0 To nByte - 1
     ReadProcessMemory nHandle, nAddress + i, nStr, 1, 0&
     Result = Result + Asc(nStr) * 256 ^ i
    Next i
    Text2.Text = Trim(Str(Result))
  End Sub
就红色的这两句,第一句执行时,凡是任何单字节在128~255之间的数据,读出来都是0,即
  Asc(nStr)=0
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-23 17:46 资料 个人空间 短消息 看全部作者 QQ
第一个问题自己改了代码后,解决了。


现在剩下第二个问题:

读内存的程序段:
  Private Sub Command1_Click()
    On Error Resume Next
    Dim nStr As String * 1
    Dim Result As Long
    Dim i As Byte
    For
i = 0 To nByte - 1
     ReadProcessMemory nHandle, nAddress + i, nStr, 1, 0&
     Result = Result + Asc(nStr) * 256 ^ i
    Next i
    Text2.Text = Trim(Str(Result))
  End Sub
就红色的这两句,第一句执行时,凡是任何单字节在128~255之间的数据,读出来都是0,即
  Asc(nStr)=0


附件: RWMemory.rar (2008-6-23 17:46, 2.98 K)
该附件被下载次数 101
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 11:20 资料 个人空间 短消息 看全部作者 QQ
随便打开一个游戏,比如曹操传,找到曹操的HP地址,看看行不行
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 16:42 资料 个人空间 短消息 看全部作者 QQ
没用,还是一样。
不过前面的情况有错,应该是:

128~254还是0,
0~127或255正常读出。

[ 本帖最后由 阿尔法孝直 于 2008-6-24 16:51 编辑 ]
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 17:18 资料 个人空间 短消息 看全部作者 QQ


QUOTE:
原帖由 Maxwell 于 2008-6-24 16:54 发表
你在什么环境下测试的?如果255能读出来不可能128-254读不了
我测试的时候是读取自身进程的连续16个字节,其中有90,3,255,177,240。

在XP SP2下用VB6按F5直接运行程序

我写一个字节再读出来

确实不行

不过情况又有变化:变成0~128或255能读,129~254不能读
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 17:53 资料 个人空间 短消息 看全部作者 QQ
金山游侠V检验的结果:
129~254能写进去,不过用金山游侠V读出来是0
内存数据是129~254,读出来是0
0~128或255读写都正常。
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 18:02 资料 个人空间 短消息 看全部作者 QQ


QUOTE:
原帖由 Maxwell 于 2008-6-24 17:59 发表
金山游侠读出来是0怎么知道是写进去了?

执行后,数据由非0变为0,说明写进去了。
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 18:22 资料 个人空间 短消息 看全部作者 QQ
不会。因为我用0~128或255时没出现这种问题,且换了其他程序也是一样。
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 21:43 资料 个人空间 短消息 看全部作者 QQ
我试过,在0~128或255完全正常,没有任何问题
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-24 22:29 资料 个人空间 短消息 看全部作者 QQ
记事本MS是只读进程,写进去什么,读出来都是原来的值。
不过可完全访问的进程都是0~128或255读写正常。
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2008-6-25 10:40 资料 个人空间 短消息 看全部作者 QQ
这是我用金山游侠读取“记事本”进程十六进制0x1000040~0x100008F(十进制16777280~16777359)连续80个字节的结果(十六进制
红色为0x81~0xFE(十进制129~254)
0E
1F
BA
0E
00
B4
09
CD
21
B8
01
4C
CD
21
54
68
69
73
20
70
72
6F
67
72
61
6D
20
63
61
6E
6E
6F
74
20
62
65
20
72
75
6E
20
69
6E
20
44
4F
53
20
6D
6F
64
65
2E
0D
0D
0A
24
00
00
00
00
00
00
00
EC
85
5B
A1
A8
E4
35
F2
A8
E4
35
F2
A8
E4
35
F2

这是我用内存读写器读取“记事本”进程十进制16777280~16777359(十六进制0x1000040~0x100008F)连续80个字节的结果(十进制
14
31
0
14
0
0
9
0
33
0
1
76
0
33
84
104
105
115
32
112
114
111
103
114
97
109
32
99
97
110
110
111
116
32
98
101
32
114
117
110
32
105
110
32
68
79
83
32
109
111
100
101
46
13
13
10
36
0
0
0
0
0
0
0
0
0
91
0
0
0
53
0
0
0
53
0
0
0
53
0
顶部

正在浏览此帖的会员 - 共 2 人在线




当前时区 GMT+8, 现在时间是 2024-10-3 04:34
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.018734 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP