netsmu 发表于 2010-12-5 00:31:24

50RMB求购一个内存搜索的源码

搜索指定进程内存中是否含有某个字符串,比如搜索QQ进程,搜索内容为www.****************.com
把QQ进程里包含www.***.com的网址都搜索出来。
可以先看编译好的EXE程序,满意后给钱拿源码。
下面提供 搜索一个内存地址的 源码, 只要做个循环搜索指定进程的内存就可以了。
内存开始位置:StartAddress= $10000结束位置   EndAddress = $7FFEFFFF$Handle = _MemoryOpen(4024);4024 为进程ID号
$MEM = _MemoryRead(0x040BA7F0, $Handle,"byte");0x040BA7F0 为要搜索的地址, 这里怎么改成搜索整个进程的内存呢?然后能否做个循环,如果搜索到www则输出到文本中呢???
$bbb = BinaryToString($MEM)
_MemoryClose($Handle)
MsgBox(0,0,$bbb)
Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1)
      If Not ProcessExists($iv_Pid) Then
                SetError(1)
                Return 0
      EndIf
      Local $ah_Handle =
      If @error Then
                SetError(2)
                Return 0
      EndIf
      Local $av_OpenProcess = DllCall($ah_Handle, 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $if_InheritHandle, 'int', $iv_Pid)
      If @error Then
                DllClose($ah_Handle)
                SetError(3)
                Return 0
      EndIf
      $ah_Handle = $av_OpenProcess
      Return $ah_Handle
EndFunc   ;==>_MemoryOpen
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
      If Not IsArray($ah_Handle) Then
                SetError(1)
                Return 0
      EndIf
      Local $v_Buffer = DllStructCreate($sv_Type)
      If @error Then
                SetError(@error + 1)
                Return 0
      EndIf
      DllCall($ah_Handle, 'int', 'ReadProcessMemory', 'int', $ah_Handle, 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
      If Not @error Then
                Local $v_Value = DllStructGetData($v_Buffer, 1)
                Return $v_Value
      Else
                SetError(6)
                Return 0
      EndIf
EndFunc   ;==>_MemoryRead
Func _MemoryClose($ah_Handle)
      If Not IsArray($ah_Handle) Then
                SetError(1)
                Return 0
      EndIf
      DllCall($ah_Handle, 'int', 'CloseHandle', 'int', $ah_Handle)
      If Not @error Then
                DllClose($ah_Handle)
                Return 1
      Else
                DllClose($ah_Handle)
                SetError(2)
                Return 0
      EndIf
EndFunc   ;==>_MemoryClose

xingkekeli 发表于 2010-12-5 00:31:25

本帖最后由 xingkekeli 于 2010-12-30 19:04 编辑

我有一个写好的搜索的例子 不知道符合不符合你的要求 你加我QQ吧 188885008

补充一下: 我是写来搜索QQ进程 ClientKey 的 已经用了很长时间了
从 0x00100000 到 0x04FFFFFF 大概也就5-10秒

manlty 发表于 2010-12-5 15:36:57

本帖最后由 manlty 于 2010-12-5 16:42 编辑

我有这个程序,你给我充50到手机吧13671471937 ,不过如果按照每个地址都搜一下循环下去,大概要3万多小时才能搜完

netsmu 发表于 2010-12-5 17:27:48

怎么可能搜那么久呢。 我用ce搜也就3-4秒钟的事啊。 还有能否先看一下编译好的exe文件呢,如果可以用的话就直接交易了。

netsmu 发表于 2010-12-13 09:24:14

怎么没人知道吗?还是50太少啦。要是50太少了,100也可以啦。求高手帮忙,谢谢。

lanfengc 发表于 2010-12-30 19:20:36

调用的是API的VirtualQueryEx可以完成搜索。

netsmu 发表于 2011-1-15 09:46:15

已经完成,非常感谢 5 楼提供的代码,谢谢。

qhdpc 发表于 2011-1-25 17:57:15

虽然我不会,但我感觉50也太少了,怎么也的几百吧

steppe_w0lf 发表于 2011-1-28 09:48:10

不错嘛,就是有点太便宜了吧

steppe_w0lf 发表于 2011-1-28 09:48:41

还是支持你!!

处女 发表于 2011-3-4 03:48:38

50是有点少了

6862256 发表于 2011-3-4 21:36:57

强人一个~~~~~~~~~

6862256 发表于 2011-3-4 21:37:02

强人一个~~~~~~~~~

zouyingj 发表于 2011-4-7 09:37:04

高手就是高手呀

pk2910 发表于 2011-4-21 13:45:43

好奇啊。为什么一段段的源代码是怎么写来的呢?
页: [1] 2
查看完整版本: 50RMB求购一个内存搜索的源码