急!一个关于内存的问题

judsonwang 2003-10-19 11:34:28
请问我想用VB读008BD6A9这个内存地址内的明码内容,请问用VB应该怎么写代码,请各位大家给小弟一个例子好吗?
...全文
84 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
efei4000 2003-10-21
  • 打赏
  • 举报
回复
我感觉用copymemory是可以的,但是前提当然是它不能属于某个进程了!!
你这样试一下:
用createfile((long)&h008BD6A9————)
tanta 2003-10-21
  • 打赏
  • 举报
回复
怎样发表新的帖子啊,我怎么找不到呀,请告诉我!qq:278544343
subzero 2003-10-21
  • 打赏
  • 举报
回复
如果这个地址是绝对地址哪就可以直接copymemory
wingsoft 2003-10-21
  • 打赏
  • 举报
回复
9X时的时候程序共享空间copymemory可以.
NT/2000下则不行.
先得知道008BD6A9这个地址是在哪个领空的,由哪个程序占有.然后就可以openprocess打开它.再用readprocessmemory取得这个地址的内容
rainstormmaster 2003-10-20
  • 打赏
  • 举报
回复
copymemory strptr(a),&h008BD6A9,字串长度
judsonwang 2003-10-20
  • 打赏
  • 举报
回复
谢谢两位大哥,可是我还是没用成功啊,我的意思是说如地址008BD6A9这个内存地址里有wwwaaa这样的一个明码字符串,我用VB怎么样才可以读得出来呢?
subzero 2003-10-20
  • 打赏
  • 举报
回复
copymemory varptr(a),&h008BD6A9,4
subzero 2003-10-20
  • 打赏
  • 举报
回复
如果是绝对地址,且读一个long数则
dim a as long

copymemory varptr(l),&h008BD6A9,4

如果是进程内地址,则要知道该进程的handle,然后openprocess
readprocessmemeory
后八十生人 2003-10-19
  • 打赏
  • 举报
回复
用vb中的汇编功能也许可以,不过我不会汇编语言,所以帮不了你了。但给你一个例子,vb中汇编读取CPU ID的:

工程文件分为一个form1.frm 和一个模块module1.bas

----------------------form1.frm的源文件---------------------

VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 1965
ClientLeft = 60
ClientTop = 345
ClientWidth = 3105
LinkTopic = "Form1"
ScaleHeight = 1965
ScaleWidth = 3105
StartUpPosition = 2 'Bildschirmmitte
Begin VB.CommandButton Command1
Caption = "Get CPU Name"
Height = 495
Left = 840
TabIndex = 0
Top = 315
Width = 1425
End
Begin VB.Label Label2
Alignment = 2 'Zentriert
AutoSize = -1 'True
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 240
Left = 1515
TabIndex = 2
Top = 1065
Width = 60
End
Begin VB.Label Label1
Alignment = 2 'Zentriert
AutoSize = -1 'True
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 1515
TabIndex = 1
Top = 1350
Width = 75
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)

Label1 = ""
Label2 = ""

End Sub

Private Sub Command1_Click()

Label1 = GetCpuName() & " CPU"
Label2 = "You have a" & IIf(InStr("AEIOU", Left$(Label1, 1)), "n", "")

End Sub
------------------------------end---------------------------------





下面是modu1e.bas的源代码

----------------------module1.bas的源文件--------------------------
Option Explicit
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Private x As Long

Public Function GetCpuName() As String

Dim MachineCode(0 To 35) As Byte
Dim VarAddr As Long
Dim FunctAddr As Long
Dim EAX As Long
Dim CPUName(1 To 12) As Byte


MachineCode(0) = &H55
MachineCode(1) = &H8B
MachineCode(2) = &HEC

MachineCode(3) = &H57

MachineCode(4) = &H52

MachineCode(5) = &H51

MachineCode(6) = &H53

MachineCode(7) = &H8B
MachineCode(8) = &H45
MachineCode(9) = &H8

MachineCode(10) = &HF
MachineCode(11) = &HA2

MachineCode(12) = &H8B
MachineCode(13) = &H7D
MachineCode(14) = &HC

MachineCode(15) = &H89
MachineCode(16) = &H1F

MachineCode(17) = &H8B
MachineCode(18) = &H7D
MachineCode(19) = &H10

MachineCode(20) = &H89
MachineCode(21) = &HF

MachineCode(22) = &H8B
MachineCode(23) = &H7D
MachineCode(24) = &H14

MachineCode(25) = &H89
MachineCode(26) = &H17

MachineCode(27) = &H58

MachineCode(28) = &H59

MachineCode(29) = &H5A

MachineCode(30) = &H55

MachineCode(31) = &HC9

MachineCode(32) = &HC2
MachineCode(33) = &H10
MachineCode(34) = &H0

EAX = 0


VarAddr = VarPtr(MachineCode(0))

FunctAddr = GetAddress(AddressOf Dummy)

CopyMemory ByVal FunctAddr, ByVal VarAddr, 35


On Error Resume Next
CallWindowProc FunctAddr, EAX, VarPtr(CPUName(1)), VarPtr(CPUName(9)), VarPtr(CPUName(5))


On Error GoTo 0

GetCpuName = StrConv(CPUName(), vbUnicode)

End Function

Private Function GetAddress(Address As Long) As Long

GetAddress = Address

End Function

Private Sub Dummy()



x = 0
x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
x = 8
x = 9
x = 10
x = 0
x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
x = 8
x = 9
x = 10

End Sub

1,485

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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