首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

小弟我想做个内存搜索的程序!大家提提思路

2012-01-18 
我想做个内存搜索的程序!大家提提思路用GetWindowThreadProcessI获取PID用OpenProcess获取进程句柄用ReadP

我想做个内存搜索的程序!大家提提思路
用GetWindowThreadProcessI获取PID
用OpenProcess获取进程句柄
用ReadProcessMemory来读取内容

怎么搜索,有没有好的算法?!

总不能把4G的空间挨着去比较吧?!

[解决办法]
想挨个找都难,里面很多地址块是有保护的(判断倒比较容易),没那么容易读,需要修改标志,不过好象得用DLL,要不就内嵌汇编,想过要写,后来放弃了...
[解决办法]
http://www.m5home.com/bbs/dispbbs.asp?boardID=10&ID=1344&page=1

N年前在网上找到的,发上去给你吧,希望对你有帮助
[解决办法]
UP
有结果没,有的话分享一下cs5@hotmail.com
[解决办法]
VirtualQuery
[解决办法]
GZ
[解决办法]
一个菜鸟问题:如何在内存里查找字符串内容?
//程序A
Dim l As String
Dim m As String
Private Sub Command1_Click()
Text3.Text = l
End Sub
Private Sub Form_Load()
l = "Hello中国 "
m = "Thank You! "
End Sub
//运行后在没点Command1之前在内存里Search ( "Hello中国 "转16H码) 48 65 6C 6C 6F D6D0 B9FA找不到.点了Command1之后才能到到,这是为什么?
[解决办法]
楼上已经有人说了,用VirtualQueryEx先看这块地方有没人用,这样就不用个个找4G了.

pAddr = 0
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, ProcessId)
If hProcess = 0 Then
MsgBox "Cannot open the Process "
Exit Sub
End If
ret = VirtualQueryEx(hProcess, pAddr, mi, miLen)
Do While (ret = miLen)
If mi.State = MEM_COMMIT Then
ReDim ReadData(mi.RegionSize)
ret = ReadProcessMemory(hProcess, mi.BaseAddress, ReadData(0), mi.RegionSize, dwRead)
If ret <> 0 And dwRead = mi.RegionSize Then
'do what you want.
End If
End If
pAddr = mi.BaseAddress + mi.RegionSize
ret = VirtualQueryEx(hProcess, pAddr, mi, miLen)
Loop

热点排行